centos7 中利用docker技术实现mysql主从复制

我这是在一台阿里云服务器上安装docker,启动两个mysql容器,实现mysql主从复制功能。

一、环境准备:
MySQL : 5.7
Docker : 1.13.1
CentOS : 7

二、启动mysql容器
上述文章讲过了如何安装docker和下载mysql镜像,下面我们分别启动两个容器,一个主,一个从
docker run –name master -p 8091:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/wy/yb/docker/sharedir/mysql57:/var/lib/mysql -d docker.io/mysql:5.7

docker run –name slave -p 8092:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/wy/yb/docker/sharedir/mysql57slave1:/var/lib/mysql -d docker.io/mysql:5.7

三、在主机上修改配置文件:vim /etc/my.cnf ,该文件没有就会自动新建。
内容如下:
[mysqld]
log-bin=mysql-bin
server-id=1

在从机上修改配置文件:vim /etc/my.cnf ,该文件没有就会自动新建。
内容如下:
[mysqld]
log-bin=mysql-bin
server-id=2

备注:在配置文件中也可以增加如下:
binlog-do-db=repl #需要同步的数据库,如果没有本行表示同步所有的数据库
binlog-ignore-db=mysql #被忽略的数据

四、用户访问权限
在主机上运行mysql -uroot -p123456,在mysql命令窗口中执行
grant replication slave on . to ‘root’@’172.17.0.%’ identified by ‘root’;
flush privileges;
备注:表示172.17.0.%段的IP使用root帐户可以访问,可以自己新建一个mysql帐户,表示该帐户只有备份的权限

五、退出容器并重启
退出容器命令:Ctrl+D
重启容器:docker restart name

六、登录MySQL状态下,查看主服务器状态
show master status;

File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000001 | 852 |

七、配置从库连接主库, 在从库上执行
在从机上执行mysql -uroot -p123456,在mysql命令窗口中执行

CHANGE MASTER TO
MASTER_HOST=’172.17.0.2’,
MASTER_PORT=3306,
MASTER_USER=’root’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mysql-bin.000001’,
MASTER_LOG_POS=852;

备注:上面这个语句理论上是没有问题,但因为我是在一个服务器启动的两个docker,上面这个语句执行时主从功能失败,下面这个语句才可以,下面这个语句使用的是容器映射到的宿主机地址和端口。

CHANGE MASTER TO
MASTER_HOST=’39.108.216.11’,
MASTER_PORT=8091,
MASTER_USER=’root’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mysql-bin.000001’,
MASTER_LOG_POS=852;

最后两项
MASTER_LOG_FILE 和 MASTER_LOG_POS
在主库执行 : SHOW MASTER STATUS; 命令可以取得
对应的字段是 File 和 Position

八、在从库启动 slave 线程开始同步
START SLAVE;

在从库 查看同步状态
show slave status;
show slave status\G;
这里写图片描述

备注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。

如需想停止同步功能,则登录MySQL状态下,停止同步命令:

stop slave;


至此全部完成。
自己操作主从数据库试下功能,当数据库主从复制失败时,可通过进入从机容器的mysql端口执行show slave status\G;命令查看日志信息。

猜你喜欢

转载自blog.csdn.net/yuanbin4311/article/details/80853938