使用docker配置mysql主从

1.获取mysql镜像

  docker pull mysql:5.7

2.运行mysql镜像复制配置文件

  docker run  -it  --rm mysql:5.7 /bin/bash

  # 查看容器id

  docker ps

  # 复制默认配置文件到宿主机

  docker cp 容器di:/etc/mysql/mysql.conf.d  ./

3.修改配置文件

  cp -r  mysql.conf.d mysql-master

  cp -r  mysql.conf.d mysql-slave

  修改mysql-master中的mysql.conf,在[mysqld]中添加两句:    

    server-id=1     # 主机id要比从机小

    log-bin=/var/log/mysql/mysql-bin.log

  修改mysql-slave中的mysql.conf,在[mysqld]中添加两句:        

    server-id=2

    general_log = 0

4.创建两个空文件夹

  为了防止mysql容器意外停止导致数据丢失,在本地创建目录和容器中的数据目录共享

  mkdir master-db

  mkdir slave-db

5.分别运行两个容器

  # mysql-master和master-db根据自己本地路径修改

  docker run -d -v /mysql-master:/etc/mysql/mysql.conf.d -v /master-db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql:5.7

  docker run -d -v /mysql-slave:/etc/mysql/mysql.conf.d -v /slave-db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 mysql:5.7

6.连接数据库

  mysql -uroot -p123456 -h 127.0.0.1 --port=3307

  mysql -uroot -p123456 -h 127.0.0.1 --port=3308

  master配置:

  # 创建从机账号

  GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';

   # 刷新权限  

  FLUSH PRIVILEGES;

   # 展示主机的二进制日志信息

  SHOW MASTER STATUS;
 
 slave配置:
   
change master to master_host='172.17.0.2', master_port=3306, master_user='slave', master_password='slave',master_log_file='mysql-bin.000003', master_log_pos=582;

   172.17.0.2的获取是使用的docker network ls然后检查使用 docker network inspect bridge的id得到的,mysql-bin.000003和582是主机的二进制日志信息里的

   # 开启从机服务

   start slave;

   # 展示从机服务状态

   show slave status \G
  
   如果Slave_IO_Running:Yes和
Slave_SQL_Running:Yes都是yes表示配置成功

   如果有一个不是Yes的就百度,我就不复制过来了 

 

猜你喜欢

转载自www.cnblogs.com/AI-Future/p/12107043.html
今日推荐