MySQL主从复制

avatar
作者
筋斗云
阅读量:0

一、主从复制的过程

MySQL的主从复制主要是基于binlog日志实现的,binlog日志(二进制日志)主要负责记录DDL,DML语句。

主要过程(见下图)如下:

  1. 服务器配置文件中开启主从复制后,会有俩个线程,一个是IO,再一个是SQL;
  2. 从节点的IO线程会去与主节点的Dump线程进行交互,读取binlog日志中的二进制数据;
  3. 从节点IO线程会告知主节点Dump线程在什么位置开始接收binlog;
  4. 随后,从节点的IO线程将内容保存在relay log中;
  5. 从节点SQL线程不断读取relay log中的数据,写入数据表中;

主从复制过程 

二、具体操作

2.1 主库配置

1:修改配置文件   /etc/my.cnf。

vim  /etc/my.cnf
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1 server-id=1 #是否只读,1 代表只读, 0 代表读写 read-only=0 #忽略的数据, 指不需要同步的数据库 #binlog-ignore-db=mysql #指定同步的数据库 #binlog-do-db=db01

2:  重启MySQL服务器。

systemctl restart mysqld

 3:登录mysql,创建远程连接的账号,并授予主从复制权限。

CREATE USER 你的用户名 IDENTIFIED WITH mysql_native_password BY 密码 

分配权限 :

GRANT REPLICATION SLAVE ON *.* TO 创建的用户名

2.2 从库配置

1:修改配置文件   /etc/my.cnf。

vim  /etc/my.cnf
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2^32-1,和主库不一样即可 server-id=2 #是否只读,1 代表只读, 0 代表读写 read-only=1

2: 重新启动MySQL服务 。

systemctl restart mysqld

3:登录mysql,设置主库配置。

CHANGE REPLICATION SOURCE TO SOURCE_HOST='主数据库地址', SOURCE_USER='用户名', SOURCE_PASSWORD='密码', SOURCE_LOG_FILE='主数据库中所要同步的binlog日志文件', SOURCE_LOG_POS=binlog文件的位置;

4:开启同步操作。

start replica ;

5:查看主从同步状。

show replica status ; 

2.3 测试 

1:在主库上创建表和执行相应的insert,update等相应语句。

2:在从库中查询数据,查看是否同步。

三、主从延迟问题

3.1 什么是主从延迟?

顾名思义,主从延迟指的是,在复制数据的过程中,主从节点间存在数据更新的延迟。导致这个问题,可能会是网络的延迟,当然也有可能是服务硬件资源占用过多所造成的,再者就是从节点的复制线程不够,当线程不够时,数据回放就会慢。

3.2 解决思路

常用思路:

  1. 尽可能将网络延迟问题减小,服务器部署的物理距离不易过大;
  2. 硬件资源的提升;
  3. MySQL的并行复制,能够快速提高效率;

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!