Mysql主主复制配置
admin
2023-04-22 01:03:01
0

在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。配置的时候需要注意:主键重复,server-id不能重复。
1.新建数据库
Ubuntu16.04,开启两个虚拟机。
配置前,两个mysql分别新建一个数据库,保证的test数据库的数据一致
create database test default character set utf8 default collate utf8_general_ci;
2.修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
服务器A(192.168.8.129)配置如下
bind-address = 0.0.0.0
log_bin = /var/log/mysql/mysql-bin.log #开启二进制日志
server-id = 1 #任意自然数n,只要保证两台MySQL主机不重复即可
expire-logs-days = 100
replicate-do-db = test #要同步的数据库,默认所有库
binlog-ignore-db = mysql #忽略mysql库
binlog-ignore-db = information_schema #忽略information_schema库
auto-increment-increment = 2 #步进值,有n台主MySQL就填n
auto-increment-offset = 1 #起始值。第n台主MySQL,此时为第1主MySQL

服务器B(192.168.8.131)配置
bind-address = 0.0.0.0
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
expire-logs-days = 100
replicate-do-db = test
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
auto-increment-increment = 2
auto-increment-offset = 2 #起始值,第2台主MySQL
二者只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用来设定数据库中自动增长的起点的,两个服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突
replicate-do-db 指定同步的数据库,我们只在两台服务器间同步test数据库。auto-increment-increment的值应设为整个结构中服务器的总数,本例用到两台服务器,所以值设为2
3.重启mysql服务
/etc/init.d/mysql restart
4.创建共享用户
创建一个可以在另一台主机上登录的MySQL用户repl
看是否有mysql中是否有repl这个用户
use mysql;
select user from user;
Mysql主主复制配置
若没有的话,新建用户
create user 'repl'@'%' IDENTIFIED BY 'passwd';
grant replication slave on . to 'repl'@'%';
flush privileges;
查看repl用户的权限
show grants for 'repl'@'%';
Mysql主主复制配置
5.测试是否能够远程登录
在服务器A上(192.168.8.129)
mysql -h 192.168.8.131 -u repl –p
输入口令jvkpxdYrlz
若成功,则继续下一步
若失败,检查mysqld.cnf文件中的配置,可能因为bind-address=127.0.0.1导致,使得仅允许本机访问。

  1. 分别查看二进制日志名和位置
    show master status;
    Mysql主主复制配置
  2. 相互授权用户
    在两台服务上分别先停止slave
    stop slave;
    在服务器A上(192.168.8.129)
    change master to MASTER_HOST='192.168.8.131',MASTER_USER='repl', MASTER_PASSWORD= 'passwd', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
    在服务器B上(192.168.8.131)
    change master to MASTER_HOST='192.168.8.129',MASTER_USER='repl', MASTER_PASSWORD= 'passwd', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
    再启动slave
    start slave;
    8.查看slave状态
    show slave status \G;
    正确结果如下图所示:
    Mysql主主复制配置
    可能出现的情况:
    (1) 当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。
    (2) Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。
    (3) stop slave后,数据变更,再start slave,出错。重新执行一遍CHANGE MASTER即可。
    (4) 若出现如下图所示错误2003,连接不通过,则说明mysqld.cnf 中的bind_address未修改为0.0.0.0。如果要让mysql监听到其他的地址,可以将bind-address = 127.0.0.1注释掉,或者将bind-address = 0.0.0.0监听所有的地址
    Mysql主主复制配置
    (5) 若出现如下图所示错误1045,则说明配置change maseter时输入的repl用户的口令错误
    Mysql主主复制配置
    9.测试是否同步成功
    在A上
    create table test_user (id int NOT NULL AUTO_INCREMENT PRIMARY KEY,createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP);
    在B上可以看到新增了一个表
    Mysql主主复制配置
    在B上
    insert into test_user set id=1;
    在A上可以看到test_user表中新增了一条记录。
    Mysql主主复制配置

参考网址https://www.cnblogs.com/zping/p/5315827.html
https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7

相关内容

热门资讯

“一次愉快的会晤”,泽连斯基披... 在俄乌互相加大对对方纵深目标打击之际,乌克兰总统泽连斯基7月28日造访了白宫,与美国总统特朗普举行会...
总统连遭“逼宫”,少帅临危受命 躲避着燃烧瓶和火箭弹袭击,四辆苏制BMP步兵战车快速穿行在马里乌波尔市区。即将出城的路口,迎面出现1...
独居女子在卧室玩偶内发现摄像头... 租房独居女子意外发现家中玩偶内藏着偷拍设备,报警后偷拍设备竟“不翼而飞”,门锁记录显示有人在她出门的...
伊学者:乌克兰袭击行动适得其反... 乌克兰袭击与伊朗有关的船只后,伊朗和俄罗斯接连作出强硬回应。伊朗外交学院教授法拉吉扎德在接受凤凰卫视...
20万人怒火不会停!蓝议员挺蒋... 海峡导报综合报道 在蓝白号召台湾民众上凯道呐喊“反毒台”后,台北市长蒋万安日前透露,近日不少民代私下...
柯文哲妻子陈佩琪畅游大陆,民进... 台湾民众党前主席柯文哲妻子陈佩琪27日在脸书发文证实,自己早前由儿子陪同前往上海、杭州与北京旅游一周...
高市早苗被问如何改善中日关系 据日本东京新闻报道,当地时间7月27日,日本首相高市早苗在首相官邸举行记者会。当被问及如何改善中日关...
扎哈罗娃批小泉进次郎涉核言论:... 【环球网报道 记者 张江平】综合俄新社等媒体报道,对于日本防卫大臣小泉进次郎涉核言论,俄罗斯外交部发...
“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...