mysql复制的工作原理及主从复制的实现

mysql的复制功能主要有3个步骤

主服务器将改变记录到二进制日志中,(这些记录叫做二进制日志事件)

从服务器将主服务器的二进制日志事件拷贝到它的中继日志中

从服务器重做中继日志中的事件。

该过程的第一部分就是主服务器记录二进制日志,在每个事务更新数据完成之前,master在二进制日志记录这些改变,mysql将事务串行的写入二进制日志,在事件写入二进制日志完成后,主服务器通知存储引擎提交事务,此后可接收从服务器的请求。

下一步就是从服务器将主服务的二进制日志拷贝到它自己的中继日志,首先,从服务器开始一个工作线程,即I/O线程,I/O线程在主服务器上打开一个普通的连接,然后开始在主节点上binlog dump process(二进制转存线程)。binlog dump process从主服务器的二进制日志中读取事件,如果已经跟上主服务器,它会睡眠并等待主服务器产生新的事件,I/O线程将这些事件写入中继日志中。

SQL从线程处理该过程的最后一步,SQL线程从中继日志中读取事件,并重放其中的事件而更新从服务的数据,使其与主服务中的数据一致,。只要该线程与I/O线程保持一致,中继日志通常会位于Os的缓存中,所以中继日志的开销很小。

mysql实现数据库的主从复制

环境准备:centos系统服务器2台,一台用户做mysql主服务器,一台用于做mysql从服务器,配置好yum源,防火墙关闭,各节点时钟服务同步,各节点之间可以通过主机名互相通信。

二:准备步骤 iptables –F && sentenforce清空防火墙策略,关闭selinux

分别启动两台服务器mysql服务,确保服务正常。

[[email protected] ~]# yum install -y mariadb
[[email protected] ~]# yum install -y mariadb-server
[[email protected] ~]# systemctl restart mariadb
[[email protected] ~]# iptables -F
[[email protected] ~]# getenforce

配置master主服务器

包括打开二进制文件,指定唯一的server ID

server-id  #配置server-id,让主服务器有唯一的ID号

log-bin=mysql-bin  #打开mysql日志,日志格式为二进制

skip-name-resolve #关闭名称解析(非必须)

[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server-id = 1
log-bin = master-log
skip_name_resolve = ON
保存退出
[[email protected] ~]# systemctl restart  mariadb

查看主服务器的状态

创建复制账号

在主服务器的数据库中建立一个备份账户,每个从服务器使用标准的mysql用户名和密码连接主服务器,进行复制操作的用户

MariaDB [(none)]> grant replication slave,replication client on *.* to 'slave'@'172.17.%.%' identified by '123456';

配置从服务器

对从服务器进行配置,打开中继日志,指定唯一的server ID,设置只读权限,在配置文件中加入如下值

server-id=2 #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin #打开Mysql日志,日志格式为二进制
read_only = 1 #设置只读权限
log_bin = mysql-bin #开启从服务器二进制日志
log_slave_updates = 1 #使得更新的数据写进二进制日志中

server-id=2
relay-log=mysql-relay-bin
read-only=1
log-bin=mysql-bin
log-slave-updates=1

然后重启服务

[[email protected] ~]# systemctl restart mariadb

启动从服务器复制线程,让从服务器连接主服务器,并开始重做主服务器

MariaDB [(none)]> change master to master_host='172.17.252.89',
    -> master_user='slave',
    -> master_password='123456',
    -> master_log_file='master-log.000006',
    -> master_log_pos=245;

然后在数据库中执行start slave; 启动复制线程

查看从服务器的状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show processlist \G查看当前复制状态

然后我们在主服务器上建一个数据库

然后在从服务器上就可以看到这个数据库,主从复制就实现成功了。

时间: 2024-11-06 02:55:36

mysql复制的工作原理及主从复制的实现的相关文章

MySQL语法执行工作原理

目录 [TOC] 一.MySQL语法执行工作原理 客户端请求由Nginx等负载均衡服务器转交给Tomcat,Tomcat从MySQL中捞取数据,如果请求的数据在MySQL缓存中,那么MySQL会将缓存中捞取到的数据返回给客户端,如果缓存中没有请求的数据,那么MySQL会通过解析器解析SQL语法是否有问题(用户权限问题),在SQL语法没有问题的情况下,将SQL转交给优化器,看SQL是否通过索引等来进行查询,再通过存储引擎在磁盘中捞取数据. 详细流程如下,对于IE-->TOMCAT-->MySQL

redis 复制 及其工作原理

在分布式系统中为解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求,redis使用复制功能来保证了高可用 建立复制 复制的redis节点分为主节点(master)和从节点(slave),主从对应是一对多的关系,配置方式有三种 1. 在配置文件中加入 slaveof {masterHost} {masterport} 随redis启动生效 2. 在redis-server启动命令后加入 --slaveof {masterHost} {masterPort} 生效 3

Mysql用户访问工作原理

掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路.接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图: 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的. 下面是关于上述部件的介绍: connectors 与其他编程语言中的sql 语句进行交互,如php.java等. Management Serveices & Utilities 系统管理和控制工具 Connection Pool (连接

mysql之mysql组件和工作原理

mysql组成: 连接管理器        负责监听在某个端口套接字上,并接受用户请求. 线程管理器:        负责给用户的请求生成新的线程,在请求完成后负责销毁进程或完成进程的重用. 用户模块:        验证用户是否有权限连接服务器.验证用户的身份. 命令分发模块:        根据查询的不同类型,和缓存模块交互,和日志模块交互.若缓存中没有则交给解析器处理,需要记录日志的交给日志模块. 解析器:        解析查询的法和词法,再次查询缓存,没有则生成解析树.若是SELECT

MySQL查询优化器工作原理解析

手册上查询优化器概述 查询优化器的任务是发现执行SQL查询的最佳方案.大多数查询优化器,包括MySQL的查询优化器,总或多或少地在所有可能的查询评估方案中搜索最佳方案.对于联接查询,MySQL优化器所调查的可能的方案数随查询中所引用的表的数目呈指数增长.对于小数量的表(典型小于7-10),这不是一个问题.然而,当提交的查询更大时,查询优化所花的时间会很容易地成为服务器性能的主要瓶颈. 查询优化的一个更加灵活的方法是允许用户控制优化器详尽地搜索最佳查询评估方案.一般思想是优化器调查的方案越少,它编

基于MySQL实现数据库的半同步主从复制

首先我们来了解一下数据库常遇到的问题: 第一就是性能上的问题 1.向上拓展(硬件方面) scale up 个体本身 容易达到极限 2.向外拓展 scale out 第二就是可用性的问题 1.数据库服务中断 2.误操作数据损坏 3.硬件故障 4.数据库升级测试遭遇bug 5.黑客攻击 基于以上这些问题就有了一个比较好的解决方案,那就是实现数据库的主从复制.MySQL主从复制技术可以提高服务器的性能.除此之外MySQL复制还可以解决以下几个问题: 1.数据分布 (Data distribution

mysql复制是怎么一回事

1,为什么需要mysql复制技术,有什么用?单台数据库服务器的能力总是有限的.根据专业人士的经验,一台8核心32G配置的服务器,承受50~200的并发连接请求,算是很好了.mysql复制是提升数据存储层面能力的一种方式. 2,怎么提升数据库性能? 那么提升数据库性能有两个途径:1,提升硬件配置.2,增加服务器数量. 对于1,性价比很低.这个属于垂直扩展,专业名字叫scale up对于2,就是集群技术,属于水平扩展,也叫scale out 集群技术是一种把多台服务器当做一台来使用的技术.应用层面与

mysql 复制(主从复制)

一.概述 让一台服务器的数据与其他服务器数据保持同步.一台主库的数据可以同步到多台备库上,而备库本身也可以配置成其他服务器的主库. 主要应用: 1) 数据分布 2) 负载均衡 3) 伪备份.在备份基础上能增加更安全的技术补充 4) 高可用性和故障切换.避免mysql单点失败 5) 升级测试.升级数据库前,将数据复制到备库,使得查询能够在备库按照预期执行. 支持两种复制方式 1) 基于语句的复制 2) 基于行的复制 两种方式复制原理一样:在主库上记录二进制日志.在备库重放日志 实现异步的数据复制.

MongoDB复制集的工作原理介绍(二)

复制集工作原理 1)数据复制原理 开启复制集后,主节点会在 local 库下生成一个集合叫 oplog.rs,这是一个有限集合,也就是大小是固定的.其中记录的是整个mongod实例一段时间内数据库的所有变更(插入/更新/删除)操作,当空间用完时新记录自动覆盖最老的记录. 复制集中的从节点就是通过读取主节点上面的 oplog 来实现数据同步的,MongoDB的oplog(操作日志)是一种特殊的封顶集合,滚动覆盖写入,固定大小.另外oplog的滚动覆盖写入方式有两种:一种是达到设定大小就开始覆盖写入