docker部署mysql集群
时间: 2023-11-09 14:05:07 浏览: 126
要部署Docker容器搭建MySQL集群,你可以按照以下步骤进行操作:
1. 首先,确保已经在你的电脑上安装了Docker和MySQL。
2. 创建一个主数据库容器(master):
使用以下命令进入容器:
```
docker exec -it <container_id> /bin/bash
```
创建容器的代码如下:
```
docker run -id \
--name=mysql_master \
-p 3307:3306 \
-v $PWD/master/conf:/etc/mysql/conf.d \
-v $PWD/master/logs:/logs \
-v $PWD/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
```
这将创建一个名为mysql_master的容器,并映射到本地的端口3307。
可以根据需要修改端口号、挂载路径和密码。
3. 创建从数据库容器(slave):
使用与创建主数据库容器相同的步骤,只需修改容器名称和端口号。
4. 配置主从复制:
在主数据库容器中配置主从复制。具体步骤包括:
- 在主数据库容器中,编辑配置文件/etc/mysql/conf.d/mysql.cnf,添加以下内容:
```
[mysqld]
log-bin=mysql-bin
server-id=1
```
- 重启主数据库容器。
5. 配置从数据库容器:
在从数据库容器中配置从服务器。具体步骤包括:
- 在从数据库容器中,编辑配置文件/etc/mysql/conf.d/mysql.cnf,添加以下内容:
```
[mysqld]
server-id=2
```
- 重启从数据库容器。
6. 在主数据库容器中创建复制用户:
使用以下命令进入主数据库容器:
```
docker exec -it <master_container_id> /bin/bash
```
进入MySQL控制台后,执行以下命令创建复制用户:
```
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
```
记下Master_Log_File和Read_Master_Log_Pos的值,稍后在从数据库容器中使用。
7. 在从数据库容器中配置主从复制:
使用以下命令进入从数据库容器:
```
docker exec -it <slave_container_id> /bin/bash
```
进入MySQL控制台后,执行以下命令配置主从复制:
```
CHANGE MASTER TO
MASTER_HOST='<master_ip>',
MASTER_PORT=3306,
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='<master_log_file>',
MASTER_LOG_POS=<read_master_log_pos>;
START SLAVE;
SHOW SLAVE STATUS\G;
```
将上述命令中的<master_ip>替换为主数据库的IP地址,<master_log_file>和<read_master_log_pos>替换为在主数据库容器中获取的Master_Log_File和Read_Master_Log_Pos的值。
至此,你已成功部署了Docker容器搭建MySQL集群。
阅读全文