Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon

    8 AB复制

    author iconClaycalendar icon2021年5月11日category icon
    • MySQL
    timer icon大约 3 分钟

    此页内容
    • MySQL AB简介
    • 主从复制的过程
      • 主服务器操作
      • 从服务器操作
      • 校验

    # 8 AB复制

    # MySQL AB简介

    AB复制又称主从复制,实现的是数据同步。

    如果要做MySQL AB复制,数据库版本尽量保持一致。如果版本不一致,从服务器版本高于主服务器,但是版本不一致不能做双向复制。

    MySQL AB复制有什么好处呢?

    • 解决宕机带来的数据不一致,因为MySQL AB复制可以实时备份数据;
    • 减轻数据库服务器压力,多台服务器的性能一般比单台要好。但是MySQL AB复制不适用于大数据量,如果是大数据环境,推荐使用集群。

    ​ MySQL复制(replication)是一个异步的复制,从一个MySQL实例(Master)复制到另一个MySQL(Slave)。实现整个主从复制,需要由Master服务器上的IO进程,和Slave服务器上的Sql进程和IO进程共同完成。

    # 主从复制的过程

    ​ 要实现主从复制,首先必须打开Master端的binary log(bin-log)功能,因为整个MySQL复制过程实际上就是Slave从Master端获取相应的二进制日志,然后再在自己slave端完全顺序的执行日志中所有记录的各种操作。 主从复制的基本过程: ​ 1)MySQL Slave端的IO进程连接上Master,向Master请求指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

    ​ 2)Master接收到来自Slave的IO进程的请求后,负责复制的IO进程根据Slave的请求信息,读取相应日志内容,返回给Slave的IO的进程。并将本次请求读到的bin-log文件名及位置一起返回给Slave端。

    ​ 3)Slave的IO进程接收到信息后,将接收到的日志内容依次添加Slave端的realy-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我;”

    ​ 4)Slave的Sql进程监测到relay-log中新增了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

    # 主服务器操作

    # 全备,并在从机恢复数据

    # 开启binlog日志

    vim /etc/my.cnf
    [mysqld]
    log-bin = master
    log-bin-index = master
    server-id = 1
    
    1
    2
    3
    4
    5
    service mysqld restart
    
    1

    # 授权从服务器

    授权从服务器,可以传输binlog日志

    grant replication slave on *.* to slave@'从服务器' identified by '123';
    
    1

    # 从服务器操作

    # 导入主服务器的数据

    mysql -u root < all.sql
    
    1

    # 改配置文件

    vim /etc/my.cnf
    [mysqld]
    server-id = 2
    
    1
    2
    3

    # 配置主服务器的信息

    >stop slave;
    >change master to
    -> master_host = '主服务器',
    ->master_user = 'slave',
    ->master_password = '123',
    ->master_port = 3306,
    ->master_log_file = 'mysql-bin.000001',
    -> master_log_pos=120;
    >start slave;
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    # 校验

    > show slave status\G
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    
    1
    2
    3

    表示成功

    ​

    edit icon编辑此页open in new window
    上次编辑于: 2021/5/11 03:54:51
    贡献者: clay-wangzhi
    备案号:冀ICP备2021007336号
    Copyright © 2023 Clay