数据库基础复习之mysql主从复制

1.复制原理过程
1)主库把数据的更改记录到二进制日志中
2)备库将主库的二进制日志复制到自己的中继日志
3)备库读取中继日志的事件并将其重放到备份数据之上。
数据库基础复习之mysql主从复制
第一步:记录日志
主库在准备提交事务完成数据更新前都会将数据更新的事件记录到二进制日志中(根据事务提交的顺序而不是每条语句执行的顺序来记录),二进制日志的格式有三种,分别为:基于段的日志格式、基于行的日志格式、以及混合二进制日志格式。
基于段的复制:主库记录的是造成数据更改的sql语句,然后在从库上重放这些语句,也就是重新执行这些sql;
优点:日志记录量相对较少,节省磁盘和网络IO(其实不一定);
缺点:非确定性函数不能复制(如UUID、时间戳等),有些存储引擎并不支持。
基于行的复制:主库记录的是修改的行信息,也就是说每修改一行都会记录数据的改变;
优点:可以正确的复制每一行数据的更改、一些非确定性函数也能复制;在从库上能更加高效的执行复制(基于段的复制还需重新执行sql、而基于行的直接修改即可);
缺点:日志量过多。
混合的复制:mysql在两种复制模式之间动态切换,默认情况下是使用基于段的复制,当发现如果无法使用段来进行复制时,则切换到使用基于行的复制。
第二步:转储二进制日志
首先备库会启动一个工作线程,称为IO线程,IO线程与主库建立普通的客户端连接,然后在主服务器上启动一个特殊的二进制转储线程,这个转储进程读取主服务器的二进制日志,并通过io从线程把事件写入中继日志中。
第三步:重放二进制日志
备库的sql线程从中继日志中读取日志,并在备库中执行(注:通过配置选项可以设置备库是否也需要写二进制日志,便于备库的备库复制)。
2. 配置复制的步骤
1)在主库上创建复制账号;
2)配置主从数据库;
主:开启二进制日志、设置server_id(必须唯一,在配置文件中改);
从:二进制日志、server_id,固定中继日志的名字(默认是主机名是一样的,固定中继日志名字使得如果修改了主机名,复制还可以使用) 。
3)启动复制链路;
3.复制的作用
1)实现数据库高可用
通过对主服务器配置多台从服务器,可以避免单点问题,实现灾难转移,提升系统的高可用
2)实现数据备份
可以从误操作或者系统出现问题中恢复回来
3)实现读写分离
本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » 数据库基础复习之mysql主从复制
分享到:
赞(0)

评论抢沙发

评论前必须登录!