一 创建MySql Master服务镜像
1.创建目录及文件mysql-master并进入
mkdir mysql-master cd mysql-master touch Dockerfile touch mysql.cnf |
2.编辑相关文件
FROM mysql:latest COPY mysql.cnf /etc/mysql/conf.d/mysql.cnf |
[mysqld] log-bin=mysql-bin #[必须]启用二进制日志 server-id=1 #设置为主机ip |
3.构建镜像
docker build -t mysql-master . |
4.启动镜像
docker run --privileged=true -p 3308:3306 --name mysql-master -v /var/docker/mysql/data-master/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql-master |
5.连接到启动的MySQL服务,执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'repl_dev'@'%' IDENTIFIED BY 'repl_dev'; |
6.查看从节点连接参数
FLUSH TABLES WITH READ LOCK; UNLOCK TABLES; SHOW MASTER STATUS; --file和position参数要用于从节点配置 |
二 创建从节点镜像
1.创建目录及文件mysql-master并进入
mkdir mysql-slave cd mysql-slave touch Dockerfile touch mysql.cnf |
2.编辑相关文件
FROM mysql:latest COPY mysql.cnf /etc/mysql/conf.d/mysql.cnf |
[mysqld] #log-bin=mysql-bin #[必须]启用二进制日志 server-id=2 #设置为主机ip relay-log=slave-relay-bin |
3.构建镜像
docker build -t mysql-slave . |
4.启动镜像
docker run --privileged=true -p 3308:3306 --name mysql-slave -v /var/docker/mysql/data-slave /:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql-slave |
5.连接到启动的MySql服务,执行以下命令(其中各个参数值需要根据步骤一种的相关配置来进行设置)
change master to master_host='10.10.10.221', master_port=3308, master_user='repl_dev', master_password='repl_dev', master_log_file='mysql-bin.000003', master_log_pos=433; START SLAVE; |
6.查看并测试
show slave status |
如果Slave_IO_State字段的值为 Waiting for master to send event
此时,连接Master服务器,创建数据库,数据表,并插入数据,查询刷新slave节点,可以看到数据已经同步过来了