-
MySQL主从复制的应用场景
-
当只有一台MySQL服务器要负责读写时,对于安全性,高可用,高并发等需求就不能满足,因此就要建立集群,集群的基础就是主从复制。
-
原理(过程)
-
MySQL支持的复制类型
-
基于语句的复制,基于二进制文件,效率高,有概率出错
-
binlog-fromat=STATMENT
-
-
基于行的复制,复制内容,效率低,不容易出错
-
binlog-fromat=ROW
-
-
混合模式,综上两种,效率与容错都折中 先语句,出错再行。
-
binlog-fromat=MIXED
-
-
-
过程
-
流程图
-
首先主节点数据库要开启二进制日志功能
-
进行相关数据库的修改之后,更新二进制文件,通知存储引擎提交事务。
-
-
然后,当二进制日志文件添加新数据后,slave的I/O线程就会检测到,并将相关数据复制到slave的中继日志中,复制完毕后进行休眠。等待新的事件。
-
最后,slave中的sql进程就会将中继日志中的事件进行重放(重做),
-
需要注意的是slave的重放操作时串行的,当并行操作出现时,也是按串行来处理。
-
-
-
-
实验操作
-
准备前奏
-
三台安装mysql的主机
-
将内核与防火墙都关闭
-
-
进行时间同步
-
主节点服务器安装ntp
-
yum -y install ntp
-
配置文件中添加如下语句
-
server 127.127.1.0
-
主节点数据库作为权威时间的ntp服务器
-
-
fudge 127.127.1.0 stratum 8
-
一种调整层级越小越接近权威时间
-
-
-
-
从服务器安装ntp
-
执行命令
-
ntptate 权威时间主机的IP地址
-
-
-
-
-
过程
-
要对主从服务器进行配置
-
修改配置文件【mysqld】添加如下语句
-
server-id=11
-
在这群集里面该服务的标识id,同一集群内id不能重复。
-
-
log-bin=master-bin
-
二进制日志文件的前缀名称
-
-
binlog-format=MIXED
-
进行主从复制时采用的模式:混合模式
-
-
replicate-ignore-db=test
-
如果不想同步某个库就要把该参数写到从服务器的配置文件中
-
-
binlog-cache-size=1M
-
缓存日志的大小,建立缓存降低磁盘的I/O压力
-
-
expire-logs-days=3
-
自动清理日志的时间,合理设置,避免无法进行增量备份。
-
-
log-slave-updates=true
-
进行主主复制需要
-
-
修改后重启
-
-
进入主节点服务器
-
对从节点服务器创建授权账号
-
grant replication slave on *.* to ‘slave’@‘192.168.10.%’ identified by ‘123456’;
-
从服务器将通过该账号进行混合模式的复制
-
-
flush privileges
-
-
查看当前二进制日志文件的名称与位置
-
show master status;
-
- 该项是从服务器建立主从复制连接的重要依据,要确保该项不会变动
-
为了确保不会变动,可以有两种方式
-
方法一
-
关闭前端的服务,这样对mysql数据库便不会有数据被修改。
-
-
方法二
-
人性化的设定,将要导出的表进行锁定,或全局锁定,这样只能进行读,并不会断开连接。
-
锁定所有表
-
global lock
-
-
锁定单个表
-
lock tables 表名 write
-
write:表示该表不能读但能写
-
read:表示该表不能写只能读
-
-
-
解锁
-
unlock tables
-
-
-
-
-
- 该项是从服务器建立主从复制连接的重要依据,要确保该项不会变动
-
当用了一段时间的数据库要进行主从复制时,不能通过修改起始位置来进行偷懒。
-
-
-
从服务器的配置
-
在配置文件[mysqld]中添加如下语句
-
server-id=22
-
确保server-id在群集中唯一即可
-
-
relay-log=relay-log-bin
-
给中继日志文件起前缀名
-
-
relay-log-index=slave-relay-bin.index
-
从服务器启动时需要检查中继日志文件中的中继日志信息1,这里在该处定义了名字。
-
-
-
修改后重启服务器
-
进入从服务器
-
建立主从连接
-
change master to master_host='192.168.10.101' 主服务器地址 master_user='myslave' 要用哪个账号连接 master_password='123456' 连接的账号密码是什么 master_log_file='master-bin.000002' 要读取的日志文件名叫什么 master_log_pos=154 要从那个位置开始进行复制
-
-
开始连接
-
start slave;
-
-
查看连接
-
show slave status\G
-
- 划红线部分必须要为yes状态 可以查看其他信息是否正确,如果建立主从连接的参数出错,那么需要停止slave的I/O进程才能再次提交。
-
-
-
-
需要注意的是,从服务器的重启对主从建立的连接影响较小很快就能重建连接,而主服务器上的重启会造成较长时间的连接时间。
-
-
-
-
以上所有内容全选复制后粘贴到xmind上便可形成条理性笔记!!!