MySQL-Docker搭建MySQL8主从复制

· 1406字 · 3分钟 · 阅读量

主MySQL数据库配置 🔗

打开/etc/mysql/conf.d/mysql.cnf配置文件,添加如下内容:

[mysqld]

#服务id,在一个主从复制集群中要唯一,值范围1-255
server-id = 1
#开启log-bin日志,非常重要,复制原理也是基于这一个,后面的值随便写我这里就写mysql-master-bin了
log-bin = mysql-master-bin
#从机复制时,忽略的数据库,也就是说这里配置的数据库不会被从机同步

Img

从MySQL数据库配置 🔗

打开/etc/mysql/conf.d/mysql.cnf配置文件,添加如下内容:

[mysqld]

server-id = 2

Img

重启主从容器后,在主MySQL数据库执行以下sql:

show master status;

Img

获取FilePosition字段,记录获得的值,设置从MySQL数据库的配置。在从MySQL中使用以下命令:

CHANGE MASTER TO MASTER_HOST='主数据库ip地址', MASTER_USER='主数据库用户', MASTER_PASSWORD='主数据库密码', MASTER_LOG_FILE='mysql-master-bin.000002', MASTER_LOG_POS=156, MASTER_PORT=主数据库端口;

该SQL语句是用于在MySQL主从复制中配置从服务器的连接主服务器的参数。

  • MASTER_HOST:指定主数据库的IP地址。
  • MASTER_USER:指定连接主数据库所使用的用户名。
  • MASTER_PASSWORD:指定连接主数据库所使用的密码。
  • MASTER_LOG_FILE:指定主数据库二进制日志文件的名称,用于从服务器从指定位置开始复制数据。
  • MASTER_LOG_POS:指定主数据库二进制日志文件的位置,用于从服务器从指定位置开始复制数据。
  • MASTER_PORT:指定主数据库的端口号,用于连接主数据库。

通过执行该SQL语句,从服务器将建立与主数据库的连接,并从指定的位置开始复制主数据库的二进制日志,以实现主从数据的同步复制。

需要注意的是,执行该SQL语句前,请确保从服务器已正确配置,并确保主服务器的相关参数正确设置,并处于可复制状态。此外,确保主从服务器之间的网络连接正常,从服务器可以访问到主服务器。

启动从服务:

start slave;
# 查看运行情况
SHOW SLAVE STATUS;

在MySQL主从复制中,可以采取以下措施来确保数据一致性: 🔗

  1. 使用正确的复制拓扑:确保主服务器是写入操作的源头,所有的写入操作都在主服务器上执行,从服务器只用于读取。

  2. 使用正确的复制模式:在MySQL中,主从复制支持两种复制模式,即异步复制和半同步复制。异步复制是默认的复制模式,从服务器在接收到主服务器的日志事件后才会应用到自己的数据库中,存在一定的延迟。而半同步复制要求主服务器至少收到一个从服务器的确认信息才能提交事务,从而确保数据的同步性。

  3. 监控复制状态:定期监控主从服务器的复制状态,确保复制链路正常运行。可以使用MySQL提供的命令如SHOW SLAVE STATUS;来查看从服务器的状态信息。

  4. 设置合适的复制延迟和复制线程数:根据实际情况调整从服务器的复制延迟和复制线程数,确保从服务器能够及时处理主服务器的日志事件。

  5. 定期备份数据:除了主从复制,定期备份数据是保证数据一致性的另一个重要手段。即使主从复制出现问题,备份数据可以用于恢复数据库到一致的状态。

  6. 合理规划数据库架构:在设计数据库架构时,考虑业务需求和数据访问模式,避免出现写冲突和数据不一致的情况。

综上所述,通过正确的配置、监控和管理,可以确保MySQL主从复制中的数据一致性。同时,也需要根据具体业务情况和需求进行定制化的配置和优化。