MySQL主从复制

1、基本原理

  从机(slave)会从主机(master)读取binlog来进行数据同步,用于读写分离操作,注意更新后不能马上读取,否则可能会读不到。同步数据很快,正常毫秒级。

  三步骤:

    1. 主机生成一个二进制日志文件;
    2. 从机读取后写入一个relay-log中继日志;
    3. 再去读取这个文件进行数据同步.;

2、基本原则

  1. 每个slave只有一个master;
  2. 每个slave只能有一个唯一的服务器ID;
  3. 每个master可以有多个salve;

3、最大问题

  延时

4、一主一从常见配置

  4.1 mysql版本一致且后台以服务运行;

  4.2 主从都配置在【mysqld】节点下,都是小写;

  4.3 主机修改my.ini配置文件;

    1. 设置主服务器唯一ID:server-id = 1;

    2. 启用二进制日志:log-bin=自己本地的路径/data/mysqlbin;

    3. 设置不要复制的数据库:binlog-ignore-db=mysql;

    4. 设置需要复制的数据库:binlog-do-db=需要复制的主数据库名字;

    5. 设置logbin格式:binlog_format=STATEMENT(默认);//有三种模式:STATEMENT(函数获取值不一致问题)、ROW(效率问题)、MIXED;

  4.4 mysql主从复制起始时,从机不继承主机数据;

  4.4 从机配置文件修改my.cnf的【mysqld】栏目下

    1. 设置服务器唯一ID:server-id = 2;

    2. 设置中继日志:relay-log=mysql-relay;

  4.5 因修改过配置文件,请主机+从机都重启后台mysql服务;

  4.6 主机从机都关闭防火墙:linux防火墙 systemctl stop firewalld;

  4.7 主机上建立账户并授权slave:

 GRANT PERLICATION SLAVE ON *.* TP 'slave001'@'从机数据库ip或%' IDENTIFIED BY '123456';

#查询master状态:
show master status;

    执行完此步骤后不要再操作主服务器mysql,防止主服务器状态值变化;

  4.8 在从机上配置需要复制的主机:

#1.配置需要复制的主机
CHANGE MASTER TO MASTER_HOST=IP, MASTER_USER='用户', MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysqlbin.具体数字',MATER_LOG_POS=具体值;

#有问题可以
stop slave; //关闭已配置的slave
reset master; //重置主机

#2.启动从服务器复制功能
start slave;

#3.查看状态
show slave statusG

  4.9 测试:主机新建库、新建表、insert记录,从机复制;

5、MyCat管理读写分类、分库分表操作

  5.1 是什么

    数据库中间件,前身是阿里的cobar;

  5.2 干什么的

    读写分离;

    数据分片:垂直拆分、水平拆分、垂直+水平拆分;

    多数据源整合

  5.3 安装启动

   5.4 读写分离

   5.5 分库分表

原文地址:https://www.cnblogs.com/xp2h/p/12463338.html