MySQL主从复制、延时从库、过滤复制、GTID复制配置方法及总结

在这里插入图片描述

今天介绍的是主从复制、延时从库、过滤复制、GTID复制的一些知识点和配置方法

一、前言

  1. 概念:两台以上的数据库示例,通过 binlog 二进制日志实现数据“同步”关系(属于异步工作模式)
  2. 条件:需要两台以上的数据库实例(时间同步 网络通畅),server_id 不同,区别不同的角色;主库开启binlog,建立专用复制用户;开启前从库的数据状态与主库状态一致;从库需要确认复制的起点及主库的连接信息;MySQL是单进程多线程 要开启专用的复制线程。

二、搭建主从复制

  1. 检查主库和从库的 Server_id 和 主库 binlog 日志是否开启

    -- 查看 server_id
    select @@server_id;
    
    @@server_id
    1
    -- 查看 binlog 是否开启
    show variables like 'log_bin';
    
    Variable_name Value
    log_bin ON

    如果没有配置和 binlog 和 Server_id 需要去 my.cnf 里面配置一下:

    # 设置 server_id
    server-id=1
    # 设置binlog的位置点
    log-bin=/var/log/binlogs/mysql-bin
    # binlog的存储模式
    sync-binlog=1
    # binlog的写入格式
    binlog-format=row
    
  2. 主库创建专用的复制用户

    grant replication slave on *.* to rep@'%' identified by 'MySQL';
    
  3. 保证主从开启前数据要一致,所以需要主库全备恢复到从库

    # 在从库运行,需要写上主库的ip地址
    mysqldump -uroot -p -h主库ip -A --master-data=2 --single-transaction>/data/tem.sql
    
    # 启动 MySQL 将逻辑备份 source 到从库
    source /data/tem.sql
    
  4. 接下来需要在从库配置主库到连接信息 配置 change master to 并启动从库专用复制线程

    help change master to;
    

    在这里插入图片描述
    在从库运行 help change master to 后会出现在一些配置方法,我们只需要参考其中一部分就可以了就是上图中间部分。

    CHANGE MASTER TO
    	MASTER_HOST='master2.example.com', -- 主库ip
    	MASTER_USER='replication', -- 复制用户名
    	MASTER_PASSWORD='password', -- 复制用户密码
    	MASTER_PORT=3306,  -- 主库端口
    	MASTER_LOG_FILE='mysql-bin.000004',  -- binlog 位置点
    	MASTER_LOG_POS=154,  -- pos 编号
        MASTER_CONNECT_RETRY=10; -- 尝试连接次数
    

    这时候就会有朋友问了 MASTER_LOG_FILEMASTER_LOG_POS 这两个是什么?如何配置。其实它们是主库 binlog 的复制位置点,我们已经将主库进行全部恢复到了从库,目前主从数据一致,主库数据是由 binlog 来维护的,所以从库需要知道主库 binlog 的位置信息,从而保障主从数据的一致性,当然,如果开启 GTID 复制的话,这一切都会变的比较简单,我们后面再介绍 GTID 复制,现在我们到刚才主库的全备份中寻找位置点。

    在这里插入图片描述

    grep "\-- CHANGE MASTER TO" /data/tem.sql
    

    由图所示:运行上面的命令 MASTER_LOG_FILE 和 MASTER_LOG_POS 输出在屏幕上复制后修改 change master to 即可完成配置。

    -- 修改相关参数,从库各运行一次如下命令
    CHANGE MASTER TO
    	MASTER_HOST='主库ip',
    	MASTER_USER='复制用户',
    	MASTER_PASSWORD='密码',
    	MASTER_PORT=3306,
    	MASTER_LOG_FILE='mysql-bin.000002',
    	MASTER_LOG_POS=6161,
    	MASTER_CONNECT_RETRY=10;
    
    start slave; -- 启动从库专用复制线程
    
  5. 验证主从是否搭建成功

    show slave status\G
    

    在这里插入图片描述
    目前只需要关注:Slave_IO_Running: YesSlave_SQL_Running: Yes IO 线程和 SQL 线程是否都为 Yes 即主从启动成功。

  6. 如何需要删除主从环境使用如下命令:

    -- 关闭主从复制使用的线程
    stop slave;
    -- 清空主身份从环境
    reset slave all;
    

三、主从复制原理

未完待续…

猜你喜欢

转载自blog.csdn.net/qq_42768234/article/details/106141254