docker mysql主从 加载数据卷配置
时间: 2023-11-14 11:06:25 浏览: 45
要将MySQL配置为主从复制并使用Docker加载数据卷,你可以按照以下步骤进行操作:
1. 创建一个用于主库的MySQL容器:
```
docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql:tag
```
请将`<root_password>`替换为你想要设置的实际root密码,并将`tag`替换为所需的MySQL版本。
2. 创建一个用于从库的MySQL容器:
```
docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql:tag
```
同样,请将`<root_password>`替换为你想要设置的实际root密码,并将`tag`替换为所需的MySQL版本。
3. 将主库的数据目录挂载到数据卷中:
```
docker run --name mysql-master -v /path/to/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql:tag
```
将`/path/to/master`替换为你希望挂载数据目录的实际路径。
4. 将从库的数据目录挂载到数据卷中:
```
docker run --name mysql-slave -v /path/to/slave:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql:tag
```
将`/path/to/slave`替换为你希望挂载数据目录的实际路径。
5. 在主库中启用二进制日志。在主库容器中执行以下命令:
```
docker exec -it mysql-master mysql -uroot -p<root_password> -e "SET GLOBAL binlog_format = 'ROW'; FLUSH TABLES WITH READ LOCK;"
```
确保将`<root_password>`替换为你之前设置的实际root密码。
6. 获取主库的二进制日志文件名和位置。在主库容器中执行以下命令:
```
docker exec -it mysql-master mysql -uroot -p<root_password> -e "SHOW MASTER STATUS;"
```
记下显示的binlog文件名和位置。
7. 在从库中配置主从复制。在从库容器中执行以下命令:
```
docker exec -it mysql-slave mysql -uroot -p<root_password> -e "CHANGE MASTER TO MASTER_HOST='<master_host>', MASTER_USER='<replication_user>', MASTER_PASSWORD='<replication_password>', MASTER_LOG_FILE='<binlog_file>', MASTER_LOG_POS=<binlog_position>;"
```
请将`<master_host>`替换为主库的IP地址或主机名,将`<replication_user>`和`<replication_password>`替换为配置主从复制所需的实际复制用户和密码。将`<binlog_file>`和`<binlog_position>`替换为之前记录的主库的binlog文件名和位置。
8. 启动从库的复制。在从库容器中执行以下命令:
```
docker exec -it mysql-slave mysql -uroot -p<root_password> -e "START SLAVE;"
```
确保将`<root_password>`替换为之前设置的实际root密码。
现在,你的Docker容器中的MySQL主从复制已经配置完成,并且数据卷已经加载。请确保在配置和操作过程中使用合适的用户名和密码进行替换,并根据实际情况调整命令中的路径和其他参数。