千家信息网

msyql 的半同步复制

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,mysql的半同步复制:mysql的异步复制:mysql默认使用异步方式进行同步,master在执行客户端提交的事务后会将结果返回给客户端,表示客户端的操作已经生效,同时会将该操作的binlog通过d
千家信息网最后更新 2025年11月13日msyql 的半同步复制


mysql的半同步复制:

mysql的异步复制:mysql默认使用异步方式进行同步,master在执行客户端提交的事务后会将结果返回给客户端,表示客户端的操作已经生效,同时会将该操作的binlog通过dumper通知slave来取,再正常情况下,slave会将该binlog写入本地,并通过sql语句写入从库中与主库同步数据,master对从库是否写入不负任何责任。

主和从的复制过程是由三个线程参与完成的,其中有两个线程(sql语句和I/O线程在slave端),一个I/O线程在master端。

mysql的同步复制:这是一个偏执狂,客户端向主库提交数据,主库写入数据只有从库将数据写入本地后,返回给主库一个回执,主库向客户端返回消息,表示已经成功受理该任务。

mysql半同步:在masterdumper线程通知salve,同时增加了一个ackmysql5.7支持在事务提交前等待ack,当slave没有返回给master ack时,将会自动降级为异步复制。

半同步通过rpl_semi_sync_master_wait_point参数来控制半同步下,master事务提交前的方式

mysql中的半同步参数after_sync,master 将每个事务写入binlog传递到slave刷新到磁盘relay logmaster等待slave反馈接收到的ack后在提交事务并返回提交成功给客户端。

半同步的部署:

半同步基于mysql的异步复制,所以要先搭建好环境。环境搭建参考我的博客:http://12237658.blog.51cto.com/12227658/1907018

测试:

主:master

安装半同步插件:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

Query OK, 0 rows affected (0.08 sec)

查看插件是否安装成功:

mysql> show plugins;会在最后发现:

| ngram | ACTIVE | FTPARSER | NULL | GPL |

| rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |

+----------------------------+----------+--------------------+--------------------+---------+

表明成功。

从:slave

安装插件:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

Query OK, 0 rows affected (0.11 sec)

使用:show plugins;或:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';

如果发现

| rpl_semi_sync_slave | ACTIVE | REPLICATION | semisync_slave.so | GPL |

+----------------------------+----------+--------------------+-------------------+-----

即为成功。

启动半同步:

主:master

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

Query OK, 0 rows affected (0.00 sec)

mysql> show status like 'Rpl_semi_sync_master_status';

+-----------------------------+-------+

| Variable_name | Value |

+-----------------------------+-------+

| Rpl_semi_sync_master_status | ON |

+-----------------------------+-------+

1 row in set (0.00 sec)

从:slave

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

Query OK, 0 rows affected (0.00 sec)

mysql> show status like 'Rpl_semi_sync_slave_status';

+----------------------------+-------+

| Variable_name | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON |

+----------------------------+-------+

1 row in set (0.00 sec)

最后重新启动一下I/O线程:

mysql> STOP SLAVE IO_THREAD;

mysql> START SLAVE IO_THREAD;

测试:

在不关闭slave的情况下创建数据库,主从库会很快写入

主:

mysql> show status like 'Rpl_semi_sync_master_status';

+-----------------------------+-------+

| Variable_name | Value |

+-----------------------------+-------+

| Rpl_semi_sync_master_status | ON |

+-----------------------------+-------+

1 row in set (0.00 sec)

mysql> create database ginkgo;

Query OK, 1 row affected (0.05 sec)

:

mysql> show status like 'Rpl_semi_sync_slave_status';

+----------------------------+-------+

| Variable_name | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON |

+----------------------------+-------+

1 row in set (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| ginkgo |

| mysql |

| performance_schema |

| sys |

+--------------------+

5 rows in set (0.00 sec)

将从上的slave关闭:

mysql> drop database ginkgo;

Query OK, 0 rows affected (10.06 sec)

mysql> show status like 'Rpl_semi_sync_master_status';

+-----------------------------+-------+

| Variable_name | Value |

+-----------------------------+-------+

| Rpl_semi_sync_master_status | OFF |

+-----------------------------+-------+

1 row in set (0.00 sec)

slave长时间不给ack回应,被迫转化为异步,时间也较长,主要是等待时间。

从上肯定没有数据变化。

**注意,写数据库时一定要在配置文件中确定自己是允许那个库同步,不要瞎建库奥。


同步 数据 客户 线程 成功 事务 客户端 插件 参数 同时 情况 数据库 方式 时间 环境 语句 测试 偏执 三个 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高悬网络安全利剑 网络安全工程师报名之后在哪考 台湾电子期刊数据库 海南国晨互联网科技有限公司 科密t1消费数据库连接 互联网科技创新方面的小品 毕设网络安全 管理服务器后台安装 数据库乐观锁出现回滚问题 全球网络安全 减少 网络安全公司市值排行榜 宝丽软件开发 成年人注意的网络安全 网络安全渗透工程师培训教材 浙江统一软件开发标准 手机数据库怎么查看用户名密码 大数据平台需要的数据库类型 哪种设计模式可以加快数据库访问 济南金现代软件开发公司电话 网络安全 哈工程 分布式数据库的工作工资 新泰软件开发公司有哪些 2003应用程序服务器 网络安全手抄报的句子清晰 七彩虹互联网科技有限公司 数据库组合主码外码命令 饥荒steam专用服务器在哪 吴忠市办公软件开发案例 软件开发可研报告审查要点 派出所网络安全周宣传小结
0