从实践彻底掌握MySQL的主从复制

目录

一、本次所用结构如图---一主多从+级联:

二、IP。

三、配置M1:

四、从库M1S1:

 五、从库M2配置:

六、 从库M2S1:


一、本次所用结构如图---  一主多从+级联:

从实践彻底掌握MySQL的主从复制_第1张图片

 二、IP。这里M1S1和M1S2一样的,所以就只展示M1S1了。

主机 IP
M1 192.168.127.160
M1S1 192.168.127.161
M2 192.168.127.163
M2S1 192.168.127.162

三、配置M1:

#配置文件
[root@# masterI ~]# vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
log_bin = mysql-bin
server_id = 160
#创建同步用户
M1 [(none)]>grant  replication slave on *.* to 'sync'@'192.168.127.%' identified by 'Sync=12345.';

M1 [(none)]>show grants for 'sync'@'192.168.127.%' ;
+----------------------------------------------------------+
| Grants for [email protected].%                            |
+----------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.127.%' |
+----------------------------------------------------------+
1 row in set (0.00 sec)

#备份数据库用于slave同步
M1 [(none)]>FLUSH TABLES WITH READ LOCK;    #先锁表
[root@masterI ~]# mysqldump -u root -pRoot=12345. -B haxi school > /backup/all_`date +%F`.sql

#将数据传给从库
[root@# masterI ~]# scp /backup/all_2023-07-25.sql 192.168.127.161:/backup/
[email protected]'s password: 
all_2023-07-25.sql                                                      100% 7435     3.1MB/s   00:00    
[root@# masterI ~]# scp /backup/all_2023-07-25.sql 192.168.127.162:/backup/
[email protected]'s password: 
all_2023-07-25.sql                                                      100% 7435     6.2MB/s   00:00    
[root@# masterI ~]# scp /backup/all_2023-07-25.sql 192.168.127.163:/backup/
[email protected]'s password: 
all_2023-07-25.sql                                                      100% 7435     3.5MB/s   00:00

#当完成备份后解锁:
M1 [(none)]>UNLOCK TABLES;

四、从库M1S1:

#配置文件
[root@Node01 ~]# vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
server_id = 161

#将M1已原有的库数据同步到从库 ---其他两个均同
[root@Node01 backup]# mysql -uroot -pRoot=12345. < /backup/all_2023-07-25.sql
[root@Node01 backup]# mysql -uroot -pRoot=12345. -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| haxi               |
| mysql              |
| performance_schema |
| school             |
| sys                |
+--------------------+

#查看主库的二进制文件和position
M1 [(none)]>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000005 |      449 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

#指定主库具体信息
M1S1 [(none)]>stop slave;     #---先停止从库同步
Query OK, 0 rows affected (0.01 sec)

M1S1 [(none)]>change master to
    -> master_host='192.168.127.160',   
    -> master_port=3306,
    -> master_user='sync',
    -> master_password='Sync=12345.',
    -> master_log_file='mysql_bin.000005',
    -> master_log_pos=449;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

M1S1 [(none)]>start slave;        #---开启从库同步
Query OK, 0 rows affected (0.01 sec)

检测slave状况mysql> show slave status \G;

  •  在主库创建一个名为:name1的数据库,到从库查看同步情况。从实践彻底掌握MySQL的主从复制_第2张图片从实践彻底掌握MySQL的主从复制_第3张图片

 五、从库M2配置:

#基本与M1相同,但是M2S2需要从M2同步数据,所以M2需要开启二进制日志文件。
[root@Node03 ~]# vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
log_bin = mysql-bin
server_id = 163log_slave_updates=on     #---表示从服务器将M2将来自主服务器的二进制日志事件写入自己的二进制日志中用于自己的从服务器M2S1进行同步
#需要一个用户用于同步
M2S1 [(none)]>grant  replication slave on *.* to 'sync'@'192.168.127.%' identified by 'Sync=12345.';
  •   在主库创建一个名为:name1的数据库,到从库查看同步情况从实践彻底掌握MySQL的主从复制_第4张图片

从实践彻底掌握MySQL的主从复制_第5张图片

六、 从库M2S1:

[root@Node02 ~]# vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
server_id = 162

M2 [(none)]>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000001 |      449 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


M2S1 [(none)]>stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

M2S1 [(none)]>change master to
    -> master_host='192.168.127.163',   
    -> master_port=3306,
    -> master_user='sync',
    -> master_password='Sync=12345.',
    -> master_log_file='mysql_bin.000001',
    -> master_log_pos=449;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

M2S1 [(none)]>start slave;
Query OK, 0 rows affected (0.01 sec)

检查slave状况: 

  • 四个主机数据库不完全一致是因为我在配置过程中是分开配置检查;
  • 但是通过最后的主库创建的数据库name3可以看到所有从库都能够实现同步 !

从实践彻底掌握MySQL的主从复制_第6张图片 

 

你可能感兴趣的:(数据库,mysql,数据库,运维)