挖坑,踩坑,填坑

又到了周五的胡扯时间,今天来扯一扯坑。

最近,有一个感觉,就是一直在填坑,我想不止我一个人,不少奋战在一线的“勇士”,都在填坑。一般来说坑分两种,自己挖的,和别人挖的。挖坑也是有水平的,有的坑你根本就无从下手,除非你有“多年的道行”,否则你可能做的不是填坑,而是把坑弄的更大。

除了有多年“挖坑”,“踩坑”,“填坑”,的道行,你大约还的总结出来一套,如何来补坑的办法。

1 望, 遇到一个坑,首先你需要判断的是他到底是不是一个坑,首先要望,你先不要有任何的动作,先要观察,因为不了解具体情况和成因的情况下,你做的任何事情,都肯能变得更糟。

2 闻问,在看完之后,你还的要问,你观察的在细致入微,也哪怕有遗漏,所以如何问,并且闻,问出你关心的,听出弦外之音,找到坑的中心点。

3 切,一般到这个步骤就开始要出事了,要不你填坑,要不你背锅。一般来说我是要找一个和生产无关的环境,来排除故障,这当然是最好的,很多时候可气的是,没有环境要硬来,所以这时候你是 “大化小”, 还是“连根拔”。就要看你的运气了,一般来说我的习惯是 “大化小”。

废话了这么多,下面来举个例子,最近在做多源复制的事情,而作为源头的MYSQL 数据库,是五花八门,(前些日子有一篇文章已经说了一部分了),这次的故障更是奇怪,命名已经添加了 GTID的参数,数据库也没有任何报错,但在多源复制备份数据库的过程中,发现这个库和别的不同,虽然GTID 已经打开了,但备份后,根本没有GTID的信息。最终导致这个库的多源复制中,操作失败。

本着找到问题根源的精神,我询问了一下,这个库应该是很早的一个库,能和这个库在这个公司的运维人员并且参与这个库的建立的,估计是找不到了。并且这个库已经运行了一段时间了,除了有过一些“小病小灾”,也没有出过其他问题。所以上面说的 “闻问“,已经是无计可施了,查看数据库的错误日志里面也没有可以一眼辨明是非的信息, 那就的突破点,首先既然是添加了GTID的参数,那至少在BINLOG 里面是可以看到GTID的信息的,至少我的验证一下,所以先需要 mysqlbinlog 一下,到底BINLOG 中到底有什么问题?

敲了这个命令后,系统报出 unknow variable 'default-character-set=utf8'

在进入到系统内部看看当前的字符集是非是设置成 UTF8 ,果然不是,这个参数是错误的。

在MY.CNF 中注销掉这个参数,重启动服务器

再次运行MYSQLBINLOG 解开BINLOG 后发现有错误,看了刚踩完一个坑,又来一个坑,经过查询后,提示是MYSQLBINLOG 的版本不对

通过查询系统中存在三个MYSQLBINLOG ,经过逐一的测试,发现/mysql/bin/mysqlbinlog 这个才是真正可以使用的MYSQLBINLOG ,而默认键入的 mysqlbinlog 默认指向的位置是错误的。

同理看来备份的MYSQLDUMP的版本也估计有问题,直接找到和正常MYSQLBINLOG 目录一致的位置的MYSQLDUMP 进行备份

久违的GTID 信息重要出现了,到此问题解决完毕。

其实整个流程走下来,并没有什么太难的问题,其实和我们日常中遇到的问题一样,问题都不难,但解决起来的手法问题和步骤就成了能否快速解决问题的所在。

好的今天就扯到这里。

本文分享自微信公众号 - AustinDatabases(AustinDatabases)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玩转JavaEE

扎心一问:数据库分库分表就能无限扩容吗?

刚工作的小伙伴,总会有各种疑问,刚开始是对 JDK API 的疑问,对 NIO 的疑问,对 JVM 的疑问,当工作几年后,对服务的可用性,可扩展性也有了新的疑问...

12530
来自专栏二狗的DBA之路

MySQL分区表姿势

分区的功能不是在存储引擎层实现的。因此不只是InnoDB才支持分区。MyISAM、NDB都支持分区操作。

11820
来自专栏运维经验分享

MongoDB认证和授权

MongodDB存储所有的用户信息在admin数据库的集合system.users中,保存数据库、密码和数据库信息。MongoDB默认不启用权限认证,只要能连接...

13220
来自专栏分享/效率/工具/软件

springboot2.X 使用spring-data组件对MongoDB做CURD

基于快速开发,需求不稳定的情况, 我决定使用MongoDB作为存储数据库,搭配使用spring-data

35930
来自专栏二狗的DBA之路

mysql-sandbox 安装

稍等20s后,就会自动在/root/sandboxes目录下生成一个类似msb_10_3_0的目录

11230
来自专栏WalkingCloud

MySQL常用命令学习笔记

检测数据库名称是否存在,不存在则创建 CREATE DATABASE [IF NOT EXISTS] db_name;

12260
来自专栏WalkingCloud

使用Xtrabackup备份MySQL数据库

Xtrabackup是 Percona公司开发的一款开源的能够对innodb和xtradb数据库引擎进行数据库热备的工具,支持MySQL、Percona ser...

13580
来自专栏二狗的DBA之路

MySQL原生密码认证

http://mp.weixin.qq.com/s?__biz=MzAwMDU2ODU3MA==&mid=2247484640&idx=1&sn=5a25f1e...

10150
来自专栏WalkingCloud

使用Xtrabackup实现MySQL数据库的增量备份

接上一篇文章使用Xtrabackup备份MySQL数据库,下面介绍使用Xtrabackup实现MySQL数据库的增量备份

9320
来自专栏赵KK日常技术记录

我转载了CSDN一篇5万+访问量的文章

逆向生成实体类等文件,是项目常用技能,单纯IDEA插件也可以实现将数据库表字段直接生成到指定文件夹下的实体类,Mybatis的逆向工程还可生成C...

12540

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励