题主说的方案感觉非常不靠谱。

不过mysql-proxy本人也几乎没怎么接触,它能否实现上诉功能有些不大确定,即使它有,也不建议为了这个就用它,官网自己都不推荐用到生产环境。

针对主从延迟,本人的经验如下:

业务量不大的主库能处理业务就全放在主库吧,从库只做灾备,备份,对实时性要求不高的统计报表类工作;

已经出现延迟的一般来说,就慢慢等吧,试图通过重启db之类的操作是无法解决的,还会因为大事务回滚再重做导致花的时间更长。

延迟N天无法解决的那就重做slave。

为什么会延迟N天,难道仅仅是因为从库单线程吗?

我感觉大部分都是主库上采用mixed的binlog_format,由于某种限制,无法基于statement,只好row模式复制。

那么如果当前sql是全表扫描,传到slave上执行时就是茫茫多次的全表扫描了。

下面是官网给出的在mixed下,自动从statement转换成row模式的条件

When running in MIXED logging format, the server automatically switches from statement-based to rowbased logging under the following conditions:

• When a function contains UUID().

• When one or more tables withAUTO_INCREMENT columns are updated and a trigger or stored

function is invoked. Like all other unsafe statements, this generates a warning ifbinlog_format =

STATEMENT.

• When the body of a view requires row-based replication, the statement creating the view also uses it. For

example, this occurs when the statement creating a view uses theUUID() function.

• When a call to a UDF is involved.

• When any INSERT DELAYED is executed for a nontransactional table.

• If a statement is logged by row and the session that executed the statement has any temporary tables,

logging by row is used for all subsequent statements (except for those accessing temporary tables) until

all temporary tables in use by that session are dropped.

This is true whether or not any temporary tables are actually logged.

Temporary tables cannot be logged using row-based format; thus, once row-based logging is used, all

subsequent statements using that table are unsafe. The server approximates this condition by treating

all statements executed during the session as unsafe until the session no longer holds any temporary

tables.

• When FOUND_ROWS() or ROW_COUNT() is used. (Bug #12092, Bug #30244)

• When USER(), CURRENT_USER(), or CURRENT_USER is used. (Bug #28086)

• When a statement refers to one or more system variables. (Bug #31168)

Exception.The following system variables, when used with session scope (only), do not cause the

logging format to switch:

• auto_increment_increment

• auto_increment_offset

• character_set_client

• character_set_connection

• character_set_database

• character_set_server

• collation_connection

• collation_database

• collation_server

• foreign_key_checks

• identity

• last_insert_id

• lc_time_names

• pseudo_thread_id

• sql_auto_is_null

• time_zone

• timestamp

• unique_checks

For information about determining system variable scope, seeSection 5.1.5, “Using System Variables”.

For information about how replication treats sql_mode, see Section 17.4.1.34, “Replication and

Variables”.

• When one of the tables involved is a log table in themysql database.

• When the LOAD_FILE() function is used. (Bug #39701)一般来说在slave上show proceslist看查看当前的system user正在执行什么,那就是问题SQL。如果pos点一直不动,也可以去主库对应的binlog上查看下执行的是什么玩意。

出现延迟时,查看下当前slave的cpu和磁盘状况一般来说如果从库没有其他业务,单线程的原因,cpu跑满一个核已经是极限了。磁盘io满的话,确认下是否有其他进程或mysql线程影响了它(比如从库正在dump或者超大的sql在执行),也可以尝试调整下slave上关于io的几个参数

从库raid卡,务必设置成write back的写策略这点本人深受其害,查了几个月才发现为什么我的SSD io性能这么烂。

批量的dml操作批量的dml操作如果不做处理,一般必然会出现延迟,建议业务低峰期执行,并将批量操作做下调整,一次dml 10000行,sleep一会,再dml 10000行。

具体的行数和sleep需要自己根据业务确定,能保证从库不延迟就好。

一点别的tips:如果还是经常性的短时间延迟,那就尝试加大从库的硬件配置,比如上sata SSD,pcie等

延迟的监控到位,可通过pt-heart-beat来准确监控延迟值,及时发现查看。

5.5以后版本的,可以考虑采用半同步复制,能解决少量延迟引起的问题,不过对tps性能损耗较大

升级到mysql 5.7吧,多线程复制,几乎完美解决单线程复制引起的从库延迟。

给出几个同步延迟的case,平时做的小记录故障案例:slave延迟很大

mysql 主从同步 阻塞_如何解决主从数据库同步延迟问题?相关推荐

  1. php mysql主从延迟_如何解决主从数据库同步延迟问题?php连接 mysql 数据库如何添加一个公共的配置文件50...

    在上一篇文章中,小编为您详细介绍了关于<图上属标注的什么样元器件?火车购票明明显示无座为什么样乘车后却发现有很多空座>相关知识.本篇中小编将再为您讲解标题如何解决主从数据库同步延迟问题?p ...

  2. mysql 连接中文乱码_彻底解决mysql中文乱码的办法

    MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如 ...

  3. mysql为什么需要中间件_为什么要用数据库中间件

    问题一:数据库存储的数据量不大,但并非的读写操作都很大,超过数据库服务器的处理能力. 基于阿里云RD版测试结果(Mysql处理性能) CPU        内存        连接数        T ...

  4. sql 不同数据库同步数据_什么是SQL数据同步

    sql 不同数据库同步数据 SQL Data Sync is a service that allows synchronizing data across multiple Azure SQL da ...

  5. 虚拟同步发电机_学术简报︱基于虚拟同步发电机控制的T型三电平并网逆变器研究...

    南京工程学院电力工程学院.南京工程学院自动化学院的研究人员朱爱华.赵涛.徐宏健.季宁一,在2019年第11期<电气技术>杂志上撰文指出,微电网作为可再生能源接入电网的有效途径越来越受到人们 ...

  6. 远程桌面 出现内部错误_如何解决远程桌面连接延迟高的问题?

    在对云主机进行日常运维时,我们经常需要使用远程桌面连接,但是传统意义上的远程桌面连接,是由客户端PC直接连接目标服务器,其连接质量的好坏,取决于客户端PC与目标服务器之间的网络带宽与延时,当企业业务范 ...

  7. mysql 读取clob数据类型_谈谈有关各数据库Blob、Clob类型字段的读取、保存更新

    经常有人谈到Blob类型字段的读写问题,我也来说两句. 最近在写一些东西,对常用数据库的数据类型.函数等作了一些比较,也写了许多了的测试代码,以下是我测试的结果: 测试数据库: MS Sql Serv ...

  8. ogg mysql表结构不一致_求助:OGG双向同步,数据不一致如何解决?(已解决)

    本帖最后由 hbm1985 于 2012-5-10 07:39 编辑 本人在搭建oracle goldengate 双向同步时,遇到一个问题:当两边同时更新同一条记录时,会出现两边数据不一致的问题. ...

  9. mysql删除端口配置文件_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...

    今天学习php,当然是要先安装好运行环境了,phpstyudy是一个运行php的集成环境, 一键安装对新手很友好,与时作为一个新手,便跟着教程安装了phpstudy集成环境. 很快安装好了,嗯.对新手 ...

最新文章

  1. python实现socket编程,客户端和服务端之间互相对话(二)
  2. 一个很简单小数正负数行转列问题
  3. 云端大数据实战记录-大数据推荐
  4. sparksql(1)——Dataframe
  5. CFileDialog
  6. 《数学分析》里的人生
  7. Linux常用的基本命令10
  8. 正则表达式,小于等于180且大于等于0的浮点型
  9. 分享一个帮助你有效避免SQL Injection攻击的在线手册 - bbobby-tables.com
  10. 厉害了网页扫码,所有方法都给你总结到这了,赶紧收藏
  11. R语言向量自回归模型(VAR)及其实现
  12. android黑色半透明dialog背景,Dialog背景半透明
  13. linux journalctl使用详解
  14. 服务器频繁重启怎么解决
  15. 微信小程序:语音变声器支持多种音效与流量主
  16. 七牛判断上传图片文件是否重复
  17. 通过需求条目的层次去解决问题
  18. Tridium niagara N4---报警告警信息点设置
  19. android锁屏软件开发,Android一键锁屏开发全过程
  20. 《少年的你》首映 易烊千玺坦言哭戏最有挑战

热门文章

  1. c语言time.h时区不对,用C语言修改系统时区,发现一堆问题,请各位大侠不吝赐教。...
  2. flask对mysql数据库增删改查_flask后台框架1.4(mysql配置+数据库增删改查)-Go语言中文社区...
  3. jira 查找issue_JIRA使用教程:高级搜索—字段参考4/4
  4. openstack mysql默认密码_OpenStack 安装数据库和rabbitmq消息队列 (三)
  5. linux dd 清屏 of=/dev/mem,Linux系统简介分区基础命令(ADMIN01-2)(示例代码)
  6. dsp呼吸灯C语言编程,DSP28335 呼吸灯程序
  7. android错误怎么关机,Android系统小技巧:系统崩溃了只重启部分子系统,而不是全部重启...
  8. thymeleaf比较符号问题
  9. 记一次线上coredump事故
  10. VMware上安装Linux镜像CentOS