mysql 从库落后主库太多优化

有时候为了避免master.info和中继日志崩溃,在容忍额外的fsync()带来的开销,推荐设置
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1

当然,如果备库跟主库延迟特别大,备库的io线程谢了很多中继日志,通过relay_log_purge设置,sql线程重放完一个中继日志中的事件后会尽快将删除。
极端情况下,需要设置relay_log_space_limit,这样如果中继日志的大小超过这个值,I/O线程将停止,等待sql线程释放磁盘空间。

sync_master_info:每间隔多少事务刷新master.info,如果是table(innodb)设置无效,每个事务都会更新
    The effects of this variable on a replication slave depend on whether the slave‘s master_info_repository is set to FILE or TABLE
sync_relay_log:默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制
    If the value of this variable is greater than 0, the MySQL server synchronizes its relay log to disk (using fdatasync()) after every sync_relay_log events are written to the relay log. Setting this variable takes effect for all replication channels immediately, including running channels
sync_relay_log_info:每间隔多少事务刷新relay-log.info,如果是table(innodb)设置无效,每个事务都会更新
master_info_repository:记录主库binlog的信息,可以设置FILE(master.info)或者TABLE(mysql.slave_master_info)
relay_log_info_repository:记录备库relaylog的信息,可以设置FILE(relay-log.info)或者TABLE(mysql.slave_relay_log_info)

为了快速让从库同步主库最新数据,可临时修改以下配置:

innodb_flush_log_at_trx_commit = 0

sync_binlog = 0

sync_master_info = 2000
sync_relay_log = 2000
sync_relay_log_info = 2000

原文地址:https://www.cnblogs.com/lvcisco/p/9272860.html

时间: 2024-07-31 08:20:02

mysql 从库落后主库太多优化的相关文章

MySQL生产库中添加修改表字段引起主从崩溃的问题总结

上周末和开发人员对线上库中的部分表的在线DDL和update,这过程中出现了一些意料之外的问题,现将过程.分析和解决方案在这里总结一下 一. 需求背景: 要在如下表中添加字段(modified_at)并且更改默认值 table_name { baby_compbaby_comp_statusbaby_usrbaby_ad_userbaby_campbaby_ordbaby_acc_eva } 每张表执行如下操作ALTER TABLE `$table_name` ADD COLUMN `modif

mysql 生产库大表delete

mysql 生产库大表删除 一般线上业务增长较快,造成某些表达到分表的临界值,表行数超过2000w且查询频繁,如表业务没有较多的聚合查询的话,可以考虑按时间归档部分历史数据.现推荐2种本人之前使用过的删除方式. 按照主键或者索引拆分后分段执行,使用存储过程 需要注意这种大表删除,如果是在主库执行,尽量把会话改成语句格式,以保证不会出现复制延迟 语句如下:set session binlog_format='STATEMENT'; CREATE PROCEDURE sp_delete_data()

我的MYSQL学习心得(十六) 优化

这一篇主要介绍MYSQL的优化,优化MYSQL数据库是DBA和开发人员的必备技能 MYSQL优化一方面是找出系统瓶颈,提高MYSQL数据库整体性能:另一方面需要合理的结构设计和参数调整,以提高 用户操作响应的速度:同时还有尽可能节省系统资源,以便系统可以提供更大负荷的服务 如果大家看过我写的两篇文章,那么学习MYSQL的索引就不会太难,因为是相通的 SQLSERVER聚集索引与非聚集索引的再次研究(上) SQLSERVER聚集索引与非聚集索引的再次研究(下) 其实MYSQL也有SQLSERVER

MySQL出现同步延迟如何解决?优化?

工作中常常遇到的问题,叫我很是头疼,稍稍整理了个方案. 1.主从复制的从库太多导致复制延迟 优化:建议从库数量3-5个为宜(具体看自己硬件配置)   2.从库硬件比主库硬件差 优化:提升硬件性能   3.慢SQL语句过多 优化:SQL语句执行时间太长,需要优化SQL语句(需要联系DBA开发共同商讨优化语句)   4.主从复制的设计问题 优化:主从复制单线程,可以通过多线程IO方案解决:另外MySQL5.6.3支持多线程IO复制.   5.主从库之间的网络延迟 优化:尽量链路短,提升端口带宽  

一主两从的环境,如果主库挂了,如何选举一个从库作为主库?

如图: 如果M挂了,怎么从S1和S2中选举一个从库作为主库? 传统复制的解决方法 (1)查看从库状态: S1:show slave status: S2:show slave status: [email protected] [(none)]>show slave status\G*************************** 1. row ***************************               Slave_IO_State: Reconnecting af

mysql从库Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'报错处理

年后回来查看mysql运行状况与备份情况,登录mysql从库查看主从同步状态 1 mysql> show slave status\G; 2 *************************** 1. row *************************** 3 Slave_IO_State: 4 Master_Host: 101.200.*.* 5 Master_User: backup 6 Master_Port: 3306 7 Connect_Retry: 60 8 Master_

MySQL从库不能同步,报错Relay log read failure

问题:MySQL从库的数据不能同步,从库SHOW SLAVE STATUS提示如下错误: Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log)

MYSQL开发性能研究——批量插入的优化措施

一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1);   很显然,在MYSQL中,这样的方式也是可行的.但是当我们需要批量插入数据的时候,这样的语句却会出现性能问题.例如说,如果有需要插入100000条数据,那么就需要有100000条insert语句,每一句都需要提交到关系引擎那里去解析,优化,然后才能够到达存储引擎做真的插入工作. 正是由于性能的瓶颈问题,MYSQL官方文档也就提到了使

MySQL从库的列类型不一致导致的复制异常问题

官方文档:https://dev.mysql.com/doc/refman/5.6/en/replication-features-differing-tables.html slave_type_conversions  这个参数在mysql5.5.3 引入,目的是启用row 格式的bin-log 的时候,如果主从的column 的数据类型不一致,会导致复制失败,mysql5.5.3 之后支持,主库是int 从库是bigint 这种类型的复制, 这个参数的意义就是控制些类型转换容错性. 如果从