mysql小白系列_14 线上故障分析与排错
1.重现故障5---线上执行update报错,并处理。(表结构和UPDATE语句自己构造,请给出详细步骤)
1)update故障出现ERROR 1206 (HY000): The total number of locks exceeds the lock table size
root@slave01 15:34: [test]> select count(*) from AZ2C_D01600_1;
+----------+
| count(*) |
+----------+
| 10394605 |
+----------+
1 row in set (10.86 sec)
root@slave01 16:03: [test]> desc AZ2C_D01600_1;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| f1 | varchar(255) | YES | | NULL | |
| f2 | varchar(255) | YES | | NULL | |
| f3 | varchar(255) | YES | | NULL | |
| f4 | varchar(255) | YES | | NULL | |
| f5 | varchar(255) | YES | | NULL | |
| f6 | varchar(255) | YES | | NULL | |
| f7 | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
root@slave01 16:03: [test]> show create table AZ2C_D01600_1;
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| AZ2C_D01600_1 | CREATE TABLE `AZ2C_D01600_1` (
`f1` varchar(255) DEFAULT NULL,
`f2` varchar(255) DEFAULT NULL,
`f3` varchar(255) DEFAULT NULL,
`f4` varchar(255) DEFAULT NULL,
`f5` varchar(255) DEFAULT NULL,
`f6` varchar(255) DEFAULT NULL,
`f7` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
root@slave01 16:03: [test]> update AZ2C_D01600_1 set f3='asdfasdf ' where f1 like '%sdfsfd%';
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
root@slave01 16:04: [test]>
2)检查参数innodb_buffer_pool_size
root@slave01 16:06: [test]> show variables like 'innodb_buffer_pool_size';
+-------------------------+---------+
| Variable_name | Value |
+-------------------------+---------+
| innodb_buffer_pool_size | 5242880 |
+-------------------------+---------+
1 row in set (0.00 sec)
[root@slave01 ~]# cat /etc/my.cnf |grep innodb_buffer_pool_size
innodb_buffer_pool_size = G
[root@slave01 ~]# ssh master cat /etc/my.cnf |grep innodb_buffer_pool_size
innodb_buffer_pool_size = G
[root@slave01 ~]# ssh slave02 cat /etc/my.cnf |grep innodb_buffer_pool_size
innodb_buffer_pool_size = G
当前主库是slave01,一主二从的
innodb_buffe_pool_size均设置错误
3)首先修正从库错误参数,并重启生效
root@slave02 16:11: [(none)]> select @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 2147483648 |
+---------------------------+
1 row in set (0.00 sec)
root@master 16:12: [(none)]> select @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 2147483648 |
+---------------------------+
1 row in set (0.00 sec)
4)准备切换到从库
- 1.停止mha服务
/usr/local/bin/masterha_stop --conf=/mysqlData/mha/etc/app.cnf务 - 2.如果两次mhafaliover时间不超过8小时,需要删除文件
/mysqlData/mha/etc/app/app.failover.complete - 3.在mha配置文件
/mysqlData/mha/etc/app.conf确定新的mastercandidate_master=1
5)停止zabbix或者其他监控告警,停止mha服务,切换到从库
- 1.关闭原主库的事件调度
event_scheduler=OFF - 2.切换新主库
/usr/local/bin/masterha_master_switch --master_state=alive --conf=/mysqlData/mha/etc/app.cnf
Wed Mar 14 22:58:51 2018 - [info] * Phase 5: New master cleanup phase..
Wed Mar 14 22:58:51 2018 - [info]
Wed Mar 14 22:58:51 2018 - [info] slave01: Resetting slave info succeeded.
Wed Mar 14 22:58:51 2018 - [info] Switching master to slave01(192.168.3.21:3306) completed successfully.
- 3.更改原来主库的参数
innodb_buffer_pool_size为正确值,并重启 - 4.启动新slave复制
CHANGE MASTER TO \
MASTER_HOST='192.168.3.21', \
MASTER_PORT=3306, \
MASTER_AUTO_POSITION=1, \
MASTER_USER='repl', \
MASTER_PASSWORD='Rep12#3@';
#因为手工在从库做了修改,导致主从同步失败
#启用了GTID,使用mysqldump备份恢复进行重建从库
SET @@GLOBAL.GTID_PURGED='73c029dc-2034-11e8-90a5-005056a365b6:1-594908,
856d79f8-2038-11e8-b511-005056a330bb:1-3,
b658767f-2044-11e8-951f-005056a330bb:1-188730';
--
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000135', MASTER_LOG_POS=1060653593;
--
-- Current Database: `db1`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db1` /*!40100 DEFAULT CHARACTER SET utf8 */;
#直接在mysqldmp恢复后的从库上执行change master后start slave,无法同步
#重启myslq后报错Slave failed to initialize relay log info structure from the repository,reset slave就OK了
root@master 17:52: [(none)]> reset slave;
Query OK, 0 rows affected (0.01 sec)
root@master 17:53: [(none)]> CHANGE MASTER TO
-> MASTER_HOST='172.16.3.153',
-> MASTER_PORT=3306,
-> MASTER_USER='repl',
-> MASTER_PASSWORD='Rep12#3@',
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
https://www.cnblogs.com/mysql-dba/p/7201513.html
http://blog.csdn.net/wll_1017/article/details/70332107
https://www.topjishu.com/7997.html
http://www.mamicode.com/info-detail-1457556.html
2.请给出MySQL数据丢失的最佳解决方案?(自由发挥)
数据写入内存,但未写log未落盘
1)数据丢失后的解决方案?
- 业务重做
- 找客服,客服安抚客户
2)防止数据丢失
- 主从复制采用半同步方式
- 双1
- 超融合存储
- 换oracle
mysql小白系列_14 线上故障分析与排错的更多相关文章
- mysql小白系列_11 MHA
一.MHA是什么?能干什么的 (1)以Perl语言写的一套Mysql故障切换方案,一个脚本管理工具 (2)保障数据库的高可用性 (3)修复多个slave之间的差异日志,最终使所有的slave保持数据一 ...
- mysql小白系列_07 锁与事务
1.MySQL参数autocommit生产环境设1还是0?为什么? 2.MySQL参数tx_isolation生产环境上大多数是设什么值,为什么? 3.与MySQL锁相关的有哪些因素? 1.MySQL ...
- mysql小白系列_05 日常操作
mysql启动/关闭 my.cnf的调用顺序 [root@docker02 bin]# ./mysql --help Default options are read from the followi ...
- mysql小白系列_08 zabbix添加自定义监控项items和触发器
监控mysql存活 1.配置agent自定义参数 vi /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/z ...
- MySQL慢查询优化(线上案例调优)
文章说明 这篇文章主要是记录自己最近在真实工作中遇到的慢查询的案例,然后进行调优分析的过程,欢迎大家一起讨论调优经验.(以下出现的表名,列名都是化名,实际数据也进行过一点微调.) PS:最近做了一个面 ...
- mysql小白系列_13 Online DDL
Online DDL: 一.FIC之前的添加删除二级索引: 1.首先创建临时表,定义目标新表的选项和索引 2.逐行拷贝数据到临时表 3.插入行时更新索引信息 4.数据全部被拷贝到新表后,删除旧表,re ...
- mysql小白系列_10 mysql主从复制原理
1.如何解决主从复制延迟的问题? (1)主从复制原理 http://www.cnblogs.com/jenvid/p/8410922.html 1.salve执行slave start,salve服务 ...
- mysql小白系列_09 mysql性能优化关键点
一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis. ...
- mysql小白系列_08 zabbix3.2.6概念及部署
一 zabbix功能简介 1.zabbix三大监控组件 zabbix server web gui database zabbix_server zabbix proxy agent client 2 ...
随机推荐
- 2019-2020-1 20199328《Linux内核原理与分析》第七周作业
分析Linux内核创建一个新进程的过程 2019/10/28 18:34:58 笔记部分 首先是查看进程描述符(用来描述进程,其代码比较庞大)的一些内容 系统调用回顾 fork.vfork.clone ...
- Linux下解压rar压缩包
wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gz rar软件不需要安装,直接解压到/usr/local下,以下操作需要有root权限. ...
- Docker基本使用(一)
一.为什么使用容器? 1. 上线流程繁琐开发->测试->申请资源->审批->部署->测试等环节2. 资源利用率低普遍服务器利用率低,造成过多浪费3. 扩容/缩容不及时业务 ...
- XEP-0198:流管理
------------恢复内容开始------------ 原文来自:https://xmpp.org/extensions/xep-0198.html,只翻译了技术方面的内容. 摘要:这个规范定义 ...
- Python下redis包安装
找到Python的第三方包安装路径,在dos命令行中切换到该目录,输入: pip install redis 最后在Python解释器中即可.
- mpvue开发微信小程序之时间+日期选择器
最近在做微信小程序,技术栈为mpvue+iview weapp组件库. 因项目需求,要用到日期+时间选择器,iview组件库目前还未提供时间日期选择器的组件,小程序官方组件日期时间也是分开的,在简书上 ...
- 如何在linux服务器下快速安装配置Node.js
简单粗暴,先用xshell或其他软件连接服务器 1.下载(此处版本根据官网版本自己修改) wget https://npm.taobao.org/mirrors/node/v8.9.3/node-v8 ...
- centos6.5宽带拨号上网
CentOS6以后要安装rp-pppoe这个软件,centos之前的版本是adsl-setup命令安装. (1)查看是否安装 #rpm -qa|grep rp-pppoe 没有内容输出则没安装,若可以 ...
- LeetCode 56,区间合并问题
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的第33篇文章,我们一起来看LeetCode的第56题,它的难度是Medium. 题意 这道题的题意也很简单,只有 ...
- 题目分享I
题意:2*n的地面,q次操作,每次操作将地面翻转,若该地是地面那翻转就成熔岩,如果是熔岩那翻转就成地面,熔岩人不能走,问人是否能从1,1走到2,n (ps:1,1和2,n不会在翻转的范围内,n,q≤1 ...