当前位置:Gxlcms > 数据库问题 > docker mysql5.7主从复制搭建

docker mysql5.7主从复制搭建

时间:2021-07-01 10:21:17 帮助过:16人阅读

docker搭建?

  • 资源有限
  • 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐
  • 一台机器上可以运行多个Docker容器
  • docker容器之间相互独立,有独立ip,互不冲突
  • docker使用步骤简便,启动容器在秒级别

二、docker搭建实操

     1、拉取docker mysql:5.7的镜像

  1. docker pull mysql:<span style="color: #800080;">5.7</span>

     2、查看镜像

  1. docker images

  3、启动容器与查看(这里我用3339和3340端口分别主从)

  1. docker run -itd --name=mysql-<span style="color: #800080;">5.7</span>-master -p <span style="color: #800080;">3339</span>:<span style="color: #800080;">3306</span> -e MYSQL_ROOT_PASSWORD=<span style="color: #800080;">123456</span> mysql:<span style="color: #800080;">5.7</span><span style="color: #000000;">
  2. docker run </span>-itd --name=mysql-<span style="color: #800080;">5.7</span>-slave -p <span style="color: #800080;">3340</span>:<span style="color: #800080;">3306</span> -e MYSQL_ROOT_PASSWORD=<span style="color: #800080;">123456</span> mysql:<span style="color: #800080;">5.7<br><img alt="技术图片" src="https://img.gxlcms.com//Uploads-s/new/2020-10-08-qlqqti/20200626164011738800.png" loading="lazy"></span>

    4、容器安装vim

        技术图片

  1. 依次执行<br> apt-<span style="color: #0000ff;">get</span><span style="color: #000000;"> update
  2. apt</span>-<span style="color: #0000ff;">get</span> install vim

    5、主从搭建配置

 

 

      1) 配置master服务器:

  1. docker exec -it mysql-<span style="color: #800080;">5.7</span>-<span style="color: #000000;">master
  2. vim </span>/etc/mysql/<span style="color: #000000;">my.cnf 加入以下配置
  3. [mysqld]
  4. ## 同一局域网内注意要唯一
  5. server</span>-id=<span style="color: #800080;">100</span><span style="color: #000000;">
  6. ## 开启二进制日志功能,可以随便取(关键)
  7. log</span>-bin=mysql-bin    

              service mysql restart重启数据库,使配置生效并重新启动容器:docker start mysql-5.7-master

  1. <span style="color: #000000;">再进入master:
  2. 创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
  3. CREATE USER </span><span style="color: #800000;">‘</span><span style="color: #800000;">slave</span><span style="color: #800000;">‘</span>@<span style="color: #800000;">‘</span><span style="color: #800000;">%</span><span style="color: #800000;">‘</span> IDENTIFIED BY <span style="color: #800000;">‘</span><span style="color: #800000;">123456</span><span style="color: #800000;">‘</span><span style="color: #000000;">;
  4. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON </span>*.* TO <span style="color: #800000;">‘</span><span style="color: #800000;">slave</span><span style="color: #800000;">‘</span>@<span style="color: #800000;">‘</span><span style="color: #800000;">%</span>

      2) 配置master服务器:

  1. docker exec -it mysql-<span style="color: #800080;">5.7</span>-slave /bin/<span style="color: #000000;">bash
  2. vim </span>/etc/mysql/<span style="color: #000000;">my.cnf
  3. ## 设置server_id,注意要唯一
  4. server</span>-id=<span style="color: #800080;">101</span><span style="color: #000000;">
  5. ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
  6. log</span>-bin=mysql-slave-<span style="color: #000000;">bin
  7. ## relay_log配置中继日志
  8. relay_log</span>=edu-mysql-relay-bin

             service mysql restart重启数据库,使配置生效,并重新启动容器:docker start mysql-5.7-slave

   3) 连接Master和Slave

         master: 进入master容器

  1. mysql -uroot -<span style="color: #000000;">p123456
  2. show masterstatus;</span>

技术图片

 

            slave:进入slave    

  1. change master to master_host=<span style="color: #800000;">‘</span><span style="color: #800000;">172.17.0.2</span><span style="color: #800000;">‘</span>, master_user=<span style="color: #800000;">‘</span><span style="color: #800000;">slave</span><span style="color: #800000;">‘</span>, master_password=<span style="color: #800000;">‘</span><span style="color: #800000;">123456</span><span style="color: #800000;">‘</span>, master_port=<span style="color: #800080;">3306</span>, master_log_file=<span style="color: #800000;">‘</span><span style="color: #800000;">mysql-bin.000001</span><span style="color: #800000;">‘</span>, master_log_pos=<span style="color: #800080;">0</span>;

 Slave 中的mysql终端执行:show slave status \G;用于查看主从同步状态。

技术图片

正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave开启主从复制过程,然后再次查询主从同步状态show slave status \G;

 

如果错误出现:

技术图片

 

 

切换主库,show master status;

技术图片

从库切换master_log_pos= 主库上面Position的值改为0;

  1. change master to master_host=<span style="color: #800000;">‘</span><span style="color: #800000;">172.17.0.2</span><span style="color: #800000;">‘</span>, master_user=<span style="color: #800000;">‘</span><span style="color: #800000;">slave</span><span style="color: #800000;">‘</span>, master_password=<span style="color: #800000;">‘</span><span style="color: #800000;">123456</span><span style="color: #800000;">‘</span>, master_port=<span style="color: #800080;">3306</span>, master_log_file=<span style="color: #800000;">‘</span><span style="color: #800000;">mysql-bin.000001</span><span style="color: #800000;">‘</span>, master_log_pos=<span style="color: #800080;">0</span><span style="color: #000000;">;
  2. 然后:<br>start slave
  3. show slave status \G;</span>

技术图片

 

   4) 验证主从:

技术图片

 

 

 

              

      

 

docker mysql5.7主从复制搭建

标签:终端   user   创建   p12   搭建配置   create   font   数据库   vim   

人气教程排行