掘金 后端 ( ) • 2024-05-14 08:40

构建MySQL主从服务是为了实现数据的冗余备份、提高读取性能以及负载均衡。下面是构建MySQL主从服务的基本步骤:

准备工作:

  1. 环境准备
    • 确保你有两台(或多台,如果需要扩展)服务器,分别作为主服务器(Master)和从服务器(Slave)。
    • 两台服务器上都需安装MySQL服务器,并且版本兼容(从库版本不能低于主库版本)。
    • 配置好服务器的网络,确保主从服务器之间可以相互通信。

主服务器配置:

  1. 启用二进制日志

    • 编辑MySQL配置文件(如my.cnf),在 [mysqld] 部分添加以下行:
      server-id=1 # 主服务器的唯一ID,从服务器应设置为不同的值
      log-bin=mysql-bin # 启用二进制日志,并指定基础名称
      binlog-format=ROW # 推荐使用ROW格式,以获得更好的复制兼容性和数据一致性
      
    • 重启MySQL服务以应用更改。
  2. 创建复制用户

    • 登录到MySQL主服务器,执行以下命令创建一个用于复制的用户,并赋予必要权限:
      CREATE USER 'repl'@'%' IDENTIFIED BY 'your-password';
      GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
      FLUSH PRIVILEGES;
      
  3. 获取主服务器状态

    • 记录主服务器的状态信息,用于从服务器配置。执行以下SQL命令:
      SHOW MASTER STATUS;
      
      记录下File(当前二进制日志文件名)和Position(当前位置)。

从服务器配置:

  1. 编辑配置文件

    • 在从服务器的my.cnf中,同样设置server-id(确保与主服务器不同)并启用中继日志:
      server-id=2
      relay-log=mysql-relay-bin
      
  2. 启动从服务器并配置复制

    • 重启MySQL服务后,登录到MySQL控制台,执行以下命令配置复制:
      CHANGE MASTER TO
        MASTER_HOST='master_server_ip',          # 主服务器IP
        MASTER_USER='repl',                    # 复制用户
        MASTER_PASSWORD='your-password',         # 用户密码
        MASTER_LOG_FILE='mysql-bin.000001',    # 从主服务器获取的File名
        MASTER_LOG_POS=107;                     # 从主服务器获取的Position
      
      替换上述命令中的占位符为实际值。
  3. 启动复制进程

    • 执行以下命令启动从服务器的复制进程:
      START SLAVE;
      
    • 使用 SHOW SLAVE STATUS\G; 检查从服务器状态,确保复制正常运行,无错误。

验证与优化:

  • 在主服务器上执行一些写操作,然后在从服务器上验证是否成功复制了这些变化。
  • 根据需求调整读写分离策略,确保应用程序能够充分利用主从架构的优势。

以上是基本的MySQL主从服务构建步骤。根据实际情况,可能还需要考虑监控、自动故障切换、安全性增强等高级配置。