MySQL主从复制

一、主从复制的过程

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的并行复制,能够快速提高效率;
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值