使用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/mysql.conf.d:/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/mysql.conf.d:/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的就百度,我就不復制過來了 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM