Welcome 微信登录

首页 / 数据库 / MySQL / MySQL 5.7 Docker 主从复制架构搭建

环境版本:MySQL :  5.7.13Docker : 1.11.2CentOS : 7.1 1.先在两个物理机上分别安装两个MySQL.命令如下docker pull mysql:5.7.13docker run --name anuo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz.00JK -d mysql:5.7.132.在主库上创建一个复制账户GRANT REPLICATION SLAVE ON *.* TO "rep1"@"192.168.2.103" IDENTIFIED BY "qaz.00JK";复制账户为: rep1指定从库的IP必须为: 192.168.2.103 复制密码为: qaz.00JK3.修改主库的配置文件 (麻烦,应该有更方便的修改方式)3.1先从docker拷贝配置文件到主机/root 目录: docker cp anuo-mysql:/etc/mysql/my.cnf /root3.2在主机打开 my.cnf , 在 [mysqld] 节点最后加上log-bin=mysql-binserver-id=13.3 再把此文件上传到docker mysql 里面覆盖docker cp /root/my.cnf  anuo-mysql:/etc/mysql/my.cnf3.4 重启 mysql 的docker , 让配置生效docker restart anuo-mysql4. 修改从库的配置文件跟第三步一样, 唯一不同是server-id=25. 开始备份, 在主库执行以下命令, 让主库所有表置于只读不能写的状态, 这样达到主从库数据一致性FLUSH TABLES WITH READ LOCK;6. 将主库的数据库备份在从库还原用navicat for mysql 很方便操作7. 从库还原后, 释放主库的读锁, 这样主库恢复写权限unlock tables;8.配置从库连接主库, 在从库上执行 CHANGE MASTER TO MASTER_HOST="192.168.2.108",MASTER_PORT=3306,MASTER_USER="rep1",MASTER_PASSWORD="qaz.00JK",MASTER_LOG_FILE="mysql-bin.000002",MASTER_LOG_POS=898; 最后两项MASTER_LOG_FILE 和  MASTER_LOG_POS在主库执行 : SHOW MASTER STATUS; 命令可以取得对应的字段是 File 和 Position 9. 在从库启动 slave 线程开始同步START SLAVE; 10.在从库 查看同步状态show slave status;如果看到 Slave_Io_State 字段有 :Waiting for master to send event ... 那就成功了 ! ! !本文永久更新链接地址