您的当前位置:首页正文

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

2024-11-08 来源:个人技术集锦
一、主从配置工作原理

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

二、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及以上版本中,可以使用多线程复制来加速从节点的数据应用速度。
Top