1、基本原理
从机(slave)会从主机(master)读取binlog来进行数据同步,用于读写分离操作,注意更新后不能马上读取,否则可能会读不到。同步数据很快,正常毫秒级。
三步骤:
- 主机生成一个二进制日志文件;
- 从机读取后写入一个relay-log中继日志;
- 再去读取这个文件进行数据同步.;
2、基本原则
- 每个slave只有一个master;
- 每个slave只能有一个唯一的服务器ID;
- 每个master可以有多个salve;
3、最大问题
延时
4、一主一从常见配置
4.1 mysql版本一致且后台以服务运行;
4.2 主从都配置在【mysqld】节点下,都是小写;
4.3 主机修改my.ini配置文件;
-
设置主服务器唯一ID:server-id = 1;
-
启用二进制日志:log-bin=自己本地的路径/data/mysqlbin;
-
设置不要复制的数据库:binlog-ignore-db=mysql;
-
设置需要复制的数据库:binlog-do-db=需要复制的主数据库名字;
-
设置logbin格式:binlog_format=STATEMENT(默认);//有三种模式:STATEMENT(函数获取值不一致问题)、ROW(效率问题)、MIXED;
-
4.4 mysql主从复制起始时,从机不继承主机数据;
4.4 从机配置文件修改my.cnf的【mysqld】栏目下
-
设置服务器唯一ID:server-id = 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 干什么的
读写分离;
数据分片:垂直拆分、水平拆分、垂直+水平拆分;
多数据源整合