MySQL、Mariadb 复制原理
复制的作用
l 水平扩展
l 数据备份
l 数据分析
l 数据分布
l 高可用性
复制的工作原理
Mariadb的复制功能是基于binlog进行的。复制的工作主要是由主库上Master dump 线程、从库上的slave IO线程以及slave SQL线程来完成的。
在主库上执行 SHOW PROCESSLIST 命令查看到dump线程。
当在从库上执行START SLAVE 语句来开启复制功能时,会闯将一个slave IO线程和一个slave SQL线程。slave IO线程负责连接到主库,然后接收主库master dump线程发送过来的binlog内容,写到本地的relay-log中。slave SQL线程负责重放relay-log中的内容,将主库的所有修改反映到从库上。
复制的大概过程可以总结为如下3步:
(1)主库将所有的修改以事件的形式记录到binlog中,主库的master dump线程负责发送binlog内容到从库。
(2)从库的slave IO 线程将接收到的binlog事件记录到本地的relay-log中。
(3)从库的slave SQL线程重放relay-log中的事件。
relay-log.info文件记录了slave SQL线程重放的进度等信息,保证了停止之后再重新开启复制时,复制工作能够从正确的位置开始。
relay-log由一系列包含了主库binlog事件的relay-log文件和一个管理这些文件的relay-log.index文件组成。(与binlog文件相似)
relay-log文件和binlog文件格式一样,同样可以使用mysqlbinlog工具来查看其中的内容。
通过配置relay-log="file-name"和relay-log-index="file-name"这两个参数,可以指定relay-log文件和relay-log.index文件的名称
relay-log会发生切换的几种情况如下:
l slave IO线程启动的时候。这发生在执行START SLAVE 语句或者Mariad/Mysql启动时。
。默认会使用主机名来命名relay-log日志,因此在复制的过程中更改主机名可能导致因找不到relay-log文件而引发的错误。
l 执行FLUSH LOGS语句刷新日志时。
l 达到参数max_relay_log_size指定的大小时。当max_relay_log_size为0时,以参数max_binlog_size的值作为max_relay_log_size的值。
l slave SQL线程重放完一个relay-log文件中所有事件时,会自动删除该relay-log文件,所以没有显示删除relay-log的命令。
master.info文件和relay-log.info文件
开启复制功能时,在从数据库的数据目录下回创建一个master.info文件和一个relay-log.info文件,他们用来记录复制工作进度。
l master.info 文件:该文件用来保存主库的主机名和端口信息以及登录到主库所需要的账号和密码。这里需要注意的是,账号和密码都是以文本的格式保存在master.info文件中,所以在实际应用中需要特别注意这一点,以防出现安全的问题。master.info文件还以binlog文件名和偏移量的形式记录了从库接收主库binlog事件的进度信息,有了这些信息,slave IO线程就知道从哪里从新开始自己的工作了。
l relay-log.info文件:该文件用来记录从库的重放进度。
通过配置master-info-file="file-name"和relay-log-info-file="file-name"参数可以改变master.info文件和relay-log.info文件的名称。在MySQL5.6和Mariadb10.0中可以通过配置master-info-repository=TABLE(默认为FILE)来使用表masql.salve_master_info来代替master.info文件,存储相关的信息。同样,通过配置relay-log-info-repository=TABLE,可以用表mysql.slave_relay_log_info来替代relay-log.info文件。
MySQL、Mariadb 复制原理的更多相关文章
- MySQL的复制原理及配置
MySQL 的数据库的高可用性的架构大概有以下几种:集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单介绍复制的原理及配置,以及一些常见的问题. 一.复制的原理 MySQL 复制基于主服 ...
- Mysql的复制原理以及流程
MySQL复制概述 简单来说就是保证主服务器(Master)和从服务器(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过 ...
- MySQL的复制机制
MySQL的复制机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL复制介绍 1>.MySQL复制允许将主实例(master)上的数据同步到一个或多个从实例( ...
- MySQL\MariaDB 多线程复制初探
背景: MariaDB 在10.0.5就已经支持了并行复制的功能,即从库多线程复制的功能.MySQL最先在5.6.3中支持.目前暂时没有用MySQL5.6的版本,故暂时只对MariaDB进行一些说明, ...
- MySQL并发复制系列三:MySQL和MariaDB实现对比
http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...
- MySQL(mariadb)主从复制模式与复制过滤
在前一篇文章<mysql多实例与复制应用>中只对mysql的复制做了简单的介绍,本篇内容专门介绍一下mysql的复制. MySQL复制 mysql复制是指将主数据库的DDL和DML操作通过 ...
- MySQL/MariaDB数据库的半同步复制
MySQL/MariaDB数据库的半同步复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL半同步复制概述 1>.MySQL默认的异步复制 默认情况下,M ...
- MySQL并行复制(MTS)原理(完整版)
目录 MySQL 5.6并行复制架构 MySQL 5.7并行复制原理 Master 组提交(group commit) 支持并行复制的GTID slave LOGICAL_CLOCK(由order c ...
- 烂泥:学习mysql数据库主从同步复制原理
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 说明本篇文章部分转载自互联网. MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对 ...
随机推荐
- set_time_limit
语法 : void set_time_limit (int seconds)说明 : 设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误.它预设的限制时间是30秒,max_execut ...
- 在Ubuntu上安装pyenv
因为找到一个域名枚举的脚本使用Python3编写的,而我一直习惯的是使用Python2.7,在自己的Windows7上再安装个Python怕混了,于是想着在VPS上装个Python的版本管理工具,也方 ...
- NTP 服务器搭建
FROM:http://blog.sina.com.cn/s/blog_511b46d10100agzf.html 配置环境: 1. 假设在 192.168.0.0 网段内,要以IP为 10.233. ...
- mantis邮件设置
1.cd /var/www/html/mantis 删除 config_inc.php 的$g_enable_email_notification = OFF; 重启httpd ...
- CentOS中自动加载802.1q模块
要想在CentOS中自动加载内核模块,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块. 下面是我所用的一个名为8021q.modules的脚本,用来在 ...
- ASP.NET MVC5 高级编程-学习日记-第二章 控制器
2.1 控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理, ...
- .NET MVC 学习笔记(三)— MVC 数据显示
. NET MVC 学习笔记(三)—— MVC 数据显示 在目前做的项目中,用的最多的数据展示控件就是table展示(说不是的请走开,不是一路人),以下详细阐述下table的使用方法. 先看效果: 上 ...
- 最小割(zjoi2011,bzoj2229)(最小割树)
小白在图论课上学到了一个新的概念--最小割,下课后小白在笔记本上写下了如下这段话: "对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点\(s,t\)不在同一个部分中,则称 ...
- 防止sql注入的小函数 以及一些小验证
function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialch ...
- windows中eclipse调试hadoop
下载eclipse:https://www.eclipse.org/downloads/eclipse-packages 下载hadoop eclipse插件:https://github.com/w ...