实现MySQL主从同步跳过指定表的流程

流程图:

graph TD;
    A[创建主从复制] --> B[设置主服务器配置];
    B --> C[设置从服务器配置];
    C --> D[从服务器开始复制];
    D --> E[跳过指定表];

详细步骤:

  1. 创建主从复制
    • 首先,需要确保主服务器和从服务器都已经安装并启动了MySQL数据库。
    • 在主服务器上,通过编辑my.cnf文件,设置以下参数:
      # 开启二进制日志
      log-bin=mysql-bin
      # 指定要复制的数据库
      binlog-do-db=database_name
      
    • 在从服务器上,通过编辑my.cnf文件,设置以下参数:
      # 开启从服务器
      server-id=2
      # 指定要忽略复制的数据库
      replicate-ignore-db=database_name
      
  2. 设置主服务器配置
    • 登录到主服务器的MySQL命令行界面。
    • 创建用于复制的用户,并授予适当的权限:
      CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
      GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
      FLUSH PRIVILEGES;
      
    • 查看主服务器状态,并记录下File和Position的值:
      SHOW MASTER STATUS;
      
  3. 设置从服务器配置
    • 登录到从服务器的MySQL命令行界面。
    • 设置从服务器连接主服务器的配置:
      CHANGE MASTER TO 
        MASTER_HOST='master_host',
        MASTER_USER='replication_user',
        MASTER_PASSWORD='password',
        MASTER_LOG_FILE='master_log_file',
        MASTER_LOG_POS=master_log_pos;
      
    • 启动从服务器与主服务器的连接:
      START SLAVE;
      
    • 查看从服务器状态,确保复制已经开始:
      SHOW SLAVE STATUS\G
      
  4. 从服务器开始复制
    • 从服务器会开始复制来自主服务器的数据。
    • 通过在主服务器上进行操作,可以验证数据是否正确地同步到从服务器上。
  5. 跳过指定表
    • 如果需要跳过指定表,可以在从服务器上执行以下命令:
      SET GLOBAL sql_slave_skip_counter = 1;
      
    • 然后,重新启动从服务器的复制:
      START SLAVE;
      

代码解释:

  1. 设置主服务器配置的代码:

    # 开启二进制日志
    log-bin=mysql-bin
    # 指定要复制的数据库
    binlog-do-db=database_name
    
    • log-bin=mysql-bin 开启二进制日志,用于记录主服务器上的所有更改操作。
    • binlog-do-db=database_name 指定要复制的数据库。
  2. 设置从服务器配置的代码:

    # 开启从服务器
    server-id=2
    # 指定要忽略复制的数据库
    replicate-ignore-db=database_name
    
    • server-id=2 设置从服务器的唯一标识符。
    • replicate-ignore-db=database_name 指定要忽略复制的数据库,可以用逗号分隔多个数据库。
  3. 设置从服务器连接主服务器的配置的代码:

    CHANGE MASTER TO 
      MASTER_HOST='master_host',
      MASTER_USER='replication_user',
      MASTER_PASSWORD='password',
      MASTER_LOG_FILE='master_log_file',
      MASTER_LOG_POS=master_log_pos;
    
    • MASTER_HOST='master_host' 指定主服务器的主机名或IP地址。
    • MASTER_USER='replication_user' 指定用于复制的用户。
    • MASTER_PASSWORD='password' 指定复制用户的密码。
    • MASTER_LOG_FILE='master_log_file' 指定主服务器的二进制日志文件名。
    • MASTER_LOG_POS=master_log_pos 指定主服务器的二进制日志位置。
  4. 查看从服务器状态的代码:

    SHOW SLAVE STATUS\G
    
    • SHOW SLAVE STATUS 用于查看从服务器的复制状态。
    • \G 以更易读的格式显示结果。
  5. 跳过指定表的代码: