视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mysql主从复制作用和工作原理详解
2020-11-09 21:12:51 责编:小采
文档


一、什么是主从复制

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。在最常用的mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器;此时主服务器会将更新信息写入到一个特定的二进制文件中。

并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到从服务器的更新中去。当一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从哪个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新。

二、主从复制的作用

一是确保数据安全;做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据的丢失。

二是提升I/O性能;随着日常生产中业务量越来越大,I/O访问频率越来越高,单机无法满足,此时做多库的存储,有效降低磁盘I/O访问的频率,提高了单个设备的I/O性能。

三是读写分离,使数据库能支持更大的并发;在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

三、主从复制的原理

主从复制中涉及的文件

主库: binlog

从库:

  • relaylog 中继日志
  • master.info 主库信息文件
  • relaylog.info relaylog应用的信息
  • 主从复制中涉及的三个线程

    主库:

    Binlog_Dump Thread :

    从库:

    SLAVE_IO_THREAD

    SLAVE_SQL_THREAD

    具体原理如图所示:

    1.从数据库执行change master to 命令(主数据库的连接信息+复制的起点)
    2.从数据库会将以上信息,记录到master.info文件
    3.从数据库执行 start slave 命令,立即开启SLAVE_IO_THREAD 和SLAVE_SQL_THREAD这两个线程

    4.从数据库 SLAVE_SQL_THREAD,读取master.info文件中的信息获取到IP,PORT,User,Pass,binlog的位置信息

    5.从数据库SLAVE_IO_THREAD请求连接主数据库,主数据库专门提供一个SLAVE_IO_THREAD,负责和SLAVE_SQL_THREAD交互

    6.SLAVE_IO_THREAD根据binlog的位置信息,请求主数据库新的binlog

    7.主数据库通过Binlog_DUMP_Thread将最新的binlog,通过网络TP给从数据库的SALVE_IO_THREAD

    8.SLAVE_IO_THREAD接收到新的binlog日志,存储到TCP/IP缓存,立即返回ACK给主库,并更新master.info

    9.SLAVE_IO_THREAD将TCP/IP缓存中数据,转储到磁盘relaylog中.

    10.SLAVE_SQL_THREAD读取relay.info中的信息,获取到上次已经应用过的relaylog的位置信息

    11.SLAVE_SQL_THREAD会按照上次的位置点回放最新的relaylog,再次更新relay.info信息

    12.从数据库会自动purge应用过relay进行定期清理

    一旦主从复制构建成功,主数据库当中发生了新的变化,都会通过 slave_dump_THREAD发送信号给SLAVE_IO_THREAD,增强了主从复制的实时性.

    下载本文
    显示全文
    专题