MySQL复制原理及过程
Replication基本原理
异步复制:从主机拷贝到备机过程中会有延迟,延迟通常由网络、资源可用性和系统负载来决定。使用合适架构和调优,大多复制几乎是瞬间完成的。
同步复制:数据同时向一台或多台机器提交,保证多系统一致性,但也会带来额外性能损失,mysql本身不支持同步复制,利用分布式复制块设备技术能提供同步复制功能。
半同步复制:MySQL5.5新功能,主机提交半同步到从机,从机收到事务所有事件后返回给主机确认该事务提交完成或超时。当发生超时,主机会使用异步复制。半同步复制保障主机所有已提交事务都被复制到从机。
基于语句的复制:MySQL默认使用基于语句的复制方式。优点在于最终写入日志文件的数据较少,当更新删除时,日志文件占用非常少存储空间,也意味着恢复数据能最快。缺点是不支持一些非确定性行为,例如当前时间函数。
基于行的复制:MySQL5.1引入新功能,记录表中改变的数据,与基于语句方式相反。更像关系传统复制,通常不需要锁请求。优点获得更高的并发,缺点是日志文件会较大。
混合格式复制:MySQL5.1.8引入新功能,二进制日志格式能够实时改变,默认基于语句复制,当遇到以下情况自动切换到基于行的模式:
NDB存储引擎的DML操作;
使用uuid()函数;
两个以上的表中有auto_increment属性的列被更新;
任何insert delayed被执行;
调用UDF(用户定义函数);
当视图内容使用基于行复制,则创建视图的语句也使用此方式,例如使用uuid()函数创建视图时。
Replication使用案例
水平扩展:目的是使负载分散到一个或多个从机,以提高性能。垂直扩展是在主机天津硬件资源,水平扩展是添加服务器。在水平扩展架构中,读写操作可以分离到主机和从机上。
高可用性:将改变的数据复制到从机,目的是解决当前主机发生错误、崩溃或维护,需要从主机下线时系统迁移到从机。
数据备份:避免数据备份时给主机带来性能下降或锁开销,可以选择从机替代主机执行备份操作。
在线分析:许多商业智能和查询分析工作需要占用大量主机资源并且比较耗时。对于这种情况,使用从机提供查询分析服务。
异地复制:不同地理位置的数据库之间实现远距离数据复制。异步复制在这种场景能更好解决网络延迟带来的影响。
Replication拓扑结构
Master to Slave :管理配置最简单的方式,一台做主机另一台做从机。
Master to Multiple Slaves :这种方式有更好的水平扩展能力,同时增加了管理的复杂性和复制失败解决问题的潜在风险。
Master to Slaves to Slaves :主多从的一种扩展,从机被另外一些从机作为主机。
Master to Master(Master - Master) :两台服务器结合一起,互为主从。这种配置使写操作在两个系统之间更好的被复制,但也明显地提高了在安装,配置和管理的复杂程度。
Master-Master to Slave :这种复制拓扑结构当前是不被MySQL所支持的。在多主配置环境下,通常是两台作主机,从机要从这两台主机复制数据。
Replication内部工作流程
MySQL复制,主机将更新写入二进制日志文件,并对日志维护一个索引,保持日志轮流跟踪。日志作为更新记录发送到从机。当从机连接到主机时,会检查日志最后一次更新成功最近位置。然后接受自那时以来的所有更新,之后从机便等待主机通知新的更新。
Replication配置
创建复制用户:该帐户给予“REPLICATION SLAVE”权限,专门用于复制,不授予复制权限以外的其他权限。
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%’ IDENTIFIED BY 'password' ;
FLUSH PRIVILEGES;
2. 刷新表和阻塞写操作:在主机刷新所有表并阻塞写操作。设置读锁: FLUSH TABLES WITH READ LOCK;
3. 记录主机二进制日志位置:可以使用SHOW MASTER STATUS;
4. 修改从机my.conf文件并重启: my.conf 中 [mysqld] 段加入 server-id=2,ID值必须是1-232之间,必须和主机不同。复制通讯 中ID值是每个服务器的唯一标识。重启从机MySQL服务,新配置就会生效。
5. 初始化复制:
Slave stop;
下一步,执行 change master命令:
CHANGE MASTER TO MASTER_HOST=’192.168.0.81’,
MASTER_USER=’replication_user’,
MASTER_PASSWORD=’password’,
MASTER_LOG_FILE=’dellxp1-bin.000001’,
MASTER_LOG_POS=2462;
Replication管理和排错
1. 检查复制状态: SHOW SLAVE STATUS
2. 停止从机读取二进制日志: STOP SLAVE; (从机的IO线程不会读取主机二进制日志,SQL线程不会执行中继日志的事件。)
单独停止IO或SQL线程指定线程类型: STOP SLAVE IO_THREAD;
3. 启动从机读取二进制日志:START SLAVE; 可以单独启动IO或SQL线程
使用mysqlbinlog工具查看二进制日志
***********************************************************************************************************
master mysql> FLUSH TABLES WITH READ LOCK; 阻止更新
master mysql> SHOW MASTER STATUS; 查看复制状态
slave mysql> SELECT MASTER_POS_WAIT('log_name', log_pos);
slave mysql> UNLOCK TABLES;
CHANGE MASTER TO MASTER_HOST='192.168.11.10',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-master-bin.000003',MASTER_LOG_POS=120;
MySQL复制原理及过程相关推荐
- MYSQL复制原理及其流程-详
MySQL复制概述 保证主服务器(Master)和从服务器(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保 ...
- MySQL复制原理与配置
一.Mysql复制基本原理 二.Mysql复制中Binlog的三种格式 2.1 三种格式的介绍 2.2 Binlog格式的优缺点 2.3 Binlog基本配置 三.Mysql常见两种复制方式 3.1 ...
- Mysql 复制原理以及配置 简要分析
这个图是我根据自己的理解将Mysql的主从复制的流程给画了出来,关于什么是Mysql主从复制技术,这里简单说一下. 有一次去一家刚刚成立的游戏公司面试,面试官问用过Mysql主从技术吗?我说:用过,我 ...
- 【MySQL】MySQL复制原理与主备一致性同步工作原理解析(原理篇)(MySQL专栏启动)
- mysql 复制方式_MySQL复制方法
MySQL的二进制日志,MySQL复制原理,MySQL主从模式搭建,MySQL双主模式搭建,MySQL级联模式搭建,MySQL半同步模式复制 一.二进制日志 1.概念 MySQL的二进制日志(bina ...
- MySQL 复制:最简单也最容易配置出错
业务需要上线,所以除了表和索引的结构设计之外,你还要做好高可用的设计.因为在真实的生产环境下,如果发生物理硬件故障,没有搭建高可用架构,会导致业务完全不可用. 而这在海量并发访问的互联网业务中完全不敢 ...
- mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货
0.为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出 ...
- mysql安装原理_全面解读MySQL主从复制,从原理到安装配置
为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了 ...
- mysql 半同步复制_Mysql半同步复制原理及问题排查
mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master ...
最新文章
- ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0
- dataTable 从服务器获取数据源的两种表现形式
- 现阶段的微信小程序能实现直播功能么?
- MonoBehaviour生命周期
- Centos 7 搭建DNS正向解析和反向解析
- Codeforces Round #476 (Div. 2) C. Greedy Arkady
- DateTimePicker控件在WinXP下的BUG
- Codeforces 999F Cards and Joy 【dp】【性质】
- web 前端routine
- Docker镜像导致centos-root根分区容量爆满
- uni-app 使用高德地图
- VB程序设计教程(第四版) 龚沛曾
- 【Saba MMD Win10x64编译】
- protoc ——protubuf编译后的可执行文件命令usage
- 无线网络经常掉线的解决办法
- C++ - std::srand
- Pytorch机器学习(六)——YOLOV5中的自适应图片缩放letterbox
- 显卡T600和RTX3050哪个好
- web erp注意问题
- Js判断是否为数字,是否为空,是否为整形,是否为浮点型,是否为对象