linux系统mysql主主复制(双主复制)
一、简介
在上一篇的主从复制中:http://www.cnblogs.com/lay2017/p/9043985.html
我们了解到,mysql通过master写日志,slave读取并执行日志内容从而达到slave数据与master的一致。那么基于这个原理,我们可以实现两台master的复制功能。
大体如下:
1、两台master都开启log-bin写入日志
2、ID去重复
3、配置要复制的表
4、两台master分别向赋予replication slave从机复制权限;
5、分别开启复制
二、两台master分别开启主机日志
分别进入两台master机器,修复my.cnf文件(vim /etc/my.cnf),添加如下内容
# 双主配置
# 日志文件名称
log-bin=master-bin
# 唯一标识符一般为机器的IP尾号
server-id=144
# ID去重复配置
auto_increment_increment=几台机器就配几
auto_increment_offset=按顺序即可,例如(第一台:1;第二台:2)
# 设置双主复制的数据库
replicate-do-db=数据库名称
三、分别向对方赋予复制权限
在两台机器上分别执行
mysql>grant replication slave on *.* to '给对方登录的用户名'@'对方的IP地址' identified by '给对方登录的密码';
注意:这里是*.*,只能配置所有数据库因为replication slave权限只能作用于全局数据库,也就是为什么我们第二步要在配置文件里面配置允许复制的数据库名称
四、分别将主机指向对方
1)通过:mysql>show master status; 查看对方的日志文件名称和地址
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000003 | 407 | | | |
+-------------------+----------+--------------+------------------+-------------------+
2)通过以下命令配置主机指向:
CHANGE MASTER TO
MASTER_HOST='对方的IP',
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='日志文件名',
MASTER_LOG_POS=日志地址;
五、开启复制
start slave;
注意:在做测试的时候最好先清空数据库,如果有配置过主从复制的情况,也最好先重置以下master和slave,重置命令如下:
mysql>reset master;
mysql>reset slave;
五、查看状态
分别在两台机器上执行
mysql>show slave status\G;
如果没有问题的话,你会看到类似如下的内容:
......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
注意:两个线程都需要是Yes的状态,才表示复制开启成功
以上双主复制配置
参考文章:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)