MySql主从复制原理及部署

MySql主从复制

原理:

在这里插入图片描述

1、Master节点开启binlog,并将变动记录到binlog中;

2、Slave节点定期探测Master节点的binlog,如有变动,开启I/O线程向Master节点请求二进制事件;

3、Master节点为每一个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至Slave节点的中继日志(Relaylog)中,Slave节点会启动一个sql线程从中继日志中读取二进制日志,在本地重放,即解析成sql语句逐一执行。

mysq支持的复制类型

(1) STATEMENT:
  • 基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默 认采用基于语句的复制,执行效率高。
(2)ROW:
  • 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
(3) MIXED:
  • 混合类型的复制。默认采用基于语句的复制,一 旦发现基于语句无法精确复制时,就会采用基于行的复制。

部署注意事项

0、安装mysql(略)
1、时间同步
##主服务器设置##
yum install ntp -y
 
vim /etc/ntp. conf
--末尾添加--
server 127.127.80.0           #设置本地是时钟源,注意修改网段
fudge 127.127.80.0 stratum 8               #设置时间层级为8 ( 限制在15内)
 
service ntpd start
 
##从服务器设置##
yum install ntp ntpdate -Y .
service ntpd start
/usr/sbin/ntpdate 192.168.1.10          #进行时间同步
 
crontab -e
*/30****/usr/sbin/ntpdate 192.168.1.10

2、配置
2.1 Master节点
  • 修改完配置需要重启mysql
#(必选)配置server-id,保证主从不一致
server-id = 11
#(必选)添加,主服务器开启二进制日志
log-bin=mysql-bin
#(可选)设置复制类型
binlog_ format = MIXED
#(可选)添加,允许slave从master复制数据时可以写入到自己的二进制日志
log-slave -updates=true  
#(可选)设置二进制日志文件过期时间,避免占用大量磁盘空间,默认值为0,表示logs不过期
expire_ logs_ days = 7   
#(可选)设置二进制日志限制大小,如果超出给定值,日志就会发生切割,默认值是1GB
max_ binlog_ size = 500M  
2.2 Slave节点
  • 修改完配置需要重启mysql
#(必选)配置server-id,保证主从不一致
server-id = 22
#(必选)添加,开启中继日志,从主服务器上同步日志文件记录到本地
relay-log=relay-log-bin
#(可选)添加,定义中继日志文件的位置和名称,一般 和relay-log在同一目录
relay-log-index=slave-relay-bin.index
#(可选)当slave从库宕机后,假如relay-log 损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log, 并且重新从master. 上获取日志,这样就保证了relay-log 的完整性。默认情况下该功能是关闭的,将relay_ 1og_ recovery 的值设置为1时,可在slave从库上开启该功能,建议开启。
relay_1og_recovery = 1 
3、设置主从
3.1 Master节点
#创建同步账号并授权
mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.1.8' IDENTIFIED BY '*****';     #给从服务器授权
mysql> FLUSH PRIVILEGES;

#查看master节点状态,并记录文件名和Position值
mysql> show master status ;
//如显示以下
| File| Position | Binlog_ _Do_ _DB | Binlog_ Ignore_ DB I
----+----------+--------------+------------------+
| mysql-bin.000002 I   339 |
 
----+----------+--------------+------------------+
3.2 Slave节点
#配置同步,注意master_log_file和master_log_pos的值要与Master查询的一致
mysql> CHANGE master to master_host='192.168.1.10' , master_user= ' myslave' , master_ password=' **** , master_1og_file=' mysql-bin.000002' , master_log_pos=339;   

#启动同步,如有报错执行reset slave;
mysql> start slave;

4、验证
#查看Slave状态
mysql> show slave status\G;  
 
#验证: 确保IO和SQL线程都是Yes, 代表同步正常
#负责与主机的io通信
Slave_IO_Running: Yes
#负责自己的slave mysql进程
Slave_SQL_Running: Yes        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值