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

时间:2024-01-26 09:55:11 

面试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

标签:mysql,主从复制,延迟
0
投稿

猜你喜欢

  • python算法表示概念扫盲教程

    2022-06-22 00:43:34
  • 2008年Logo设计10大趋势

    2008-02-28 13:06:00
  • Python脚本开发中的命令行参数及传参示例详解

    2023-01-25 02:44:30
  • setTimeout与setInterval在不同浏览器下的差异

    2024-04-23 09:23:54
  • python 抓包保存为pcap文件并解析的实例

    2023-04-03 03:52:04
  • 检测SqlServer数据库是否能连接的小技巧

    2024-01-21 04:01:28
  • pytorch+sklearn实现数据加载的流程

    2022-05-15 14:44:27
  • python实现ip代理池功能示例

    2023-07-30 16:36:06
  • Java实现数据库连接的最详细教程分享

    2024-01-28 01:34:15
  • vuex与map映射实现方法梳理分析

    2023-07-02 16:34:04
  • 利用XMLHTTP无刷新自动实时更新数据

    2008-02-19 18:29:00
  • Django MTV和MVC的区别详解

    2023-06-08 10:15:19
  • 一看就懂得Python的math模块

    2021-03-28 21:40:32
  • Echarts基本入门之柱状图、折线图通用配置

    2024-04-28 09:37:10
  • C#简单访问SQLite数据库的方法(安装,连接,查询等)

    2024-01-22 18:29:22
  • 2020版Python学习路线图(附学习资料)

    2021-01-11 09:33:52
  • PyPy 如何让Python代码运行得和C一样快

    2022-07-16 20:17:58
  • 对PyQt5中树结构的实现方法详解

    2021-02-07 16:19:20
  • ChatGPT教你用Python实现BinarySearchTree详解

    2023-11-18 15:26:18
  • 浅谈python print(xx, flush = True) 全网最清晰的解释

    2022-01-28 21:45:48
  • asp之家 网络编程 m.aspxhome.com