MySQL主从复制与双主互备

一、Centos7搭建MySQL主从复制(冷备)

主从复制原理

1 Master将改变记录到二进制日志(binary log)中

2 Slave将Master的二进制日志事件(binary log events)拷贝到它的中继日志(relay log)

3 Slave重做中继日志(Relay Log)中的事件,将Master上的改变反映到它自己的数据库中

4 这些是由从库在做,所以是异步的数据同步

主从复制

主从复制应用场景

1 主从服务器互为备份,加强数据库架构的健壮性

2 主从服务器读写分离,分担网站压力,从服务器只处理用户的查询请求

3 将从服务器,按照业务拆分,分担压力

主从复制实践

  1. 必须检查防火墙是否已经关闭,若开启状态,先关闭

    1
    systemctl status firewalld.service

    1

    注:主从服务器都要关闭

  2. 主服务器配置

    ① 复制mysql配置文件模板到/etc/my.cnf

    ② 重新启动MySQL

    1
    2
    cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
    service mysql restart

    2

    ③ 进入MySQL,查看server_id

    1
    show variables like 'server_id';

    3

    ④ 查看MySQL主库的日志文件信息

    1
    show master status;

    4

  3. 从服务器的配置

    ① 复制mysql配置文件模板到/etc/my.cnf

    ② 修改配置文件/etc/my.cnf的sercer_id,这里修改为2

    ③ 重新启动MySQL

    1
    2
    3
    cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
    vim /etc/my.cnf
    service mysql restart

    5

    6

    ④ 进入从MySQL查看server_id是否修改成功

    1
    show variables like 'server_id';

    7

    ⑤ 设置跟踪主库日志文件

    从库MySQL中输入如下信息

    • master_host 为主库IP地址
    • master_user 为主库用户名
    • master_password 为主库密码
    • master_log_file 为主库日志文件
    • master_log_pos 为主库日志所占位置
    1
    2
    3
    4
    5
    6
    change master to
    master_host='192.168.110.130',
    master_user='root',
    master_password='1234',
    master_log_file='mysql-bin.000001',
    master_log_pos=107;

    8

    ⑥ 启动slave服务,并查看slave服务信息

    1
    2
    start slave;
    show slave status\G;

    9

  4. 主服务器设置授权并刷新设置, 否则无法完成主从复制, 注意是在主服务器执行授权

    1
    2
    3
    4
    5
    6
    7
    8
    9
    grant all privileges on *.* to 'root'@'%' identified by '1234' with grant option;
    # all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
    # on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。
    # to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。
    # identified by:指定用户的登录密码。
    # with grant option:表示允许用户将自己的权限授权给其它用户。

    flush privileges;
    # flush privileges 刷新MySQL的系统权限相关表

    10

  5. 主从复制测试

    11

    12

二、CentOS7搭建MySQL双主互备(热备)

双主互备就是要保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致,这样做的意义是既提高了数据库的容灾性,又可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量

双主互备实践

  1. 基于以上,查看从服务器日志信息

    1
    show master status;

    13

  2. 主服务器配置

    ① 设置跟踪主库日志文件

    主库MySQL中输入如下信息

    • master_host 为从库IP地址
    • master_user 为从库用户名
    • master_password 为从库密码
    • master_log_file 为从库日志文件
    • master_log_pos 为从库日志所占位置
    1
    2
    3
    4
    5
    6
    change master to
    master_host='192.168.110.131',
    master_user='root',
    master_password='1234',
    master_log_file='mysql-bin.000001',
    master_log_pos=107;

    14

    ② 启动slave服务,并查看信息

    1
    2
    start slave;
    show slave status\G;

    15

  3. 双主互备测试

    1716

都看到这里了,不赏点银子吗^v^