Linux Docker 部署 MySQL 主从配置详解教程

一、主从配置工作原理

MySQL主从复制是一种数据复制技术,用于实现数据的高可用性和负载均衡。其工作流程原理如下:

  1. 主服务器操作

    • 所有更新操作(如INSERTUPDATEDELETE等)都会被记录到二进制日志(Binary Log)中。
    • 开启binlog dump线程,负责读取二进制日志中的事件,并发送给从服务器。
  2. 从服务器操作

    • 通过I/O线程读取主服务器上的二进制日志,并将其写入到从服务器的中继日志(Relay Log)中。
    • SQL线程实时监控中继日志的内容是否有更新,一旦有更新,SQL线程会解析中继日志中的SQL语句,并在从服务器上执行这些语句,从而实现数据的同步。
  3. 复制过程的监控和维护

    • 使用SHOW SLAVE STATUS命令查看从服务器的状态,确保复制过程正常运行。
    • 特别关注Slave_IO_RunningSlave_SQL_Running两个字段的值,它们应该都为Yes,表示复制进程正在正常运行。
      在这里插入图片描述
二、Docker 部署 MySQL 主从配置步骤
1. 准备主服务器
  • 创建并启动 MySQL 主服务器容器

    docker run -d \
    -p 3306:3306 \
    -v /path/to/mysql/master/conf:/etc/mysql/conf.d \
    -v /path/to/mysql/master/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=yourpassword \
    --name mysql-master \
    mysql:8.0
    
  • 创建 MySQL 主服务器配置文件

    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog_format=ROW
    
  • 重启 MySQL 容器

    docker restart mysql-master
    
  • 登录 MySQL 主服务器并创建 slave 用户

    CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
    FLUSH PRIVILEGES;
    
  • 查询 master 状态

    SHOW MASTER STATUS;
    

    记下FilePosition的值。

2. 准备从服务器
  • 创建并启动 MySQL 从服务器容器

    docker run -d \
    -p 3307:3306 \
    -v /path/to/mysql/slave/conf:/etc/mysql/conf.d \
    -v /path/to/mysql/slave/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=yourpassword \
    --name mysql-slave \
    mysql:8.0
    
  • 创建 MySQL 从服务器配置文件

    [mysqld]
    server-id=2
    relay-log=mysql-relay
    read_only=1
    log_bin=mysql-bin
    binlog_format=ROW
    log_slave_updates=1
    
  • 重启 MySQL 容器

    docker restart mysql-slave
    
  • 在从机上配置主从关系

    CHANGE MASTER TO MASTER_HOST='master_ip_address',
    MASTER_USER='slave',
    MASTER_PASSWORD='password',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='recorded_file_name',
    MASTER_LOG_POS=recorded_position;
    START SLAVE;
    
三、验证主从配置
  • 在主服务器上执行写操作,然后在从服务器上检查是否成功复制。
四、故障排查
  • 查看从服务器状态

    SHOW SLAVE STATUS\G
    

    确保Slave_IO_RunningSlave_SQL_Running都为Yes

  • 处理异常情况,如网络中断、主服务器宕机等,需要根据具体情况进行相应的处理。

五、优化建议
  • 优化大事务,将大事务拆分为多个小事务,以减少对主从复制的影响。
  • 提升网络性能,优化主从服务器之间的网络连接,减少网络延迟。
  • 提升从节点性能,升级从节点的硬件配置,优化数据库参数设置,以提升其处理能力。
  • 使用多线程复制,在MySQL 5.7及以上版本中,可以使用多线程复制来加速从节点的数据应用速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值