MySql 主从复制及主主复制

一、主从复制

1、主配置

[mysqld]
server-id=11   #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin   #开启二进制日志
auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL
#binlog-ignore=mysql   #忽略mysql库【我一般都不写】
#binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】
replicate-do-db=test #要同步的数据库,默认所有库

2、从配置

[mysqld]
server-id=12
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=test #要同步的数据库,默认所有库

上面配置后都重启让其生效

3、主执行语句

GRANT REPLICATION SLAVE ON *.* TO '同步账号'@'%' identified by '同步账号密码';
flush privileges; #非常重要否则不生效
SHOW MASTER STATUS;#查看Bin文件及pos信息

4、从执行语句

stop slave;
change master to master_host='ip',master_port=端口,master_user='主账号',master_password='主密码',master_log_file='mysql-bin.000002',master_log_pos=41052;
flush privileges;
start slave;
show slave status;

5、碰到的问题

A、从机 上 Slave_SQL_Runing 会变为No 。

解决:1、从机mysql执行:set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;(这个方法不推荐,错误跳过只是暂时)

2、真正原因是有一个数据库可能程序报错了回滚了数据导致的。所以在同步my.ini文件中排除这个错误的库吧或找到问题所在

 

 

注意:如果想在slave上忽略某个库,最用replicate_ignore_db取代binlog_ignore_db

 

半同步复制

引用:https://www.cnblogs.com/phpstudy2015-6/p/6525275.html

主库

复制代码
install plugin rpl_semi_sync_master soname 'semisync_master.dll';
show plugins;   #查看是否加载成功
SET GLOBAL rpl_semi_sync_master_enabled = 1;  #开启半同步复制,默认是关闭的
#或配置文件中加 rpl_semi_sync_master_enabled=1  #主库配置文件添加,表示以后启动MySQL将会自动开启半同步复制

flush privileges;
show variables like '%semi%';
#Rpl_semi_sync_master_enabled=ON表示开启半同步复制
#Rpl_semi_sync_master_timeout=1000默认1000毫秒,即10秒超时,将切换为异步复制
#Rpl_semi_sync_master_wait_no_slave表示是否允许master每个事物都要等待slave接收确认,默认为ON
#Rpl_semi_sync_master_trace_level=32表示用于开启半同步复制时的调试级别,默认32
show status like '%semi%';
#Rpl_semi_sync_master_status表示主服务器使用是异步还是半同步复制(ON)
#Rpl_semi_sync_master_client表示从服务器有多少个配置成半同步复制
#Rpl_semi_sync_master_yes_tx表示从服务器确认成功提交的数量
#Rpl_semi_sync_master_no_tx表示从服务器确认失败提交的数量
复制代码

 

从库

复制代码
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.dll';#linux则为semisync_slave.so
show plugins;   #查看是否加载成功

SET GLOBAL rpl_semi_sync_slave_enabled = 1;  #开启半同步复制,默认是关闭的
#或配置文件中加 rpl_semi_sync_slave_enabled=1  #从库配置文件添加,同上

show variables like '%semi%';
#Rpl_semi_sync_slave_enabled=ON表示在slave已经开始半同步复制模式
#Rpl_semi_sync_slave_trace_level=32表示用于开启半同步复制时的调试级别,默认32
show status like '%semi%'
#Rpl_semi_sync_slave_status表示从服务器开启半同步复制

#重启从服务器IO线程,手动将异步模式切换为半同步模式
STOP SLAVE IO_THREAD;

START SLAVE IO_THREAD;
复制代码

 

posted @   三瑞  阅读(168)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示