docker搭建mysql主从
时间: 2023-10-14 09:15:44 浏览: 123
mysql主从搭建
1. 准备工作
- 安装Docker
- 新建两个目录:`master`和`slave`,用于存放主从数据库的数据
2. 创建MySQL容器
- 创建主库容器
```
docker run --name mysql-master -v /path/to/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
```
- 创建从库容器
```
docker run --name mysql-slave -v /path/to/slave:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
```
注意:`/path/to/master`和`/path/to/slave`是本地文件系统中的目录,用于存放主从数据库的数据。`123456`是MySQL的root密码,可以根据需要修改。
3. 配置主库
- 进入主库容器
```
docker exec -it mysql-master /bin/bash
```
- 登录MySQL
```
mysql -uroot -p123456
```
- 创建用于复制的用户
```
CREATE USER 'replication'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;
```
- 查看主库状态
```
SHOW MASTER STATUS;
```
记录下File和Position的值,后面配置从库时需要用到。
4. 配置从库
- 进入从库容器
```
docker exec -it mysql-slave /bin/bash
```
- 登录MySQL
```
mysql -uroot -p123456
```
- 配置从库复制
```
CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='replication', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
START SLAVE;
```
注意:`mysql-master`是主库的容器名称,`replication`是上一步中创建的用于复制的用户,`mysql-bin.000001`和`154`分别是主库状态中的File和Position的值。
- 查看从库状态
```
SHOW SLAVE STATUS\G
```
如果Slave_IO_Running和Slave_SQL_Running都是`Yes`,则说明配置成功。
5. 测试主从同步
在主库中创建一个测试数据库和表,并插入一条数据:
```
CREATE DATABASE test;
USE test;
CREATE TABLE t (id INT, name VARCHAR(20));
INSERT INTO t VALUES (1, 'test');
```
在从库中查询该表:
```
USE test;
SELECT * FROM t;
```
可以看到从库中也有刚刚插入的数据,说明主从同步成功。
6. 总结
以上就是使用Docker搭建MySQL主从的步骤,需要注意的是,如果主库或从库的容器重启或者删除后再次创建,需要重新配置从库复制。
阅读全文