mysql 主从复制搭建(基于docker)

  1、准备两个mysql容器(lsy-mysql-master 和 lsy-mysql-slave),并把配置挂载到宿主机

1、创建一个临时的docker容器,把mysql配置拷贝到宿主机;这个命令可以自动去pull镜像
docker run -d --name lsy-mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

2、容器起来之后,用docker cp命令拷贝配置文件到宿主机
docker cp lsy-mysql:/etc/mysql/my.cnf /root/mysql-master-slave-conf/

3、删除这个临时的容器
docker stop lsy-mysql
docker rm lsy-mysql

4、进入/root/mysql-master-slave-conf/目录,根据拷贝的my.cnf创建两个配置master.cnf 和 slave.cnf
cd /root/mysql-master-slave-conf 
cp my.cnf master.cnf
cp my.cnf slave.cnf

5、配置 master.cnf 配置,在最下方加上如下配置
  
# master-conf
  server-id=100
  log_bin=mysql-bin

6、
配置 slave.cnf 配置,在最下方加上如下配置
  # slave conf
  server-id=101

7、根据这两个配置分别启动主从mysql容器。端口分别是 主13306,从13307
docker run -d --name lsy-mysql-master -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -v /root/mysql-master-slave-conf/master.cnf:/etc/mysql/my.cnf mysql
docker run -d --name lsy-mysql-slave -p 13307:3306 -e MYSQL_ROOT_PASSWORD=root -v /root/mysql-master-slave-conf/slave.cnf:/etc/mysql/my.cnf mysql

  

  2、查看master的状态

    用连接工具或者进入master容器的mysql命令行,执行  SHOW MASTER STATUS; 这两个数据后面要用到

  

 

  3、配置slave连接master的信息

    用连接工具或者进入slave容器的mysql命令行,执行

change master to master_host='192.168.5.134', master_port=13306,master_user='root', master_password='root',master_log_file='mysql-bin.000002', master_log_pos=322;
    master_host:主机地址
    master_port:主机端口
    master_user:访问主机的用户名,也可以重新创建一个
    master_log_file:刚才查询master节点返回的 File 字段内容,保存的二进制文件
    master_log_pos: 日志文件的位置

 

 

 

 

  4、查看slave的配置信息,这里我尝试在navicat中查看,但是一直不能格式化。所以就在slave容器里边进行了查看。

show slave status\G;

  

                    

  Slave_IO_Running 代表的是IO线程,负责获取master的binlog日志文件,并保存的自身的relay log。

  Slave_SQL_Running 代表的是读取relay log的线程,负责将保存的日志放到mysql中执行。  

 

  5、然后在master上进行操作,创建库、表、新增删除修改数据,都可以同步到slave数据库了

posted @ 2020-04-27 17:55  张小戳的夏天  阅读(167)  评论(0)    收藏  举报