docker安装mysql主从,docker版本:18.09.2;mysql版本8.0.15.
首先准备环境:Docker已安装mysql镜像(docker pull mysql:8.0.15)
1.在linux上创建my.cnf和data目录
创建mysql-master配置文件
mkdir /setup/docker/mysql/mysql-master/conf
vim /setup/docker/mysql/mysql-master/conf/my.cnf
mkdir /setup/docker/mysql/mysql-master/data
master的my.cnf内容为:
[mysqld]
server-id=999
log-bin=mysql-bin
创建mysql-slave配置文件
mkdir /setup/docker/mysql/mysql-slave-01/conf
vim /setup/docker/mysql/mysql-slave-01/conf/my.cnf
mkdir /setup/docker/mysql/mysql-slave-01/data
slave的my.cnf内容为(注意:id不能重复):
[mysqld]
server-id=2
2.创建镜像实例
docker run -p 3306:3306 --name mysql-master -v /setup/docker/mysql/mysql-master/conf:/etc/mysql/conf.d -v /setup/docker/mysql/mysql-master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=kang -d mysql:8.0.15
docker run -p 3307:3306 --name mysql-slave-01 -v /setup/docker/mysql/mysql-slave-01/conf:/etc/mysql/conf.d -v /setup/docker/mysql/mysql-slave-01/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=kang mysql:8.0.15
其中两个目录挂载分别为:
①/etc/mysql/conf.d为mysql8.0.15的默认配置文件目录,所以将自定义配置文件目录挂载到docker容器的此目录;
②/var/lib/mysql为mysql8.0.15的默认数据存放目录,所以将data目录挂载到此目录。
查看镜像实例是否启动成功:
docker ps -a
3.登录mysql
① 首先进入docker容器命令行:docker exec -it mysql-master /bin/bash
② 登录mysql:mysql -u root -p
4.配置master
进入mysql命令操作:
① 创建主从复制用户并授权(注意:授权ip应该为docker容器的ip,授权后测试在从库所在docker容器中能否登陆成功)
create user 'replication'@'172.17.0.1' identified with mysql_native_password by 'kang';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'172.17.0.1';
flush privileges;
② 查看主机日志状态
show master status\G;
(注意:如果日志不是初始状态可能主从同步会不成功,可以使用flush logs刷新日志状态,刷新之后重新生成日志文件)
5.配置slave
进入mysql命令操作:
① 设置登录主节点参数
CHANGE MASTER TO
MASTER_HOST='192.168.119.137',
MASTER_USER='replication',
MASTER_PASSWORD='kang',
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=155;
② 查看从机状态:
show slave status\G;
③ 开启主从同步(注意:关闭是stop slave,如果改变同步参数需先关闭)
start slave;
④ 再查看主从同步状态
show slave status\G;