Mysql主从复制的问题与解决
时间:2022-07-22
本文章向大家介绍Mysql主从复制的问题与解决,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
主从复制的原理
- 主库将变更的操作写入bin-log日志中(增,删,改操作).
- 从库中的I/O线程将主库的bin-log拷贝到本地,写入relay-log(中继日志中)
- 从库的SQL线程从中继日志中读取bin-log然后再在本地执行一遍SQL,保证从库和主库数据的一致性.
主从延迟问题产生的原因
dump log的操作是并发的多线程操作,但是从库的I/O和SQL线程是单线程的操作,(5.6.x后I/O可以多线程操作),但是SQL线程的执行一定是串行的执行,这也就导致了主从复制的延时问题的原因.
SQL的执行是串行化的所以导致,在高并发的情况下,从库的数据比主库慢一些,是有延时的.基本上写1000/s 会产生十几毫秒的延时问题,2000/s 会出现几十毫秒的延时.
主从复制的数据丢失问题
如果主库突然宕机,然后数据还没有同步到从库,那么数据在从库上是没有的可以存在数据的丢失.
- 半同步复制 - 解决数据丢失问题
半同步复制,semi-sync复制,指的是主库写入bin-log日志后,就会强制此时立即同步数据库,所有从库可以将bin-log写入自己本地的relay-log,只有有一个从库写成功,就会给主库返回一个ack,主库接受到ack才会认为写操作完成,否则将进行回滚从新写入.
mysql主从同步延时问题
使用下面的语句可以看到从库落后主库的秒数
show status,Seconds_Behind_Master
解决方案:
- 分库:将主库拆分为4个主库,减少主库的写压力,此时主从延时可以忽略.
- mysql的并行复制,多个库并行复制,如果说某个库的写入并发就是特别高,单库写并发达到了2000/s,并行复制还是没意义。如果就一个表达到2000/s 其他都才10/s 那么并行复制没什么意义.
- 在插入数据后不进行查询直接更新,这样的更新就是在主库进行
- 寻找最优持仓期的开盘缺口盈利交易策略基于Matlab
- Android SlidingMenu 侧拉菜单的使用(详细配置)
- Rafy 框架 - 幽灵插件(假删除)
- 用粒子群优化算法求解旅行商问题
- 使用CNN(LSTM架构)进行序列预测基于TensorFlow
- 【独家】周志华教授gcForest(多粒度级联森林)算法预测股指期货涨跌
- 如何利用SOTER,1个版本内完成指纹支付开发?
- Rafy 框架 - 大批量导入实体
- Rafy 框架 - 执行SQL或存储过程
- 关于activitygroup过时,用frament替换操作
- Rafy 框架 - 为数据库生成注释
- CNN预测股票走势基于Tensorflow(思路+程序)
- 路径查找器AI
- android推荐使用dialogFrament而不是alertDialog
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Qt编写安防视频监控系统34-onvif事件订阅
- Qt编写安防视频监控系统35-onvif抓拍图片
- Qt音视频开发1-vlc解码播放
- 【TBase开源版测评】分布式数据自动shard分片
- STL—mt19937
- 潘石屹用Python解决100个问题 | 字符类型统计
- 潘石屹用Python解决100个问题 | 分解质因数
- 使用Java Spring消费MySQL中的数据库存储过程
- 部署 Docker 及配置
- 【Spark on K8S】Spark里的k8s client
- 【每日一题】30. Substring with Concatenation of All Words
- MySQL选错索引导致的线上慢查询事故复盘
- 【Kubernetes】additionalPrinterColumns的配置
- ES使用json字符串索引文档时报错
- VUE 过滤输入框中的特殊字符 只保存中文、英文及数字