mysql开启基于位点的主从复制

发布于:2024-04-21 ⋅ 阅读:(154) ⋅ 点赞:(0)

MySQL的主从复制涉及至少两个MySQL实例:一个主库(Master)和一个或多个从库(Slave)。主库负责处理事务并记录所有变更到二进制日志(binary log)中,而从库通过读取并应用这些变更来保持与主库的数据一致。

以下是一个高级步骤指南,用以开启主从复制:

主库配置

  1. 在主库上,编辑MySQL配置文件(通常是 my.cnfmy.ini),通常位于 /etc/mysql//etc//etc/mysql/mysql.conf.d/目录下。

    [mysqld]
    server-id = 1
    log_bin = mysql-bin
    
    
  2. 重启MySQL服务以应用更改。

    sudo service mysql restart
  3. 登录到MySQL并创建一个具有复制权限的用户。

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
    
  4. 记录当前的二进制日志位置。

    SHOW MASTER STATUS;

    输出会显示当前的二进制文件名和位置,例如:mysql-bin.000001 和位置 107. 你需要这些信息来配置从库。

从库配置

  1. 在从库上,编辑MySQL配置文件。

    [mysqld]
    server-id = 2
    log_bin =mysql-bin             # 可选,如果打算设置从库为其他从库的主库
    read_only = 1                                      # 确保从库为只读模式
    
  2. 重启MySQL服务。

    sudo service mysql restart
  3. 登录到MySQL并设置复制。

    CHANGE MASTER TO
      MASTER_HOST = 'master_ip_address',
      MASTER_USER = 'replicator',
      MASTER_PASSWORD = 'password',
      MASTER_LOG_FILE = 'recorded_log_file_name',
      MASTER_LOG_POS = recorded_log_position;
    
     

    使用前面在主库上记录的文件名及位置设置 MASTER_LOG_FILEMASTER_LOG_POS

  4. 启动复制进程。

    START SLAVE;
  5. 检查从库复制状态。

    SHOW SLAVE STATUS\G

    确认 Slave_IO_RunningSlave_SQL_Running 两项都是 Yes

  6. 错误处理

查看具体的错误信息

	 SELECT * FROM performance_schema.replication_applier_status_by_worker WHERE LAST_ERROR_NUMBER != 0;

跳过错误

STOP SLAVE;
SET GLOBAL sql_slave_skip_counter = 1; -- 跳过一个事务
START SLAVE;

        这就完成了一个基本的MySQL主从复制配置。如果主库有多个库(databases)或特殊的复制需求,可能需要进行更详细的配置和准备工作。考虑复制过滤选项、数据一致性验证步骤,以及复制中断和延迟的管理。此外,在高版本的MySQL中,可能需要设置 binlog_format(默认为 ROW)。确保在配置主从复制之前,所有参与的MySQL服务器都是运行着相同版本的MySQL,以避免不兼容问题。


网站公告

今日签到

点亮在社区的每一天
去签到