docker mysql 主从
2019-02-23 本文已影响118人
銭兎孑
服务器: centos7.6
一、 准备开始
1.安装 docker
yum install docker
- 拉取mysql镜像
docker pull mysql
- 启动一个镜像,从镜像中拿到my.cnf
docker run –name mysql_test -d mysql
docker cp mysql_test:/etc/mysql /root/master
- 删掉这个测试镜像实例了。
docker stop mysql_test
docker rm mysql_test
二、环境搭建
- 首先,复制/root/master三份,分别命名为master slave1 slave2 ,编辑my.conf 增加以下参数 , server-id 不能重复
[mysqld]
log-bin = mysql-bin
server-id = 10086
- 启动一个实例,作为主库。
docker run –name mysql_master -e MYSQL_ROOT_PASSWORD=123456 -v /root/master:/etc/mysql -p 3306:3306 -d mysql
3.查看主库ip
docker inspect mysql_master | grep IPAddress
4.试图登录mysql
mysql -uroot -p123456 -h 172.17.0.2
5.查看并记录主库信息
show master status;
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000003 | 437 | | | |
+——————+———-+————–+——————+——————-+
6.启动新的镜像作为从库
docker run –name mysql_slave1 -e MYSQL_ROOT_PASSWORD=123456 -v /root/slave1:/etc/mysql -p 3311:3306 -d mysql
docker run –name mysql_slave2 -e MYSQL_ROOT_PASSWORD=123456 -v /root/slave2:/etc/mysql -p 3312:3306 -d mysql
7.登录到从库1
mysql -uroot -p123456 -h 172.17.0.3
8.配置从库,此处简化,未在主库中配置授权账户,直接使用了root。437为第9部查询出来结果
mysql> change master to
master_host=’172.17.0.2′,master_user=’root’,master_password=’123456′,master_log_file=’mysql-bin.000003′,master_log_pos=437;
9.启用从库进程
mysql> start slave;
10.查看从库状态
show slave status\G
若信息中Slave_IO_Running和Slave_SQL_Running全部是yes,则说明配置成功。若失败,信息中会有具体提示。
11.重复步骤8到10,将从库2也和主库同步。
提示:
若报错(Authentication plugin ‘caching_sha2_password’ cannot be loaded)
, 执行下面代码
1.首先进入容器中
docker exec -it mysql_master /bin/bash
2.登录到mysql
mysql -uroot -p123456
3.修改mysql验证方式
mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;