2.10 MySQL-基于Docker的主从复制

1. 场景需求

       今天老板要求 docker 搭建mysql 主从同步,头皮发麻,无从下手,要求:使用docker,并说明使用docker搭建得好处,实现原理,搭建具体过程。

2. 参考答案

      好处:

l   一台服务器可以运行多个docker容器。

l   docker 容器之间相互独立,互不冲突。

l   docker 使用步骤简便。

      具体实现步骤:

  1. 3.   首先基于docker拉取mysql镜像

docker pull mysql:5.7

  1. 4.   使用下载好的镜像,启动主从两个容器

docker run -p 3339:3306 --name mymysql –e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7  # 主

docker run -p 3340:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7  # 从

  1. 5.   配置主从

docker exec -it 627a2368c865 /bin/bash # 进入容器,627a2368c865是容器的id,而mysql-master是容器的名称

apt-get update

apt-get install vim # 在容器中手动安装 vim

  1. 6.   vi my.cnf,进入/etc/mysql目录下,对my.cnf进行编辑

[mysqld]

server-id = 100

log-bin = mysql-bin

service mysql restart                 # 重启mysql

docker start mysql-master # 启动容器

  1. 7.   创建主从所需权限用户

CREATE USER 'slave'@'%' IDENTIFIED BY '123456'  # 创建用户

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'  # 设置权限

  1. 8.   配置从数据库

[mysqld]

server-id = 101

service mysql restart                 # 重启mysql

docker start mysql-master # 启动容器

change master to master_host='172.17.0.2', master_user='slave',           master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 254, master_connect_retry=30;

      这里需要注意的是,有两个参数来自于主库,可以通过主库中运行show master status 查看得到,分别是master_log_file以及master_log_pos

       最终在从库执行show slave status查看从库状态即可。看到IO与SQL线程处于活跃状态即为正常。

 

 

猜你喜欢

转载自www.cnblogs.com/lihouqi/p/12664265.html