MySQL在线加索引引起的堵塞案例引出Online DDL锁分析
MySQL在线加索引引起的堵塞案例引出Online DDL锁分析案例: 线上一个sql查询,开发事先没商量就自己上线了.这个sql很简单就是一个简单select一张表然后两个字段的条件过滤,但问题是这两个字段都没有索引,导致每次都全表扫描,很慢. 发现这个慢查询后,去观察了这两个字段的字段的过...
结合案例说说5.7使用gtid同步后,mysql.gtid_executed引起的从库gtid断层
结合案例说说5.7使用gtid同步后,mysql.gtid_executed引起的从库gtid断层,从库重复拉取主库数据,导致数据在从库被重复执行;mysql.gtid_executed,5.7.5新增的这张表在5.7.5之前的版本中,开启gtid模式的同步,slave端必须要开启log_slave_updates,这是因为,当slave重启后无法得知当前slave已经运行到的GTID位置,因为变...
mysqldump一个小功能描述:参数net-buffer-length的使用
mysqldump的net-buffer-length有大师说mysqldump的net-buffer-length这个参数是个鸡肋,对与性能提升不是很大.之前也就没关注过.偶然一次测试.碰到了.就研究了下..其实还是很有用的(对于我们这种菜鸟来说).下面结合实例讲讲:讲net-buffer-length之前,先讲另外一个mysqldump的参数--extended-insert这个参数的意思就...
通过一个案例分析binlog的刷盘过程:大事物提交导致整库事物堵塞的分析.
案例描述: 一次线上误操作.将一个大表的数据清理到历史表.涉及历史数据有1600w,大约15个G的数据.当时偷懒,就直接insert into history select * from table where xxxx;这条sql执行了大概70分钟.执行过程中没有什么大问题.在提交那一刻,服务器负载飙升,mysql线程飙升到1500多(平时只有300多),大量事务提交...
mysql对于unique_checks的支持
日前在percona官方看到tokudb对与unique_checks的支持.就大概的看了下,也顺便测了下.unique_checkstokudb与innodb对于这个参数有很大区别.开启(unique_checks=1 or on)时没什么区别..都是要需要检查唯一性.关闭(unique_checks=0 or off)时,就有区别了在unique_checks关闭状态,不管什么引擎,有两个情况下,性能提升还是...
通过一个案例分析讲解mysql的auto_increment锁带来的表锁(innodb_autoinc_lock_mode)
案例描述:线上一张表有大概2亿条,50个G左右大小的数据,业务进行重新规划,需要将绝大部分数据进行历史归档.当时为了方便,就新建一张相同结构的表,然后快速的rename成线上表,然后将备份表需要导入到线上表的数据进行insert into select操作.结果,线上表产生表锁,业务全部堵住,发现情况时,已经没办法撤销insert操作(因为已经...
基于GTID的一主两从,主从切换案例分析(Got fatal error 1236 )
故障描述:一主两从,从库2个都连的主库,主库停机, 暂定为主库为A,从库一为B,从库二为C,从库B比从库C更靠后,现在将从库B设为主库,从库C去连从库B,但是C从库却无法同步:B从库:mysql> show master status\G*************************** 1. row *************************** &n...
案例分析:mysql子查询,DEPENDENT SUBQUERY特别小心
案例分析:开发提了个订正update数据的sql,一开始没注意看,就直接跑了,结果跑了半天,没动静,以为是在等锁,看线程状态是running的,那说明是没堵的,那就奇怪,为什么会跑半天,因为select的结果集很快的,说明索引是没问题,于是中断了update,准备分析下.先看看update的语句:update product_modelset content = replace(conte...
binlog很有用的2个参数binlog_rows_query_log_events和binlog_row_image
mysql 5.6.2 引入的两个参数binlog_rows_query_log_events和binlog_row_image对于使用row格式的binlog,个人觉得很有用;binlog_rows_query_log_events =1 在row模式下..开启该参数,将把sql语句打印到binlog日志里面.默认是0(off); 虽然将语句放入了binlog,但不会执行这个sql,就相当于...
crash-safe replication的解析及主从注意事项
先前碰到一个故障,于是引入了crash-safe replication,下面仔细描述;故障描述: 从库(slave端)宕机,重启后,mysql同步发现有数据主键冲突;故障分析: 从库宕机后,从库的mysql服务遭到非正常退出,部分数据可能未刷新到磁盘;但这个案例是已经有数据刷新到磁盘了.重启后,从库又重新从主库拉...
mysql特性:semi consistent read
先看看官方的说法:semi consistent readA type of read operation used for UPDATE statements, that is a combination of read committed and consistent read. When an UPDATE statement examines a row that is already locked, InnoDB returns the latest committed version to MySQL so that MySQL can determi...
mysql缓存(innodb_buffer_pool_size)在线调整细说
5.7以后innodb内存(innodb_buffer_pool_size)可以在线调整.这对于dba来说.挺不错的,但调整需要注意:不是随意调小或者调大的,是遵循一定规则的.在此,5.7引入了innodb_buffer_pool_chunk_size参数,这个参数就是来控制内存大小规则的.innodb_buffer_pool_chunk_size默认值为128m(134217728).这个值是以缓存池来计算的.所...
关于mysql的redo日志参数innodb_log_write_ahead_size中read-on-write的理解
先来说说innodb_log_write_ahead_size, 这个参数是在5.7.4引入的.#innodb_log_write_ahead_size 默认为8192.#引入write-ahead,将当前写入redo文件的偏移量整除innodb_log_write_ahead_size该值,不能整除时则补0,多写一部分数据,这样一来,写入的数据是与磁盘的block size保持一致了.这样就可以直接写入磁盘.就省去了先读...
关于innodb_rollback_on_timeout测试
innodb_rollback_on_timeout innodb_lock_wait_timeout最开始看到innodb_rollback_on_timeout 时,没有好好理解transaction timeout的意思.以为只要是连接超时就会触发,今天研究了一下.只能说巨坑;以下测试.隔离级别皆为RR模式.测试过程. 实验一: innodb_rollback_on_timeout =oninnodb_lo...
5.7.8新增的一个很有的参数:max_execution_time
介绍5.7.8新增的一个很有的参数:max_execution_time这个参数是控制select的时间,能有效控制在主库的慢查询情况.如下例子:mysql> show variables like 'max_execution_time'; +--------------------+-------+| Variable_name | Value |+----...
关于mysql彻底删除用户的问题
之前碰到 一个奇怪问题,删除了mysql.user里面的某个用户后,flush privileges后,在建同样的用户后,发现权限不对...后来才发现.是mysql.db在作怪;大致讲下,在删除某个用户对某个库的的insert权限后,删除该用户,flush privileges后,在建同样名字和host的用户,给予相同库或其他库的update权限,结果发现,之前删除的insert权限又...
mysqldump的一个大失误.关于--compact参数使用不当的教训...记录...备用...
mysqldump 的一个参数 --compact官网给出的说法是这样:--compactProduce more compact output. This option enables the --skip-add-drop-table, --skip-addlocks, --skip-comments, --skip-disable-keys, and --skip-set-charset options.大概意思就是让导出的脚本里面取消一些注释和不必要的sql.下面这这几行就是加...
mysql关于 通过关联表update数据的误区测试
关于update关联表的写法存在很多误区,以前我自己也经常犯错....一般的写法有如下几种:update test1 set name =(select name from test2 where test1.id=test2.id);update test1 a,test2 b set a.name=b.name where a.id=b.id;update test2 set test2.name=(select name from test1 where test1.id=test2.id) where exis...
mysql 5.1升5.6 升级后,出现问题,随手记录,以备用
错误:mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'born_CRM'': Cannot load from mysql.proc. The table is probably corrupted (1728)Warning: Using a password on the command line interface can be insecure.mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'mysql'': Cannot lo...
mysql 5.6 后热数据的加载
故障现象:在数据库重启后,碰巧遇到业务高峰期,连接数满,导致用户登录一直等待,此时数据库处于无响应状态.故障分析:当数据库重启后,在数据库buffer中的热数据需要innodb本身去预热.如果buffer太大,依靠innodb自己去预热,将会有很长一个周期才能实现.此时热数据就需要到磁盘去寻找,就给磁盘的I/O带来很大的压力.遇到瓶颈,...