mysql主从复制原理面试,MySQL_深入mysql主从复制延迟问题的详解,面试mysqldba的时候遇到一个题 - phpStudy...

深入mysql主从复制延迟问题的详解

面试mysqldba的时候遇到一个题:

描述msyql replication 机制的实现原理,如何在不停掉mysql主库的情况下,恢复数据不一致的slave的数据库节点?

MySQL的复制(replication)是一个异步的复制,从一个MySQL instace(称之为Master)复制到另一个MySQL instance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在Master(IO进程)上。

引用新浪某位大牛的话:mysql复制就是一句话:基于binlog的单线程异步复制过程。

MySQL Replication复制的基本过程如下:1、Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

mysql> CHANGE MASTER TO

->     MASTER_HOST='master_host_name',

->     MASTER_USER='replication_user_name',

->     MASTER_PASSWORD='replication_password',

->     MASTER_LOG_FILE='recorded_log_file_name',

->     MASTER_LOG_POS=recorded_log_position;

2、Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;

3、Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;

4、Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行

操作过程:(1)登陆主服务器,查看主服务器的状态mysql>show master status;

找到现阶段master的数据偏移量的值。

(2)登陆从服务器,执行同步操作。mysql>stop slave;

mysql > change master to 直接定位到这个值得位置; 这里也就相当于给slave指明了相应的位置。

mysql > start slave;

(3)从服务器上查看状态mysql > show slave status相关阅读:

Mac系统入门视频教程:OS X 10.10虚拟机的创建与应用

从JQuery源码分析JavaScript函数的apply方法与call方法

MongoDB 快速入门

通过构造AJAX参数实现表单元素JSON相互转换

c#标准idispose模式使用示例

基于Android LayoutInflater的使用介绍

FireBug 调试JS入门教程 如何调试JS

Android UI设计系列之自定义EditText实现带清除功能的输入框(3)

PHP编程入门的基本语法知识点总结

jquery拖拽效果完整实例(附demo源码下载)

.NET逻辑分层架构总结

OSX 10.11 java 6不兼容怎么办?苹果MAC 10.11不兼容java 6情况的解决办法介绍

js获取对象为null的解决方法

解析zend Framework如何自动加载类

你可能感兴趣的:(mysql主从复制原理面试)