
✪衔接上文
部署MySQL主主双向主从复制< M-S-S>
(依据上次实验条件恢复快照再实验)
一、实验环境
主机名 IP 系统/MySQL版本 角色MASTER 192.168.231.129 CentOS7.4 5.5.60-MariaDB Master
SLAVE1 192.168.231.130 CentOS7.4 5.5.60-MariaDB slave中继
SLAVE2 192.168.231.132 CentOS7.4 5.5.60-MariaDB slave模式 : C/S端口 : 3306
二、配置主数据库服务器master
修改配置文件my.cfg
[root@master ~]# vim etc/my.cnf
在[mysql]模块下插入以下命令
binlog-do-db=HAlog-bin=mysql-bin-masterbinlog-ignore-db=mysqlsync-binlog=1binlog-format=row
然后重新启动mysql服务
[root@master ~]# systemctl restart mariadb
然后在主服务器上授权
[root@master ~]# mysql -u root -p8760346709MariaDB [(none)]> grant replication slave on *.* to repl@'192.168.231.%' identified by '123456';Query OK, 0 rows affected (0.01 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show master status;+-------------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------------+----------+--------------+------------------+| mysql-bin-master.000001 | 472 | HA | mysql |+-------------------------+----------+--------------+------------------+1 row in set (0.00 sec)
接下来对master数据库进行操作,过程与上一篇文章类似,不再批注
[root@master ~]# mysql -uroot -p8760346709[MariaDB [(none)]> create database HA ;[MariaDB [(none)]> use HA;[MariaDB [HA]> create table T1 (id int,name varchar(20));[MariaDB [HA]> \qBye
接下来对master的HA库进行备份并传给slave1 和slave2
mysqldump -uroot -p8760346709 HA>HA.sql
[root@master ~]# rsync HA.sql 192.168.231.130:~/[root@master ~]# rsync HA.sql 192.168.231.132:~/
三、配置中继数据库服务器slave1
导入数据库ha.sql
[root@slave1 ~]# mysql -uroot -p123MariaDB [(none)]> create database HA;MariaDB [(none)]> use HA;MariaDB [HA]> source HA.sql
接下来配置my.cnf
server-id=2log-bin=mysql-bin-slave1log-slave-updates=1binlog-format=1
重启服务
[root@slave1 ~]# systemctl restart mariadb对slave1进行授权
MariaDB [(none)]> stop slave;Query OK, 0 rows affected, 1 warning (0.00 sec)MariaDB [(none)]> change master to master_host='192.168.231.129',master_user='repl',master_password='123456';Query OK, 0 rows affected (0.02 sec)MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.00 sec)
查看slave中继状态
MariaDB [(none)]> show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.231.129Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin-master.000003Read_Master_Log_Pos: 245Relay_Log_File: mariadb-relay-bin.000005Relay_Log_Pos: 536Relay_Master_Log_File: mysql-bin-master.000003Slave_IO_Running: YesSlave_SQL_Running: Yes
两个yes,代表成功!
再授权一个用户给slave2:
MariaDB [(none)]> grant replication slave on *.* to 'repl'@'192.168.231.132' identified by '123456';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)
四、配置数据库服务器slave2
导入数据库文件HA.sql
MariaDB [(none)]> create database HA;MariaDB [(none)]> use HAMariaDB [HA]> source HA.sql;
配置my.cnf
[root@slave2 ~]# vi etc/my.cnf
server-id = 3log-bin=mysql-bini-slave2binlog-format=row
重启mysql
[root@slave2 ~]# systemctl restart mariadb
指定slave中继服务作为slave2的主:
MariaDB [HA]> stop slave;Query OK, 0 rows affected (0.00 sec)MariaDB [HA]> change master to master_host='192.168.231.130',master_user='repl',master_password='123456';Query OK, 0 rows affected (0.00 sec)MariaDB [HA]> start slave;Query OK, 0 rows affected (0.00 sec)MariaDB [HA]> show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.231.130Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin-slave1.000002Read_Master_Log_Pos: 1189Relay_Log_File: mariadb-relay-bin.000003Relay_Log_Pos: 1480Relay_Master_Log_File: mysql-bin-slave1.000002Slave_IO_Running: YesSlave_SQL_Running: Yes
从MASTER上插入数据测试:
MariaDB [(none)]> insert into HA.T1 values(1,'下班');
然后分别在SLAVE中继,与SLAVE上查看

可以看到,数据已经同步!
然而,作为slave中继,没必要显示数据的同步过程,
可以把slave1引擎改为黑洞!
MariaDB [(none)]> set sql_log_bin=off; #关闭日志Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> alter table HA.T1 engine=blackhole;Query OK, 1 row affected (0.03 sec)Records: 1 Duplicates: 0 Warnings: 0
再返回master插入测试数据
MariaDB [HA]> insert into T1 values (2,'nice');
查看结果

搞定!
文章转载自一元殿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




