Docker环境下MySQL8.0主从复制配置详解
docker mysql8.0主从配置

首页 2025-07-01 21:22:12



Docker MySQL8.0主从配置全攻略 在现代数据库架构中,主从复制(Master-Slave Replication)是提升数据可用性、实现读写分离以及防止数据丢失的关键技术之一

    通过配置主从复制,可以确保数据在主数据库(Master)和从数据库(Slave)之间保持一致性,从而提高系统的整体性能和可靠性

    本文将详细介绍如何在Docker环境中配置MySQL8.0的主从复制

     一、前置条件 在进行Docker MySQL8.0主从配置之前,需要确保以下条件已经满足: 1.Docker环境:确保Docker已经正确安装并运行在您的服务器上

     2.网络配置:主从服务器之间需要能够相互通信,确保网络配置正确

     3.MySQL镜像:拉取最新版本的MySQL 8.0 Docker镜像

     二、步骤详解 1. 创建挂载目录 在宿主机上创建用于挂载的目录,这些目录将用于存储主节点和从节点的数据、日志和配置文件

    执行以下命令: bash mkdir -p /mydata/mysql-master/log /mydata/mysql-master/data /mydata/mysql-master/conf mkdir -p /mydata/mysql-slave/log /mydata/mysql-slave/data /mydata/mysql-slave/conf 2. 拉取MySQL镜像 从Docker Hub拉取MySQL8.0的Docker镜像

    执行以下命令: bash docker pull mysql:8.0 注意:这里假设拉取的是MySQL8.0的最新版本镜像,实际使用时可以根据需要指定具体版本号,如`mysql:8.0.40`

     3.部署MySQL主节点 使用以下命令启动主节点容器,将宿主机的3307端口映射到容器的3306端口,并挂载数据、日志和配置文件目录: bash docker run -d --name mysql-master -p3307:3306 -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root mysql:8.0 4. 配置主节点 进入主节点容器的配置文件目录`/mydata/mysql-master/conf`,创建`my.cnf`文件,并添加以下内容: ini 【mysqld】 server_id=101 log_bin=mysql-bin binlog_format=mixed expire_logs_days=7 保存后,重启容器以应用配置: bash docker restart mysql-master 在主节点容器中创建用于复制的用户并授权: sql CREATE USER slave@% IDENTIFIED BY 123456; GRANT REPLICATION SLAVE ON. TO slave@%; FLUSH PRIVILEGES; 执行`SHOW MASTER STATUS;`命令,记录下`File`和`Position`的值,稍后从节点配置会用到

     5.部署MySQL从节点 使用以下命令启动从节点容器,将宿主机的3308端口映射到容器的3306端口,并挂载数据、日志和配置文件目录: bash docker run -d --name mysql-slave -p3308:3306 -v /mydata/mysql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root mysql:8.0 6. 配置从节点 进入从节点容器的配置文件目录`/mydata/mysql-slave/conf`,创建`my.cnf`文件,并添加以下内容: ini 【mysqld】 server_id=102 log_bin=mysql-bin binlog_format=mixed expire_logs_days=7 保存后,重启容器以应用配置: bash docker restart mysql-slave 7. 配置主从复制 进入从节点容器的MySQL命令行: bash docker exec -it mysql-slave /bin/bash mysql -u root -p 在从节点上配置复制,将主节点的IP地址、复制用户、密码、日志文件和位置等信息填入: sql CHANGE MASTER TO MASTER_HOST=主节点宿主机IP, MASTER_USER=slave, MASTER_PASSWORD=123456, MASTER_LOG_FILE=主节点File值, MASTER_LOG_POS=主节点Position值; 例如: sql CHANGE MASTER TO MASTER_HOST=192.168.1.100, MASTER_USER=slave, MASTER_PASSWORD=123456, MASTER_LOG_FILE=mysql-bin.000001, MASTER_LOG_POS=1234; 执行`START SLAVE;`命令启动复制

     执行`SHOW SLAVE STATUSG;`命令,检查`Slave_IO_Running`和`Slave_SQL_Running`是否都为`Yes`,表示复制正常

     三、验证与测试 在主节点的数据库中插入一些测试数据,以验证主从复制是否成功

    例如: sql CREATE DATABASE testdb; USE testdb; CREATE TABLE testtable(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50)); INSERT INTO testtable(name) VALUES(test); 在从节点的数据库中检查是否成功复制了主节点的数据: sql USE testdb; SELECTFROM testtable; 如果在从节点中能够查询到与主节点相同的数据,则说明主从复制配置成功

     四、注意事项与优化 1.数据一致性:在主从复制配置之前,确保主节点和从节点的数据是一致的

    可以通过备份主节点数据并恢复到从节点来实现

     2.网络稳定性:主从节点之间的网络通信必须稳定可靠,以避免复制中断

     3.监控与报警:建议配置监控和报警机制,及时发现并解决复制过程中的问题

     4.性能优化:根据实际需求调整MySQL的配置参数,如`binlog_cache_size`、`sync

MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道