MySql主从复制学习手记

什么是主从复制

将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,在从库中对主库复制过来的二进制日志进行重执行,从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制

MySQL主从复制的优点:

主库出现问题,可以快速切换到从库并由从库提供服务。

实现读写分离,降低主库的访问压力。

在从库中执行备份,避免备份期间对主库服务的影响

主从复制原理

复制过程如下

1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。(对于日志文件的介绍,大家可以参考我另一篇学习手记《MySQL日志学习手记》) 

2. 从库通过iothread线程读取主库Binlog日志文件,写入到从库的中继日志Relay Log文件中

3. slave通过sqlthread线程,读取Relay Log文件中的事件,将改变反映它自己的数据。

实施步骤

第一台服务器10.168.5.183(主)

第二台服务器10.168.5.189(从)

 

主库配置

一:修改配置文件 /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

修改完配置文件后,重启mysql服务,systemctl restart mysqld

二:为数据库创建主从复制的账号,并授予相应的复制权限

CREATE USER 'replica_usr'@'%' IDENTIFIED WITH mysql_native_password BY 'Test@123456' ;

GRANT REPLICATION SLAVE ON *.* TO 'replica_usr'@'%';

如下所示,成功创建具有复制权限的用户

然后,通过如下指令,查看从库是从哪个binlog文件、哪个位置开始复制

show master status ;

字段含义说明:

file : 从哪个日志文件开始推送日志文件

position : 从哪个位置开始推送日志

binlog_ignore_db : 指定不需要同步的数据库

以上,完成主库的配置

从库配置

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

#mysql服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1

server-id=2 

#是否只读,1 代表只读, 0 代表读写

read-only=1 

 

修改完配置文件后,重启mysql服务,systemctl restart mysqld

二:登录从数据库,并与主库建立连接

 上述是8.0.23中的语法。如果mysql8.0.23 之前的版本,执行如下SQL

CHANGE MASTER TO MASTER_HOST='', MASTER_USER='', MASTER_PASSWORD='', MASTER_LOG_FILE='', MASTER_LOG_POS=;

各参数的意义如下说明:

 三:开启同步

start replica ; #8.0.22之后

start slave ; #8.0.22之前

 

四:查看同步状态

show replica status ; #8.0.22之后

show slave status ; #8.0.22之前

如下图红色框框所示,如果出现两个YES,表示已经成功连接到主库,并能够从主库进行同步

 验证

在主库上进行数据库的创建,数据表的创建,插入数据等。

 

 至此,我们完成了Mysql主从同步的设置。

避坑指南:

在启动备库的时候,出现如下错误提示

Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

原因:从数据库读取日志文件位置问题,没有与主数据的位置相对应;

解决方式:

1:刷新主数据库的状态

flush logs;

 2:备库上停止slave,然后更改从库读取日志文件的位置,再重新启动slave即可。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MuYiZi2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值