频道栏目
首页 > 数据库 > MySQL > 正文
cenos7中利用docker技术实现mysql主从复制功能的方法教程
2018-06-30 14:36:17      个评论    来源:我是一匹狼  
收藏   我要投稿

我这是在一台阿里云服务器上安装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;命令查看日志信息。

点击复制链接 与好友分享!回本站首页
上一篇:使用cmd运行mysql数据库的时候,报错:"不是内部命令也不是可有运行的程序"问题的解决办法
下一篇:2个修改mysql默认引擎问题分析及解决办法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站