发布作者: Seven~
百度收录: 正在检测是否收录...
最后更新: 2024年 01月 18日 10:43
作品采用: 《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 》许可协议授权
首先说明下两者的区别:
1)一主一从:数据主要写入主库,从库作为备库,实时地将主库数据同步到备库
2)双主:两个数据库同时为主库和从库,互为主从,任意一个库数据更新都会同步到另外一个库
建议在配置搭建MySQL双主环境时,最好先看下一主一从的配置,因为里面有很多相似的地方,只有在配置上稍微有点不同。
首先准备两个MySQL数据库,相关ip信息仍然如下:
名称 | IP |
---|---|
111库(主) | 192.168.100.111 |
112库(备) | 192.168.100.112 |
1、先配置111库
1)在 /etc/my.cnf
mysql核心配置文件的[mysqld]
节点内,新增如下配置:
server-id=1 #服务器 id,随意,但要唯一
log-bin=mysql-bin #二进制文件存放路径
replicate-ignore-db = mysql,information_schema,performance_schema #忽略同步的库
binlog-ignore-db=mysql #不同步的数据库日志
#需要同步的库
#replicate-do-db = scada
#待同步的数据库日志
#binlog-do-db=scada
2)创建专门用于主从复制用户账号。因此使用root账户登录mysql,并执行一些指令:
#登录
mysql -u root -p密码
#修改Mysql密码难度策略
set global validate_password_policy=0;
set global validate_password_length=1;
#创建用户 我这里用户名为copyuser,注意这里的ip是112库的ip
CREATE USER 'copyuser'@'192.168.100.112' IDENTIFIED WITH mysql_native_password BY '123456';
#给主从复制账号授权
grant replication slave on *.* to 'copyuser'@'192.168.100.112';
3)重启主库的mysql
systemctl restart mysql
4)再次登录mysql
mysql -uroot -p
5)使用如下指令查看master的状态:
show master status;
结果类似如下:我们需要关注File和Position的信息,后面要用到。
1)同样的,我们在 /etc/my.cnfmysql核心配置文件的[mysqld]节点内,新增如下配置:
server-id=2 #服务器 id,随意,但要唯一
log-bin=mysql-bin #二进制文件存放路径
2)然后我们重启112库的mysql
systemctl restart mysql
在112库上具体执行如下:
#1,登录mysql,然后执行以下代码
mysql -u root -p
#2,关闭状态
stop slave;
#3,设置同步,注意这里是111库的ip,日志名称和位置是111库上的记下的file和postion
change master to master_host='192.168.100.111',master_user='copyuser',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=157;
#4,开启从库
start slave;
# 5,检查服务器状态
show slave status \G
最后在检测服务器状态时,应该类似如下图:
最后在主库中写入数据,看看是否都同步给了对方,如果都能正常同步,说明就没有问题了。
—— 评论区 ——