【Docker】基于Centos7开启MySQL主从复制 我就是我 2024-04-03 11:02 22阅读 0赞 本文基于已经下载完毕Docker的选手。 安装完毕Docker之后使用pull命令对mysql进行拉取。 docker pull mysql:5.7.25 拉取完毕之后使用如下命令查看是否拉取成功 docker images ![在这里插入图片描述][1559d0395aae4847b3870dfb28a489c8.png] 安装完毕镜像之后,就可以开始启动mysql了。 这里需要知道的一点就是镜像启动之后变为的容器,如果没有进行数据卷备份,那么容器被完毕之后你mysql里的数据自动就丢失了,所以我们这里的mysql的主从复制将基于docker的数据卷技术。 首先使用如下命令配置主数据库,直接在控制台输入即可。 这里无需担心宿主机里没有mydata这个文件夹,docker的数据卷命令会自动创建不存在的文件夹。 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 ![在这里插入图片描述][3aafdb70b4f1425c849b35f87bc7cb91.png] 上面的命令输入完毕之后,就已经建立好了宿主机和docker容器mysql里的文件映射关系,我们直接在宿主机里进行文件的配置会直接映射到mysql中。 然后使用如下命令创建mysql的配置文件 ![在这里插入图片描述][0a59a1b7ec56406f8ceaa20763d9693b.png] vim /mydata/mysql-master/conf/my.cnf 然后在该配置文件中输入如下配置 [mysqld] ## 设置server_id,同一局域网中需要唯一 server_id=101 ## 指定不需要同步的数据库名称 binlog-ignore-db=mysql ## 开启二进制日志功能 log-bin=mall-mysql-bin ## 设置二进制日志使用内存大小(事务) binlog_cache_size=1M ## 设置使用的二进制日志格式(mixed,statement,row) binlog_format=mixed ## 二进制日志过期清理时间。默认值为0,表示不自动清理。 expire_logs_days=7 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。 ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致 slave_skip_errors=1062 保存退出后就可以重启mysql容器了 docker restart mysql-master ![在这里插入图片描述][e754bb55f798466e8f5664d983d99505.png] 重启完毕容器之后进入容器进行从机登录用户的创建。 ![在这里插入图片描述][59fae97a61e14d458495e6c0f2c3fd2c.png] ![在这里插入图片描述][cdc562156b654a8cb1e215fcbcde1366.png] docker exec -it mysql-master bash mysql -u root -p root # 登录mysql create user 'slave'@'%' identified by '123456'; grant replication slave,replication client on *.* to 'slave'@'%'; 到此位置主机配置完毕,开始从机的配置。 与主机的配置差不多,从机的配置也是先配置数据卷 docker run -p 3308:3306 --name mysql-slave \ -v /mydata/mysql-slave/log:/var/log/mysql \ -v /mydata/mysql-slave/data:/var/lib/mysql \ -v /mydata/mysql-slave/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 之后使用如下命令查看容器是否开启。 docker ps 然后继续使用如下命令进行从机的配置 vim /mydata/mysql-slave/conf/my.cnf ![在这里插入图片描述][977723e3d4c54ea79a1b7602aa5224bc.png] ![在这里插入图片描述][3666a8e56c9744c1a58397efb7e49526.png] 配置完毕之后重启从机mysql docker restart mysql-slave 然后进入从数据库 docker exec -it mysql-slave bash mysql -u root -p root 之后进入主数据库查看主数据库状态 show master status; ![在这里插入图片描述][bacddbc0e3474549b8e2600949ec6c7c.png] 从数据库中执行如下命令 change master to master_host='192.168.146.119', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000002', master_log_pos=1032, master_connect_retry=30; 其中host要改为你主机的ip地址,log_file和log_pos也要使用你主机的属性 这里默认大家了解mysql的主从复制 ![在这里插入图片描述][ea315562d0944676963401dcdd532e81.png] 此时从数据库中查看主从复制状态 show slave status\G; 两个no说明此时还没开启主从复制,在从数据库中输入开启主从复制 start slave; ![在这里插入图片描述][812a3cc9edd9486f974ceb7d626018e6.png] ![在这里插入图片描述][5bbf9011bb9c4bb9bf79265390d19715.png] 到此位置主从复制已经开启了,此时需要进行测试。 主从复制此时3307是主机,3308是从机,那么主机写入的数据会同步到从机,从机写入的数据不会同步到主机。 创建一个数据库和表,然后向表中插入数据。 ![在这里插入图片描述][5abb1f804d7a44228ace6f5191b796fd.png] 主机的操作 ![在这里插入图片描述][ad948e54b85844649576b648567adbdf.png] 从机的操作,从机也可以发现已经有数据了,你也可以向从机插入数据,会发现主机中并没有同步从机的数据,剩下的不多赘述,此时主从同步已经完成了。 ![在这里插入图片描述][9565c3d409974d68b492d59f23d70d54.png] [1559d0395aae4847b3870dfb28a489c8.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/27e67866de9d4236956ca4599fd6a8ce.png [3aafdb70b4f1425c849b35f87bc7cb91.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/376e1afc78c7401c88dc2608c54eb021.png [0a59a1b7ec56406f8ceaa20763d9693b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/c914dd99fc034bddb8b3abeee5399104.png [e754bb55f798466e8f5664d983d99505.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/9949e565bf3f43cdac18f37cadd06aa0.png [59fae97a61e14d458495e6c0f2c3fd2c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/1305950844f6409593f83e3f81d613d3.png [cdc562156b654a8cb1e215fcbcde1366.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/791bcc714841476d922ba4049049cd17.png [977723e3d4c54ea79a1b7602aa5224bc.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/480b54417d484e0185cd2f3873fcf4b3.png [3666a8e56c9744c1a58397efb7e49526.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/85d59a93aa5f45be87fe1983d35bf25d.png [bacddbc0e3474549b8e2600949ec6c7c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/da49991265ee4ae99bba842e47537981.png [ea315562d0944676963401dcdd532e81.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/fd9fd64d0e474b09ac4f5d2276771dd4.png [812a3cc9edd9486f974ceb7d626018e6.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/120ac992dbdf48d3af34249273d4686f.png [5bbf9011bb9c4bb9bf79265390d19715.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/33c0b0669d914983bd32ceab9bf03819.png [5abb1f804d7a44228ace6f5191b796fd.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/8944bbe32e7046259822409a1359eeca.png [ad948e54b85844649576b648567adbdf.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/7c5b4a20e21644d2af13bc0d3c28ddbf.png [9565c3d409974d68b492d59f23d70d54.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/03/7d76ed9aab3b435d8c5ea6b1cbfdb8b3.png
还没有评论,来说两句吧...