当前位置: 首页 > news >正文

CentOS8 在MySQL8.0 实现半同步复制

#原理

MySQL默认是异步的,不要求必须全部同步到从节点才返回成功结果;

同步复制: 用户发请求到代理, 代理收到请求后写/更新数据库写入到二进制日志bin_log,  然后必须等数据发到所有的从节点, 从节点全部收到数据后, 主节点才返回给客户端的成功结果。

弊端: 客户端必须等到所有的从节点接收全部数据才收到成功结果,耗时长,效率低。

所以用半同步的方法解决,只要有一个从节点同步成功就返回成功结果。

#安装插件

安装主节点插件 

mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #永久安装插件

查看插件

mysql>SHOW PLUGINS; #查看插件

安装从节点插件(两个)

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql>SHOW PLUGINS; #查看插件

 #主服务器Master配置

[root@master ~]#vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=8
log-binrpl_semi_sync_master_enabled=ON #修改此行,需要先安装semisync_master.so插件后,再重启,否则无法启动
rpl_semi_sync_master_timeout=3000 #设置3s内无法同步,也将返回成功信息给客户端

重启数据库

systemctl restart mysqld

插件开启状态 

#从服务器Slave配置

打开配置文件 

vim /etc/my.cnf.d/mysql-server.cnf

第一个从节点 

[root@slave1 ~]#vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
server-id=18rpl_semi_sync_slave_enabled=ON #修改此行,需要先安装semisync_slave.so插件后,再重启,否则无法启动

第二个从节点

[mysqld]
server-id=28
rpl_semi_sync_slave_enabled=ON #修改此行,需要先安装semisync_slave.so插件后,再重启,否则无法启动

验证查看

mysql>SHOW GLOBAL VARIABLES LIKE '%semi%';

  

 #搭建主从关系

主节点查看 

mysql> show master logs;

记录下来

CHANGE MASTER TO MASTER_HOST='10.0.0.8',MASTER_USER='repluser',MASTER_PASSWORD='magedu',MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=156;

创建账号并授权

#创建用户
mysql>create user repluser@"10.0.0.%" identified by "123456";#授权
mysql>grant replication slave on *.* to repluser@"10.0.0.%";

从节点数据库执行 

CHANGE MASTER TO MASTER_HOST='10.0.0.8',MASTER_USER='repluser',MASTER_PASSWORD='magedu',MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=156;

 状态查看(成功)

mysql> start slave;

#验证

现在返回主节点查看

mysql> SHOW GLOBAL STATUS LIKE '%semi%';

 

#注意:如果已经实现主从复制,需要stop slave;start slave;

mysql> stop slave;
mysql> start slave;mysql> SHOW GLOBAL STATUS LIKE '%semi%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
+----------------------------+-------+
1 row in set (0.00 sec)

http://www.lryc.cn/news/485814.html

相关文章:

  • 数据分析——Python绘制实时的动态折线图
  • 【Redis】Redis的一些应用场景及使用策略
  • CentOS 8 安装 chronyd 服务
  • HarmonyOS ArkUI(基于ArkTS) 常用组件
  • 不用来回切换,一个界面管理多个微信
  • MySQL系统优化
  • 若依笔记(八):芋道的Docker容器化部署
  • 前端隐藏元素的方式有哪些?HTML 和 CSS 中隐藏元素的多种方法
  • sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!
  • 【Java】异常处理实例解析
  • flutter调试
  • 使用Web Workers提升JavaScript的并行处理能力
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • STM32寄存器结构体详解
  • 如何建立devops?
  • shell基础(3)
  • 2024年11月16日Github流行趋势
  • k8s更新
  • ES6进阶知识一
  • C#/WinForm拖拽文件上传
  • IT运维的365天--019 用php做一个简单的文件上传工具
  • 详细的oracle rac维护命令集合
  • 23 种设计模式详解
  • Python毕业设计选题:基于django+vue的二手物品交易系统
  • VMware 17虚拟Ubuntu 22.04设置共享目录
  • Rust学习(五):泛型、trait
  • 智能零售柜商品识别
  • 2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • 计算机组成原理:总线与微命令
  • 10月回顾 | Apache SeaTunnel社区动态与进展一览