半同步主从复制

半同步主从复制的概念

半同步主从复制(Semisynchronous Replication, SBR)是MySQL数据库中的一种数据复制方式,它在异步复制的基础上增加了一定程度的同步性,旨在提高数据安全性,减少数据丢失的风险。

半同步主从复制的原理

  1. 主服务器(Master)操作:客户端向主服务器发起写操作(如INSERT、UPDATE、DELETE等)。主服务器执行这些操作,并将它们封装在一个或多个事务中。事务完成后,主服务器将事务的所有更改记录到其本地的二进制日志(Binary Log, binlog)。
  2. binlog记录与传输:主服务器上运行的log dump线程负责通知从服务器来拿取二进制日志。
  3. 等待从服务器确认:与异步复制不同,半同步复制要求主服务器在提交事务后,等待至少一个从服务器的确认。即从服务器必须在接收到二进制日志并写入到中继日志(Relay Log)后将结果反馈给主服务器。主服务器接收到确认后,才将事务commit写入磁盘中。
  4. 从服务器操作:从服务器启动一个I/O线程,该线程连接到主服务器并请求从某个特定的binlog位置(如最后一次同步的位置)开始复制。I/O线程接收到主服务器发来的二进制日志后,将其写入到从服务器本地的中继日志。当I/O线程将二进制日志写入中继日志后,会向主服务器发送一个确认消息,表明已成功接收并持久化该事件。
  5. SQL线程执行:另一个在从服务器上运行的SQL线程负责读取中继日志中的事件,并按照事件在binlog中的顺序在从服务器上重新执行这些操作,以保持数据的一致性。

半同步主从复制的操作

1、环境准备

需要两台搭建好异步主从复制的服务器。

2、master服务器配置

// 主服务器安装半同步插件
root@(none) master-mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

// 修改配置
root@(none) master-mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1;
root@(none) master-mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

[root@master ~] vim /etc/my.cnf
# 添加
[mysqld]
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_master_enabled=1

// 刷新服务
[root@master ~] service mysqld restart

3、slave服务器配置

// 主服务器安装半同步插件
root@(none) slave-mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

// 修改配置
root@(none) slave-mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

[root@slave ~] vim /etc/my.cnf
# 添加
[mysqld]
rpl_semi_sync_slave_enabled=1

// 刷新服务
[root@slave ~] service mysqld restart

延迟备份

延迟备份的作用如下:

1. 数据恢复与容灾

  • 误操作恢复:在生产环境中,由于人为误操作(如误删除数据、表或库)导致的数据丢失是常见的风险。延迟备份允许在误操作发生前的一个时间点停止复制,从而保留误操作之前的数据状态,便于数据恢复。这一点对于避免数据灾难至关重要。
  • 容灾备份:延迟备份可以作为额外的容灾手段,即使主库或实时备份库出现问题,延迟备份库也能提供一定时间前的数据快照,保障数据的安全性和可恢复性。

2. 减轻主库压力

  • 降低同步负载:在高并发或大数据量环境下,实时同步可能会对主库造成较大的性能压力,包括I/O压力、CPU负载等。延迟备份通过控制同步的时机和频率,可以有效减轻主库的压力,避免影响主库的正常业务处理。

 其具体操作如下:

// 在slave服务器上操作
root@(none) slave-mysql> stop slave;
// 这里的10为延迟10秒
root@(none) slave-mysql> CHANGE MASTER TO MASTER_DELAY = 10;
root@(none) slave-mysql> start slave;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hi,你好啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值