当前位置:Gxlcms > 数据库问题 > MySQL双向主从复制

MySQL双向主从复制

时间:2021-07-01 10:21:17 帮助过:21人阅读

作为Master服务器apenglinux-001.cn的配置
/ -- 建库,表,备份库,将备份传给另一台机器-- /
[root@apenglinux-001 ~]# mysql -uroot -p123456 -e "create database db1;use db1;create table t1(id int unsigned not null primary key auto_increment,name varchar(100));insert into t1(name)values(‘zhangsan‘),(‘lisi‘),(‘wangwu‘);select * from t1;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
+----+----------+

[root@apenglinux-001 ~]# mysqldump -uroot -p123456 -B db1 > db1_all.sql

[root@apenglinux-001 ~]# mysqldump -uroot -p123456 -B db1 > db1_all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@apenglinux-001 ~]# scp db1_all.sql 192.168.1.20:/root
The authenticity of host ‘192.168.1.20 (192.168.1.20)‘ can‘t be established.
ECDSA key fingerprint is SHA256:ENfUT65MBnG5u82/aeA84Wl7klhZZMS/MI1+36eGu8k.
ECDSA key fingerprint is MD5:bb:7a:dc:8b:d2:5b:99:54:9a:8d:f2:17:81:0a:5e:72.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.20‘ (ECDSA) to the list of known hosts.
root@192.168.1.20‘s password:
db1_all.sql 100% 2024 856.5KB/s 00:00

/ -- 配置my.cnf-- /
[root@apenglinux-001 ~]# vim /etc/my.cnf
log-bin=apenglinux-001.cn
server-id=100
binlog-do-db=db1
binlog-ignore-db=mysql

/ -- 开启MySQL服务-- /
[root@apenglinux-001 ~]# systemctl restart mysqld

/-- 作为master时,授权,将表锁定--/
[root@apenglinux-001 ~]# mysql -uroot -p123456 -e "grant replication slave on . to slave@192.168.1.20 identified by ‘123‘;flush tables with read lock;"

作为slave服务器apenglinux-002的配置

/-- 还原从master上传过来的数据库-- /
[root@apenglinux-002 ~]# mysql -uroot -p123456 < db1_all.sql
/ -- 配置my.cnf-- /
validate_password=off
log-bin=apenglinux-002.cn
server-id=90
binlog-do-db=db1
binlog-ignore-db=mysql
/-- 重启mysql--/
[root@apenglinux-002 ~]# systemctl restart mysqld
/ -- 停止slave,指定主服务器的ip,user,password,log_file,log_pos,开启slave-- /
[root@apenglinux-002 ~]# mysql -uroot -p123456 -e "stop slave;change master to master_host=‘192.168.1.10‘,master_port=3306,master_user=‘slave‘,master_password=‘123‘,master_log_file=‘apenglinux-001.000001‘,master_log_pos=449;start slave;"
/ -- 去主服务器上开启解表操作 -- /
[root@apenglinux-001 ~]# mysql -uroot -p123456 -e ‘unlock tables;‘
/ -- 查看slave的状态 -- /
[root@apenglinux-002 ~]# mysql -uroot -p123456 -e ‘show slave status\G‘
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Last_IO_Errno: 0
Last_SQL_Errno: 0
作为master服务器apenglinux-002.cn的配置
[root@apenglinux-002 ~]# mysql -uroot -p123456 -e ‘grant replication slave on . to slave@192.168.1.10 identified by "123";flush tables with read lock;show master status;‘
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| apenglinux-002.000001 | 449 | db1 | mysql | |
+-----------------------+----------+--------------+------------------+-------------------+
作为slave服务器apenglinux-001.cn的配置
[root@apenglinux-001 ~]# mysql -uroot -p123456 -e ‘stop slave;change master to master_host="192.168.1.20",master_port=3306,master_user="slave",master_password="123",master_log_file="apenglinux-002.000001",master_log_pos=449;start slave;‘
去apenglinux-002.cn 上解锁
[root@apenglinux-002 ~]# mysql -uroot -p123456 -e ‘unlock tables;‘
/ -- 查看slave的状态 --/
[root@apenglinux-001 ~]# mysql -uroot -p123456 -e ‘show slave status\G‘
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Last_IO_Errno: 0
Last_SQL_Errno: 0
此时 apenglinux-001与apenglinux-002两台机器互为主从了。
测试:
/ -- 在apenglinux-001.cn上增加一条记录,在apenglinux-002 上查看-- /
[root@apenglinux-001 ~]# mysql -uroot -p123456 -e ‘insert into db1.t1(name)values("aa");select * from db1.t1;‘
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
| 4 | aa |
+----+----------+

[root@apenglinux-002 ~]# mysql -uroot -p123456 -e ‘select * from db1.t1;‘
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
| 3 | wangwu |
| 4 | aa |
+----+----------+

/ -- 在apenglinux-002.cn上删除两条记录,在apenglinux-001上查看-- /
[root@apenglinux-002 ~]# mysql -uroot -p123456 -e ‘delete from db1.t1 limit 2;select * from db1.t1;‘
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+--------+
| id | name |
+----+--------+
| 3 | wangwu |
| 4 | aa |
+----+--------+

[root@apenglinux-001 ~]# mysql -uroot -p123456 -e ‘select * from db1.t1;‘
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+--------+
| id | name |
+----+--------+
| 3 | wangwu |
| 4 | aa |
+----+--------+

MySQL双向主从复制

标签:data   建库   art   incr   str   into   auto   set   port   

人气教程排行