1.拉取MySQL5.7镜像到本地
1 | docker pull mysql:5.7 |
2.准备MySQL的配置文件
MySQL5.7安装之后的默认配置文件在/etc/mysql/my.cnf,而自定义的配置文件一般放在/etc/mysql/config.d这个路径下。
在本地host主机上自定义的某个目录下(如/data/mysql/conf/),先创建两个文件master.conf和slave.conf,分别用于配置主从两个节点。
- /data/mysql/conf/master.conf
1
2
3
4
5
6
7
8
9
10
11[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin = log #开启二进制日志,用于从节点的历史复制回放
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
server_id = 1 #需保证主库和从库的server_id不同, 假设主库设为1
replicate-do-db=fileserver #需要复制的数据库名,需复制多个数据库的话则重复设置这个选项
- /data/mysql/conf/slave.conf
1
2
3
4
5
6
7
8
9
10
11[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
log_bin = log #开启二进制日志,用于从节点的历史复制回放
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
server_id = 2 #需保证主库和从库的server_id不同, 假设从库设为2
replicate-do-db=fileserver #需要复制的数据库名,需复制多个数据库的话则重复设置这个选项
3. Docker分别运行MySQL主/从两个容器
将mysql主节点运行起来
1 | mkdir -p /data/mysql/datam |
运行参数说明:
1 | –name mysql-master: 容器的名称设为mysql-master |
将mysql从节点运行起来
1
2mkdir -p /data/mysql/datas
docker run -d --name mysql-slave -p 13307:3306 -v /data/mysql/conf/slave.conf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /data/mysql/datas:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
运行参数说明:
1 | –name mysql-slave: 容器的名称设为mysql-slave |
4.登录MySQL主节点配置同步信息
宿主机安装mysql客户端
1 | sudo apt-get install -y mysql-client |
登录mysql
1 | # 192.168.1.xx 是你本机的内网ip |
在mysql client中执行 (创建用于访问主节点来同步数据的帐号)
1 | mysql> create user slave identified by 'slave'; |
再获取status, 得到类似如下的输出:
1 | mysql> show master status\G; |
5.登录MySQL从节点配置同步信息
查看mysql master的容器独立ip地址
1
2docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master
# 比如输出得到: 172.17.0.2另开一个tab登录mysql
1
2# 192.168.1.xx 是你本机的内网ip
mysql -u root -h 192.168.1.xx -P13307 -p123456在mysql client中操作:
1 | mysql> stop slave; |
再获取status, 正常应该得到类似如下的输出:
1 | mysql> show slave status \G; |
到这时说明主从配置已经完成,可以尝试在主mysql的fileserver数据库里建表操作下,然后在从节点上检查数据是否已经同步过来。
几个指令
sudo netstat -antup -antup | grep docker
查看docker占用端口ifconfig
查看本机ip