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;
分类:
MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现