docker配置mysql主从
时间: 2023-10-22 10:29:42 浏览: 107
为了配置MySQL的主从复制,你需要按照以下步骤进行操作:
1. 启动两个MySQL容器,一个作为主服务器,另一个作为从服务器。你可以使用Docker命令或Docker Compose来启动容器。
2. 在主服务器上创建一个用于复制的MySQL用户,并授予适当的权限。你可以使用以下命令登录到主服务器的MySQL容器中:
```
docker exec -it <主服务器容器ID> mysql -uroot -p
```
然后运行以下SQL语句创建一个复制用户:
```sql
CREATE USER '<复制用户名>'@'%' IDENTIFIED WITH mysql_native_password BY '<密码>';
GRANT REPLICATION SLAVE ON *.* TO '<复制用户名>'@'%';
FLUSH PRIVILEGES;
```
注意:将`<复制用户名>`替换为你想要使用的复制用户名,并设置一个安全的密码。
3. 在主服务器上编辑MySQL配置文件。找到`my.cnf`文件并添加以下配置:
```cnf
# 启用二进制日志记录
log-bin=mysql-bin
server-id=1
```
4. 重启主服务器容器以使配置生效。
5. 进入从服务器容器,并编辑`my.cnf`配置文件。添加以下配置:
```cnf
server-id=2
```
6. 重启从服务器容器以使配置生效。
7. 在从服务器上配置主从复制连接。使用以下命令登录到从服务器的MySQL容器中:
```
docker exec -it <从服务器容器ID> mysql -uroot -p
```
运行以下SQL语句配置主从复制连接:
```sql
CHANGE MASTER TO MASTER_HOST='<主服务器IP地址>',
MASTER_USER='<复制用户名>',
MASTER_PASSWORD='<密码>',
MASTER_LOG_FILE='mysql-bin.000001', -- 这里的日志文件名可能需要根据实际情况修改
MASTER_LOG_POS=<日志位置>; -- 这里的日志位置可能需要根据实际情况修改
START SLAVE;
```
注意:将`<主服务器IP地址>`替换为你的主服务器的IP地址,`<复制用户名>`替换为你之前创建的复制用户名,`<密码>`替换为复制用户的密码,`<日志文件名>`和`<日志位置>`根据你的设置进行替换。
8. 检查从服务器的状态以确保主从复制已成功建立。运行以下SQL语句:
```sql
SHOW SLAVE STATUS\G
```
检查输出中的字段`Slave_IO_Running`和`Slave_SQL_Running`是否都为`Yes`,这表示主从复制已经正常工作。
这样,你就成功配置了Docker中的MySQL主从复制。注意,如果你使用Docker Compose来管理容器,你可以将上述配置步骤添加到你的Compose文件中,以便每次启动容器时自动配置主从复制。
阅读全文