- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
资源由 美河学习在线收集提供
MySQL 面试题
1, mysql 的复制原理以及流程。
(1) 先问基本原理流程,3 个线程以及之间的关联。
MySQL 的复制原理:Master 上面事务提交时会将该事务的binlog event 写入
binlog file,然后master 将binlog event 传到slave 上面,slave 应用该binlog event 实现
逻辑复制。
MySQL 的复制是基于如下3 个线程的交互(多线程复制里面应该是4 类线程):
a. Master 上面的binlog dump 线程,该线程负责将master 的binlog event 传到
slave ;
b. Slave 上面的IO 线程,该线程负责接收Master 传过来的binlog,并写入relay
log;
c. Slave 上面的SQL 线程,该线程负责读取relay log 并执行;
d. 如果是多线程复制,无论是5.6 库级别的假多线程还是MariaDB 或者5.7 的真
正的多线程复制,SQL 线程只做coordinator,只负责把relay log 中的binlog
读出来然后交给worker 线程,woker 线程负责具体binlog event 的执行;
(2 ) 再问一致性延时性,数据恢复。
一致性可以从以下几个方面来讲:
a. 在MySQL5.5 以及之前,slave 的SQL 线程执行的relay log 的位置只能保存
在文件()里面,并且该文件默认每执行10000 次事务做一次
同步到磁盘,这意味着slave 意外crash 重启时,SQL 线程执行到的位置和
数据库的数据是不一致的,将导致复制报错,如果不重搭复制,则有可能会
导致数据不一致。MySQL 5.6 引入参数relay_log_info_repository,将该参
数设置为TABLE 时,MySQL 将SQL 线程执行到的位置存到
mysql.slave_relay_log_info 表,这样更新该表的位置和SQL 线程执行的用
户事务绑定成一个事务,这样slave 意外宕机后,slave 通过innodb 的崩溃
恢复可以把SQL 线程执行到的位置和用户事务恢复到一致性的状态。
b. MySQL 5.6 引入GTID 复制,每个GTID 对应的事务在每个实例上面最多执行
一次,这极大地提高了复制的数据一致性;
c. MySQL 5.5 引入半同步复制,用户安装半同步复制插件并且开启参数后,设
置超时时间,可保证在超时时间内如果binlog 不传到slave 上面,那么用户
提交事务时不会返回,直到超时后切成异步复制,但是如果切成异步之前用
户线程提交时在master 上面等待的时候,事务已经提交,该事务对master
资源由 美河学习在线收集提供
上面的其他session 是可见的,如果这时master 宕机,那么到slave 上面该
事务又不可见了,该问题直到5.7 才解决;
d. MySQL 5.7 引入无损半同步复制,引入参rpl_semi_sync_master_wait_point,
该参数默认为after_sync,指的是在切成半同步之前,事务不提交,而是接
收到slave 的ACK 确认之后才提交该事务,从此,复制真正可以做到无损
的了。
e. 可以再说一下5.7 的无损复制情况下,master 意外宕机,重启后发现有binlog
没传到slave 上面,这部分binlog 怎么办???分2 种情况讨论,1 宕机时
已经切成异步了,2
原创力文档


文档评论(0)