2个部署在 docker的MySQL服务器,实现主主备份
时间: 2024-05-08 12:17:01 浏览: 17
要实现主主备份,需要在两个部署在docker的MySQL服务器之间建立一个双向同步的复制关系。以下是实现步骤:
1. 创建两个MySQL容器,分别为server1和server2。
2. 在server1和server2中分别创建一个用于复制的用户,例如repl_user,赋予复制权限。
3. 在server1中执行以下命令,设置server1为主服务器,server2为从服务器:
```
CHANGE MASTER TO
MASTER_HOST='server2',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
```
其中,MASTER_LOG_FILE和MASTER_LOG_POS的值需要根据server2的binlog信息进行设置。
4. 在server2中执行以下命令,设置server2为主服务器,server1为从服务器:
```
CHANGE MASTER TO
MASTER_HOST='server1',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
```
同样,MASTER_LOG_FILE和MASTER_LOG_POS的值需要根据server1的binlog信息进行设置。
5. 启动复制过程,在server1和server2中分别执行以下命令:
```
START SLAVE;
```
6. 确认复制已经启动,在server1和server2中分别执行以下命令:
```
SHOW SLAVE STATUS\G
```
如果复制正常工作,应该能看到类似以下输出:
```
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: server2
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 107
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
```
7. 现在,server1和server2之间已经建立了一个双向同步的复制关系。任何一个服务器上的数据更改都会被同步到另一个服务器上,从而实现主主备份。