当前位置: 首页 > article >正文

MySQL 8 主从同步安装与配置

拟机,由 CentOS 换成了 Ubuntu,用 Xteminal 连接之后,为了方便改配置文件,把文件权限改成 666 了,结果因为这个调半天,一直以为是网络问题或者是配置问题。要注意为了防止配置文件被未经授权的用户修改,MySQL 会忽略权限为“全局可写”的配置文件。


1. 环境准备

  • 主服务器(Master)
    • IP:192.168.1.50
    • 操作系统:Ubuntu 22.04
    • MySQL 版本:8.0.41
  • 从服务器(Slave)
    • IP:192.168.1.51
    • 操作系统:Ubuntu 22.04
    • MySQL 版本:8.0.41

2. 安装 MySQL 8

2.1 在主服务器和从服务器上安装 MySQL

  1. 更新系统包:

    sudo apt update
    sudo apt upgrade -y
    
  2. 安装 MySQL Server:

    sudo apt install mysql-server -y
    
  3. 启动 MySQL 服务并设置开机自启:

    sudo systemctl start mysql
    sudo systemctl enable mysql
    
  4. 运行安全脚本,设置 root 密码并移除不安全配置:

    sudo mysql_secure_installation
    

3. 配置主服务器(Master)

3.1 修改主服务器配置文件

  1. 编辑 MySQL 配置文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. 添加或修改以下内容:

    [mysqld]
    # 启用二进制日志(必须)
    log_bin = /var/log/mysql/mysql-bin.log
    # 设置唯一的服务器 ID(必须)
    server-id = 1
    # 可选:指定需要同步的数据库
    binlog_do_db = your_database_name
    # 可选:忽略系统库的同步
    binlog_ignore_db = mysql
    binlog_ignore_db = information_schema
    binlog_ignore_db = performance_schema
    binlog_ignore_db = sys
    
  3. 保存并退出,然后重启 MySQL 服务:

    sudo systemctl restart mysql
    

3.2 创建复制用户

  1. 登录 MySQL:

    sudo mysql -u root -p
    
  2. 创建用于复制的用户并授权:

    CREATE USER 'replica_user'@'192.168.1.51' IDENTIFIED WITH 'caching_sha2_password' BY 'secure_password';
    GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'192.168.1.51';
    FLUSH PRIVILEGES;
    
  3. 获取主服务器的二进制日志状态:

    SHOW MASTER STATUS;
    

    记录 FilePosition 的值,稍后会在从服务器上用到。


4. 配置从服务器(Slave)

4.1 修改从服务器配置文件

  1. 编辑 MySQL 配置文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. 添加或修改以下内容:

    [mysqld]
    # 设置唯一的服务器 ID(必须)
    server-id = 2
    # 启用中继日志(必须)
    relay_log = /var/log/mysql/mysql-relay-bin.log
    # 可选:指定需要同步的数据库
    replicate_do_db = your_database_name
    # 可选:忽略系统库的同步
    replicate_ignore_db = mysql
    replicate_ignore_db = information_schema
    replicate_ignore_db = performance_schema
    replicate_ignore_db = sys
    
  3. 保存并退出,然后重启 MySQL 服务:

    sudo systemctl restart mysql
    

4.2 配置从服务器连接主服务器

  1. 登录 MySQL:

    sudo mysql -u root -p
    
  2. 配置主从连接:

    CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='192.168.1.50',
    SOURCE_USER='replica_user',
    SOURCE_PASSWORD='secure_password',
    SOURCE_LOG_FILE='mysql-bin.000001',  -- 替换为主服务器的 File 值
    SOURCE_LOG_POS=123;                  -- 替换为主服务器的 Position 值
    
  3. 启动复制:

    START REPLICA;
    
  4. 检查复制状态:

    SHOW REPLICA STATUS\G
    

    确保 Replica_IO_RunningReplica_SQL_Running 均为 Yes


5. 验证主从同步

5.1 在主服务器上插入测试数据

  1. 登录 MySQL:

    sudo mysql -u root -p
    
  2. 创建测试数据库和表:

    CREATE DATABASE your_database_name;
    USE your_database_name;
    CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
    INSERT INTO test_table VALUES (1, 'Test Data');
    

5.2 在从服务器上检查数据

  1. 登录 MySQL:

    sudo mysql -u root -p
    
  2. 检查数据是否同步:

    USE your_database_name;
    SELECT * FROM test_table;
    

如果数据同步成功,说明主从同步配置完成。


6. 常见问题排查

6.1 主从服务器 server-id 相同

  • 错误信息
    [ERROR] [MY-013117] [Repl] Replica I/O for channel '': Fatal error: The replica I/O thread stops because source and replica have equal MySQL server ids.
    
  • 解决方法
    1. 确保主从服务器的 server-id 不同。
    2. 修改配置文件后重启 MySQL 服务。

6.2 配置文件权限问题

  • 错误信息
    mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/slave.cnf' is ignored.
    
  • 解决方法
    1. 修改配置文件的权限:
      sudo chmod 644 /etc/mysql/conf.d/slave.cnf
      
    2. 重启 MySQL 服务。

6.3 认证插件问题

  • 错误信息
    Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
    
  • 解决方法
    1. 启用 TLS/SSL 加密连接。
    2. 或者将复制用户的认证插件切换为 mysql_native_password
      ALTER USER 'replica_user'@'192.168.1.51' IDENTIFIED WITH 'mysql_native_password' BY 'secure_password';
      

7. 总结

  • 主从同步配置步骤

    1. 安装 MySQL。
    2. 配置主服务器的 server-id 和二进制日志。
    3. 创建复制用户并授权。
    4. 配置从服务器的 server-id 和中继日志。
    5. 配置从服务器连接主服务器并启动复制。
    6. 验证主从同步。
  • 注意事项

    1. 确保主从服务器的 server-id 不同。
    2. 确保配置文件的权限正确。
    3. 使用安全的认证方式(如 TLS/SSL 或 mysql_native_password)。
    4. 定期检查复制状态和错误日志。

通过以上步骤,你可以成功搭建 MySQL 8 的主从同步环境。


http://www.kler.cn/a/586123.html

相关文章:

  • 【git】补丁文件
  • OpenHarmony体系架构深度解析
  • 环路广播风暴演示图
  • C语言【数据结构】:时间复杂度和空间复杂度.详解
  • 市面上常用的23种设计模式,分析实现方式以及实际使用场景案例
  • Flask实现分页的三种方法
  • 面试之《前端常见的设计模式》
  • spring boot程序启动时读取覆盖配置文件中的变量
  • 蓝桥杯备考:红黑树容器map应用---英语作文
  • React19源码系列之FiberRoot节点和Fiber节点
  • springboot validation 校验字段是否为空
  • Java开发之微服务架构设计:Spring Cloud Alibaba核心组
  • 探索HTML5 Canvas:创造动态与交互性网页内容的强大工具
  • 从前端视角理解消息队列:核心问题与实战指南
  • 基于Transformer的医学文本分类:从BERT到BioBERT
  • 3.14-1列表
  • C++【类和对象】(超详细!!!)
  • iPhone 17系列新机模上手,横向矩阵镜头+超薄机身,清新白色设计
  • Flask-Login完整使用案例
  • iOS 模块化架构设计:主流方案与实现详解