基于semisync实现MySQL的主从半同步复制
一个MySQL不能响应更多请求时,我们可以考虑主从复制,写都到主服务器,读都到从服务器上,这样可以增加并发响应能力,关于前端的读写分离先不讨论,我们先来构建一个MySQL的主从同步架构吧!
- master 172.16.1.18 hostname:master.laoguang.me
- slave 172.16.1.19 hostname:slave.laoguang.me
- [mysqld]
- server-id = 1 ##此id必须全局唯一
- sync_binlog = 1 ##为了减少延迟,让二进制日志同步写到磁盘,性能会有所降低
- #log-bin = 1 ## 二进制日志默认是开启的,如果你的没开启,请启用这个
- log-bin = mysql-bin
- innodb_flush_log_at_trx_commit=1 ##事务日志立刻刷写到磁盘
- service mysqld start
- create user 'backup'@'172.16.1.19' identified by 'redhat';
- revoke all privileges,grant option from 'backup'@'172.16.1.19';
- grant replication client,replication slave on *.* to 'backup'@'172.16.1.19';
- [mysqld]
- server-id = 2 ##id必须全局唯一
- relay-log = mysql-relay ##开启中继日志,不指定目录默认在数据目录下
- relay-log-index = mysql-relay.index ##中继日志索引
- read-only = 1 ##从服务器一般用户只读
- #replicate_do_db = 'db_name' ##只同步某db_name库
- #rpplicate_ignore_db = 'db_name' ##不同步db_name库
- #replicate_do_table = 'tb_name' ##只同步tb_name表
- #replicate_ignore_table = 'tb_name' ##不同步tb_name表
- #replicate_wild_do_table = 'name%' ##通配同步,如只同步name开头的
- #replicate_wild_ignore_table = '_name' ##通配不同步,不同步第一个字符是任意字符后面跟的是name的表或库
- service mysqld start
- mysql> change master to master_host='172.16.1.18',
- -> master_user='backup',
- -> master_password='redhat',
- -> master_log_file='mysql-bin.000001';
- mysql> start slave
- mysql> show slave status\G;
- mysql> create database testsycn; ##主库上建立
- mysql> show databases; ##从库上查看,如果有证明建立成功
- mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; ##加载这个补丁
- mysql> show variables like '%semi%'; ##查看新增补丁后的新系统变量,由此可知模块功能没有启用
- +------------------------------------+-------+
- | Variable_name | Value |
- +------------------------------------+-------+
- | rpl_semi_sync_master_enabled | OFF |
- | rpl_semi_sync_master_timeout | 10000 |
- | rpl_semi_sync_master_trace_level | 32 |
- | rpl_semi_sync_master_wait_no_slave | ON |
- +------------------------------------+-------+
- mysql> set global rpl_semi_sync_master_enabled=on;
- ---------------不是很华丽的分隔---------------
- 如果想长期有效写入/etc/my.cnf
- [mysqld]
- rpl_semi_sync_master_enabled=1 ##启用模块
- rpl_semi_sync_master_timeout=10000##主库等待半同步复制信息返回的超时间隔,单位毫秒,超过间隔降级为异步模式
- rpl_semi_sync_master_wait_no_slave=On ##联系不上从服务器也会等待timeout,默认开启可不写
- ---------------不是很华丽的分隔---------------
- mysql> show status like '%semi%'; ##查看状态
- +--------------------------------------------+-------+
- | Variable_name | Value |
- +--------------------------------------------+-------+
- | Rpl_semi_sync_master_clients | 0 |
- | Rpl_semi_sync_master_net_avg_wait_time | 0 |
- | Rpl_semi_sync_master_net_wait_time | 0 |
- | Rpl_semi_sync_master_net_waits | 0 |
- | Rpl_semi_sync_master_no_times | 0 |
- | Rpl_semi_sync_master_no_tx | 0 |
- | Rpl_semi_sync_master_status | ON |
- | Rpl_semi_sync_master_timefunc_failures | 0 |
- | Rpl_semi_sync_master_tx_avg_wait_time | 0 |
- | Rpl_semi_sync_master_tx_wait_time | 0 |
- | Rpl_semi_sync_master_tx_waits | 0 |
- | Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
- | Rpl_semi_sync_master_wait_sessions | 0 |
- | Rpl_semi_sync_master_yes_tx | 0 |
- +--------------------------------------------+-------+
- mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so'; ##加载补丁
- mysql> show variables like '%semi%'; ##由图可知同样也需开启
- +---------------------------------+-------+
- | Variable_name | Value |
- +---------------------------------+-------+
- | rpl_semi_sync_slave_enabled | OFF |
- | rpl_semi_sync_slave_trace_level | 32 |
- +---------------------------------+-------+
- mysql> set global rpl_semi_sync_slave_enabled=1; ##如果长期有效写入配置文件
- ---------------不是很华丽的分隔---------------
- [mysqld]
- rpl_semi_sync_slave_enabled=1
- ---------------不是很华丽的分隔---------------
- mysql> stop slave;
- mysql> start slave;
- mysql> show status like '%semi%';
- Rpl_semi_sync_master_clients | 1
- mysql> create database free;
- mysql> show databases;
转载于:https://blog.51cto.com/laoguang/1079618
基于semisync实现MySQL的主从半同步复制相关推荐
- Mysql5.7的gtid主从半同步复制和组复制
(一)gtid主从半同步复制 一.半同步复制原理 mysql默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主库如果cr ...
- MySQL 5.5 到MySQL 5.6半同步复制(SSL)
数据放在一个raid 1上: [root@slave1 ~]# yum -y install mdadm [root@slave1 ~]# mdadm -C /dev/md0 -l1 -n2 /dev ...
- mysql确认半同步命令_怎么判断mysql是否是半同步复制
AFTER_COMMIT(5.6默认值) master将每个事务写入binlog ,传递到slave 刷新到磁盘(relay log),同时主库提交事务.master等待slave 反馈收到relay ...
- mysql 5.5半同步复制_(5.5)mysql高可用系列——MySQL半同步复制(实践)
关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...
- mysql 5.5半同步复制_MySQL5.5配置安装半同步复制
确认master和slave上是否开启have_dynamic_loading master MASTER@root@(none) 10:54:58>show variables like 'h ...
- mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用
mysql半同步复制(semi_sync_replication)搭建及使用 google为mysql开发了一个补丁一个基于半同步的补丁,应用与mysql5.0.回来mysql打上了该补丁,并在5.5 ...
- MySQL 半同步复制+MMM架构
介绍 上篇文章介绍了MMM架构的实现方法,但是上篇文章的MMM方案的复制是异步复制,异步复制的主要问题在于当主从存在延时时如果主机出现了故障导致了主从切换时这时将会存在数据丢失:mysql为了解决异步 ...
- mysql主从复制,半同步,主主复制架构的实现
mysql的数据同步功能,不仅在一定程度上提供数据库查询时的负载均衡,而且为实现数据库的冗灾.备份.恢复.负载均衡等都是有极大帮助.而数据的同步功能可以通过主从复制来实现,而主从复制是异步进行的,并且 ...
- 基于CentOS7,MySQL5.7的同步/半同步复制实现
基于CentOS7,MySQL5.7的读写分离架构搭建实战2 实战1遗留问题: mysql主从复制存在的问题和解决方法(异步复制方式) mysql主从复制存在的问题: 主库宕机后,数据可能丢失 从库只 ...
- 简述mysql半同步复制—semisync
mysql的半同步复制-semisync是基于默认的异步复制和完全同步复制之间,它是在master在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个slave收到并写到relay log ...
最新文章
- log4net 存储到oracle 调试 Could not load type [log4net.Appender.OracleAppender]
- css 中 border 断线解决,简单实用
- 【联邦学习】FATE 集群部署 step3
- Java之Character类
- PHPUnit 3.4.10 在windows上配置
- python 判断数据类型,是否与已知相同
- 为什么手机升级系统反应慢了_手机卡顿反应慢怎么解决?久用不卡顿的手机盘点...
- android命名规范阿里,阿里android开发手册 PDF 下载
- python,进程和线程
- Spring Boot太难了?那是你不知道这3个要点!
- 【车道线检测与寻迹】4月20 欧式、4D、8D、方向倒角距离ODT距离变换
- android 9 one ui,三星S9+升级安卓9深度体验|一文看懂三星OneUI升级了啥
- java购物系统需求分析_java网上购物系统需求分析.doc
- imagenet 千分类标签翻译
- windows局域网共享文件
- 怎么用Python测网速?
- 设计师一定要知道这5个免费样机素材网
- tcpip Socket编程入门
- CloudFoundry源码分析:NATS
- 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营...