自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (14)
  • 收藏
  • 关注

原创 【MySQL】数据库开发规范

背景之前也做了好多次数据库开发规范培训,也是时候整理一下自己写的开发规范。开发规范1.数据库命名规范数据库对象(库名、表名、列名等)必须使用小写字母,必要时候使用下划线分割数据库对象禁止使用mysql 关键字和保留关键字数据库对象中存储相关数据的列名和列类型必须一致,例如 玩家 id相关列 在各个表中列名和类型 bigint 均须一致数据库对象名称须见名知意,且长度限制在12个字符内数据库字段名表名尽量对重要字段带comment标识索引名带上标识,唯一索引uk_,普通索引idx_2

2022-02-28 18:51:17 2641 9

原创 MySQL进阶篇:如何根据源码学习排查问题

写在开头最近有看到很多人对于问题不知道怎么下手,之前自己的途径无非就是查询博客资料等,但是有时候查到的差异很大,所以就导致没有一个最标准的,所以有的时候就很无助,所以很多小伙伴可能会想着查看源码,但是又不知道如何查看源码,这里我就分享一下我自己工作中遇到问题,如何查看源码的。不是个大佬,只是分享一下自己的经验。所需工具1.数据库源码包:官方下载地址: https://dev.mysql.com/downloads/mysql/或者我的CSDN上传资源的里面可以免费下载。2.查看工具我自己用的p

2021-08-07 17:49:13 478 1

原创 推荐几本DBA提升的书籍

作为一个DBA,这段时间了解过很多书籍以及自己之前看过的,觉得一些些的不错的推荐给大家:FOR DBA和内核开发1.书名<MySQL运维内参>推荐理由: 对于想做DBA的朋友,了解数据库的朋友非常适合,日常的一些运维操作。2.书名<深入浅出MySQL>推荐理由:主要讲述数据库开发优化和管理。3.书名<高性能MySQL>推荐理由:偏向于致力于数据库优化的朋友。包含一些参数,硬件软件架构等优化。4.书名<数据库查询优化器的艺术>推荐理由:偏向于

2021-08-07 15:10:03 1162 3

原创 【redis】redis5.0安装部署以及线上配置文件

【代码】【redis】redis5.0安装部署以及线上配置文件。

2022-08-30 11:09:50 1047 1

原创 【MongoDB】Mongo4.0单实例以及副本集搭建(后附生产配置文件)

【MongoDB】Mongo4.0单实例以及副本集搭建(后附生产配置文件)

2022-08-30 11:03:12 790

原创 【TiDB】TiCDC canal_json的实际应用

在开始介绍之前先和大家简单介绍两个东西:1.目前流行的`缓存和DB一致性`的实现架构: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kFOYqtmZ-1656325050612)()] 基本的流程如图所示:MySQL 增删改 --> Canal(伪装slave)获取变更–> kafka 接......

2022-06-27 22:30:00 1258 1

原创 【Percona-Toolkit】系列之pt-table-checksum和pt-table-sync 数据校验修复神器

这次主要包含两个工具,都可以在percona-tookit里面找到pt-table-sync实际操作操作的时候会有压力?可以看到我在线上操作的时候数据库基本没有任何压力。该工具并不会对数据库产生任何性能影响。...

2022-06-21 22:00:00 510

原创 【TiDB】TiDB SQL执行计划

一.TiDB 优化器原理一般有两种方式:RBO: 基于规则的优化CBO:给予成本的优化数据库一般都是使用的CBO优化方式。优化器架构图:Protocol协议层,兼容MySQL协议Parse将sql语句转化为AST语法树/ 词法分析 语法分析pre process主要针对pointget 点查,直接下推执行器查询,只返回一行或者操作一行,主键索引,类似于sysbench 压测还会进行常量折叠,表达式优化,子查询优化logical optimize谓词下推,TiKv过滤,传输到T

2022-05-23 12:46:48 1696

原创 【Percona-Toolkit】系列之pt-duplicate-key-checker索引check神器

工具简介pt-duplicate-key-checkerUsage:1.检查数据库表中重复/多余索引或者外键常用参数--key-types=s 校验的类型,f=foreign keys, k=keys or fk=前面两种都check,默认两种都check--ignore-order 忽略索引的顺序, KEY(a,b) 不同于 KEY(b,a)--all-structs btree hash索引都进行比较--verboses 打印所有索引使用示例使用表结构如下:&

2022-05-04 22:30:00 517 1

原创 【Percona-Toolkit】系列之pt-fifo-split 文件拆分神器

工具简介pt-fifo-split (不推荐使用)usage:模拟切割文件。操作原理:会根据参数将文件多少行(1个chunk的大小)的内容写入到默认文件然后在文件后面放EOF,然后只要文件被读取,就会删除老的文件创建新的并将下一个chunk内容数据写到这个文件,由此循环。常用参数--statistics 打印出操作时间,以及进度--lines=i 一个chunk多少数据--fifo=s 临时文件名称用法官方的示例:pt-fifo-split --lines 100

2022-05-04 10:45:00 337

原创 【MySQL】数据库压测神器之sysbench

写在开头说起数据库的性能,我们一般都会说到这个数据库处理读写的能力怎么样,以及磁盘会有SSD和HDD的区别,以及数据库的类型,关系还是内存等等多个分类,但是对于我们来说如果要去熟悉一个新的数据库来说,肯定得先知道这个数据库的性能,不管哪个数据库,都离不开一个非常重要的part----压测,而且数据库的使用程度也会和这个part非常息息相关,所以这次和大家介绍一个数据库性能压测工具—sysbenchsysbench 简介sysbench是一个模块化的,跨平台的,多线程基准测试工具,主要用于评估测试各种不

2022-05-03 22:30:00 2538 1

原创 【Redis 问题】记一次热key排查过程

背景由于游戏五月份要上线一个大活动,所以开发最近进行压测,今天突然一个开发找到我,说我们的redis cluster中的某个节点,在压测的时候CPU使用率呗达到了100%,挂掉了,收到问题之后第一反应是hotkey问题,所以就进行了排查。何为hotkey?有什么影响?hotkey简单讲就是经常被访问的key,由于访问的频率非常高,所以导致对于一个redis cluster来说过多的流量请求后面某个redis节点,从而导致该节点的负载非常高,流量倾斜非常严重。如何查看hotkey?redis查看热k

2022-04-14 18:39:00 1138

原创 【Percona-Toolkit】系列之pt-diskstats磁盘性能分析神器

工具简介`pt-diskstats`usage: pt-diskstats [OPTIONS] [FILES]1.输出系统磁盘相关的信息。有点类似于`iostat`命令,不过它比`iostat`输出的更加详细一点官方文档:https://www.percona.com/doc/percona-toolkit/LATEST/pt-diskstats.html常用参数--iterations=i 输出多少次示例--interval=i 每次输出示例间隔多少s--devices-reg

2022-03-19 20:59:26 593 1

原创 【Percona-Toolkit】系列之pt-deadlock-logger死锁检测管理神器

背景相信死锁deadlock这个词语对DBA,还是开发来说都是听不愿意面对,因为往往死锁会导致数据库产生一些性能问题,而且锁这个东西,在数据库中是一种比较昂贵的资源,一旦死锁,不管是DBA还是开发出来这些东西都非常头疼。虽然对于MySQL来说,我们可以通过show engine innodb status\G看到最近一次的deadlock信息,也可以通过打开innodb_print_all_deadlocks将所有的deadlock信息输出到数据库的error log中,但是有一些弊端:show e

2022-03-19 19:53:56 1244 1

原创 【Percona-Toolkit】系列之pt-config-diff配置文件对比差异神器

背景相信做DBA的朋友都有遇到过问题,随着管理运维的集群数量变多,再加上有的时候会动态去优化部分参数,可能会导致MySQL配置文件内容不一致,针对这个问题,我们今天的主角pt-config-diff,可以很方便的帮大家去解决这个问题。工具简介...

2022-03-19 16:23:35 1639

原创 【Percona-Toolkit】系列之pt-archiver数据归档清理神器

题外话时隔半年,我终于又回来开始写percona-tookit系列了,之前有点忙,也有点偷懒,这次一定认真写下去。好不废话上今天的主角pt-archiver工具简介pt-archiverusage:1.归档A库数据到B库做备份2.安全删除数据,不影响数据库性能,(但是不会回收碎片空)3.导出数据文件,方便load data回去4.合并数据常用参数--no-delete 同步不删除原数据--purge 删除数据--progress=i 每操作多少行输出一次处理信息

2022-03-16 22:42:39 1457 2

原创 【MySQL】用logrotate归档MySQL日志

背景前面说过因为vim大文件导致的OOM,所以后续优化方案里面写了要对MySQL的日志进行归档操作。经过调研,一般两种方案实现:1使用脚本crontab去清理备份归档2使用logrotate配置进行去清理归档我这里主要介绍第二种方案,因为比较通用,可以清理各种日志logrotate简介logrotate是专门用来归档处理各种服务产生的日志具有以下特点: 1. 支持对日志自动进行归档压缩 2. 支持对日志进行按天或者按周,月年等多维度进行归档 3. 可以设置保留的时间,根据个数实现 4

2022-03-16 18:03:50 1910 1

原创 【MySQL】vim引发的MySQL进程挂掉

背景上周一个业务排查处理死锁的时候的时候,先tail -n200 mysql-error.log,处理过死锁的小伙伴都知道,show engine innodb status\G只能看到最近一次的死锁信息,而对于历史的死锁信息需要开启innodb_print_all_deadlocks_output这个参数,一旦数据库开启了这个参数,就会将所有的历史死锁信息输出到MySQL的error log。而一条死锁如果锁定的行数或者记录很多的话,一条死锁记录可能就会几百行,所以当时一直看不到想要的信息,就

2022-03-15 22:33:43 1099

原创 【MySQL】删除数据备份数据脚本

# -- coding:UTF-8 --import os, time, re, sys, io, randomimport pymysqlAccountFile = '/data1/DataClean/th/account_th_3.del'db_host = 'localhost'db_port = 6606db_database = ''db_user = ''db_pass = ""DelTable = ''def get_conn(): try:

2022-03-14 21:41:40 1002 1

原创 【TiDB】PCTA认证课后习题整理

整理的TiDB PCTA课程后的习题之前整理的习题,分享给大家,一定要多刷,每个选项都要多刷

2022-03-09 21:45:00 3108 2

原创 【TiDB】PCTP PCTA课程学习总结

课程总结PCTA1.TiKV节点架构2.TiDB数据库架构3.数据库架构选型4.TIDB部署硬件要求5.TiD配置6.TiDB备份7.TiDB DM架构8. TIDB Binlog架构9. TICDC架构PCTP1.TiDB 架构图2.TiKV架构图3.Rocks DB架构图4.TSO分配流程5.TIDB读流程6.TiDB写流程7.TiDB DDL流程8.SQL的parser和compile9.SQL的读取10.事务在TiDB的存

2022-03-09 21:15:00 3376

原创 【TiDB】PCTP认证课后习题整理

整理的TiDB PCTP课程后的习题建议一样,多刷,弄懂每个选项错误在哪里,对的话延伸学习,切记不是做对了就行, 一定要弄懂所有的选项

2022-03-09 21:00:00 972 1

原创 【MySQL】MySQL锁监控状态值异常

背景最近在忙着定制线上的监控,在忙到锁这里的时候,发现了一个奇怪的现象:现象如下:可以看到当前有很多锁等待(然后连续好几天观测都是2239),没有变化[(none)]>show global status like 'Innodb_row_lock%';+-------------------------------+-------------+| Variable_name | Value |+------------------------

2022-02-28 21:30:00 810 1

原创 【Redis问题】记一次大key问题处理

背景今天接到一个报警,redis cluster的某个分片节点内存使用85%了。照这样下去估计周末就要被打爆。排查过程1.首先查看监控,确实其他节点都很正常,但是这个节点使用很高。监控如下:2.由于这个节点之前已经因为内存使用过高,之前同事已经迁移过了一次,所以这次再发生,觉得问题不是简单搬迁slot就可以的,于是进一步排查。首先考虑的是不是大key的问题。经过大key分析,确实存在大key,大key分析如下:分析大key的时候要注意系统的CPU使用率,因为SCAN会耗费大量CPU#

2022-02-25 18:35:31 639

原创 【MySQL】不影响IO安全删除大表脚本

#!/bin/bashdb_path="数据库路径"db_user=''db_pass=''db_host=''db_name=''TruncateFile(){ file_name=$1 del_speed=10485760 file_size=$(/usr/bin/stat -c%s "$file_name") if [[ -f /usr/bin/truncate ]];then for del_size in `seq $file_size -${del_sp

2022-02-25 17:42:56 3408

原创 【MySQL】在线无锁无延迟DDL神器gh-ost

工具简介gh-ost是一款在线无锁的DDL神器,支持在主库,或者从库两种模式使用,而且还可以根据系统的负载延迟来动态暂停启动DDL工作,避免主从延迟等问题的出现。官方地址:gh-ost官网工作原理gh-ost使用二进制日志流捕获表更改,并异步应用到幽灵表上,最后交换幽灵表和原表。执行DDL的过程可分为三个阶段: 1. `校验`:是否有主键、外键、触发器;gh-ost连接的是主库还是从库,从库是否开启log_slave_updates;是否已经存在gho和del结尾的临时表等。 2. `迁移

2022-02-25 17:40:22 1335 2

原创 【MySQL】MySQL监控项整理

浅谈监控对于DBA来说,数据库的监控也是一个非常重要的点,因为好的监控不仅方便我们快速定位问题,节约时间。但是一些监控系统自带的监控模版,往往会有很多个监控Metrics,所以定制数据库监控对于DBA来说是非常重要的一件事,也是必须花时间去做的事情。监控项下面是我最近整理出来的MySQL整体的监控图,具体采集的指标打开可以自己去寻找,这里我只提供一下思路。下面这些基本都能从MySQL 的status里面找到。分为5个方面#1.系统方面CPU内存磁盘IO网络LOAD 1 5 15系

2022-02-25 16:58:31 691

原创 【TiDB】TiDB源码系列之沉浸式编译TiDB

背景最近刚学习完PCTP,对TiDB的各种读写有了粗略的了解,但是要想研究的更细节一些的东西,肯定离不开学习源码,学习源码的话大家可以参考官方的TiDB源码系列文章,但是官方的文章都是18年发的,可能会有些滞后,所以大家可以参考这个以及结合源码去学。TiDB源码系列解读文章:官方源码解读博客地址然而学习源码肯定编译调试源码是最有效的学习途径,经过这几天的学习,以及请教开发大佬,成功编译了TiDB,所以分享给对源码感兴趣的小伙伴。准备材料Goland白嫖款一个(30天)TiDB 最新款源码t

2022-02-24 15:42:55 643

原创 【MySQL】排查锁相关问题方法

前言相信不管是做DBA还是开发,大家其实都不想遇到锁这玩意儿,因为锁这东西是一把双刃剑,用的好了的话可以保护对资源的并发访问竞争,但是用不好的话,很容易引起线上问题,比如死锁,锁等待,业务等待,业务不可用,数据库性能急剧下降。MySQL锁相关表相信大家都知道,MySQL锁的种类有很多种,读锁写锁元数据锁等等。进入正题我们如何排查锁,一般通过以下几张表:5.7版本 Information_schema.innodb_locks表会显示当前的等待的锁 Information_schema.inno

2022-02-21 16:20:01 778

原创 【快速创建MySQL单机和集群测试环境工具】dbdeployer

2022-02-21 16:09:58 736 2

原创 【MySQL】数据误删快速恢复工具----binlog2sql

1.简介从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等官方文档: https://github.com/danfengcao/binlog2sql2.用途数据快速回滚(闪回)主从切换后新master丢数据的修复从binlog生成标准SQL,带来的衍生功能3.适用环境Python 2.7, 3.4+MySQL 5.6, 5.74.安装git clone https://github.com/danfeng

2022-02-17 17:55:56 1490

原创 【MySQL】深入了解Innodb_buffer_pool

1.何为innodb_buffer_poolinnodb_buffer_pool我们俗称缓冲池,缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。写入时,先将数据写入缓冲池种,再定期刷新到磁盘;读取时,将读到的页放到缓冲池种,下次再读取相同的页时,会首先判断该页是否在缓冲池中,若在缓冲池中则直接从缓冲池中返回。2.innodb_buffer_pool的组成及工作原理2.1 innodb_buffer_pool的组成2.2 innodb_buffer_pool的

2022-02-17 17:15:48 1481

原创 【MySQL启动报错一例】InnoDB: Failed to create check sector file, errno:13

报错信息今天遇到一个5.7MySQL安装的报错信息,报错信息如下:[ERROR] InnoDB: Failed to create check sector file, errno:13 Please confirm O_DIRECT is supported and remove the file /data1/check_sector_size if it exists.虽然不影响使用,但是每次启动的时候都有Error报错,总觉得可能在某方面会有问题。解决方案经过查阅搜索,发现其实是MySQL

2022-02-16 16:39:36 2334

原创 【MySQL change master 报错】 Slave is not configured or failed to initialize properly

问题背景今天数据库主库异常重启,导致数据丢失,所以在5.5版本(历史遗留问题)的MySQL主库上重新做了一份新的备份,还原到从库(从库是5.7的版本),还原非常成功,但是在搭建主从关系的时候,发生了如下报错:ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave

2022-02-14 20:13:12 2350 1

原创 TiDB认证指南之PCTA PCTP

写在开始我希望所有的大家是为了学习知识而去考证,而不是为了拿证而去考证背景写在通过PCTA PCTP认证通过之后。随着时代的发展,传统的数据库已经很难满足针对于多维度的场景下的业务需求,所以衍生出来很多的国产数据库,目前来说使用最广的应该是TiDB,TiDB目前在国内的使用厂商越来越多,很多大厂都开始接入TiDB去使用,再加上TiDB的活跃的社区,TiDB一直在越来越好的路上,因此对于我门DBA来说,多掌握一门技术也是一门手艺更是遇到问题的解决方案。目前TiDB主要有两个认证:PCTA:

2022-02-08 20:14:08 8587 5

原创 MySQL统计信息不准确导致索引失效

1.统计信息不准确的影响统计信息不准确一般会导致MySQL优化器无法选择正确的索引,从而导致优化器选择错误的索引或者不走索引,引起索引失效,导致大量慢查询。2.什么情况下会导致统计信息不准确?一般来说,大体分为以下两种情况:统计信息未及时更新,不正确的统计信息导致索引失效。表中碎片过多,导致Cardinality不准确,计算错误。下面就两种场景进行细谈:统计信息未及时更新在这个话题之前先看一些参数:FOR MySQL 5.7:一般来说统计信息由下面的参数控制:innodb_stat

2021-12-02 12:12:05 2482

原创 MySQL Gtid_executed和Gtid_purged修改时机

背景对于GTID复制,如果存在多个机器的GTID的时候,说明这个机器之前是很多机器的从库,但是GTID没有清理,之前对GTID的一些变量知道含义,但是具体的修改时机,以及执行的命令会有什么作用没有理解。先介绍一下变量:Gtid_executed:当前机器已经执行过的GTID事务号。Gtid_purged:当前机器已经清理的GTID号。理解起来很简单,但是操作起来就比较容易不理解了。比如这两个变量可以直接修改吗,reset master会有什么影响吗?带着这些问题我做了一些测试。测试过程

2021-09-26 17:50:30 1148

原创 MySQL源码之--Table_cache

一.table_cache 相关参数1.open_files_limit2.max_connections3.table_open_cache4.table_definition_cache问题?经常会看到自己my.cnf设置的那四个值和在MySQL中看到的值不一样.我修改了其中一个参数,结构发现所有的上面的四个参数都发生了变化。参数到底应该设置为多少合适?二.源码分析之初始化1.常量定义源码位置:/sql/sql_const.h#define TABLE_OPEN_CACHE_MI

2021-09-23 18:47:44 382

原创 MySQL- table cache最详细笔记

参数:table_open_cache文件句柄,描述符fd,table_definition_cache元数据,.frm文件,初始化的时候加载一次。状态值:Open_tables。 当前打开表的数量,可以通过命令show open tables查看。第一次开始会缓存系统表.Opened_tables 通过my_open()函数打开的表数量Open_table_definitions 当前打开表的定义数量,缓存.frm文件Opened_table_definitions。打开表的定义的总

2021-09-23 12:12:11 987

原创 一条SQL走错索引导致数据库出现超时问题排查过程

现象最近刚接手的一个项目,在某天中午12点30多分接到开发反馈,他们业务请求数据库的时候,出现了大量请求超时问题,虽然之前也有过,但是这次持续很久,大概两分钟多又恢复好了。数据库版本8.0.22。初步分析接到问题,不着急,先看一下监控:从监控图上看可以看到在对应的12点36分左右的时候出现了连接数开始飙高,以及这个点出现了少量的慢sql.查看的对应时间点的慢查询日志,查到对应时刻有如下的慢查询sql:在这里插入代码片...

2021-09-14 17:32:34 389

Orchestrator 配置文件参数列表

Orchestrator 配置文件参数列表

2022-09-14

PCTPV6 TiDB 资源

PCTPV6 TiDB 资源

2022-09-14

Linux性能分析全面命令

覆盖linux所有性能问题排查的相关命令

2022-09-01

percona MySQL8.0.22-13源码包

percona MySQL8.0.22-13安装包

2022-07-18

TiDB 稳定5.4.0版本tar包

TiDB 稳定5.4.0版本tar包

2022-07-18

TiDB PCTP专家认证学习总结

最全面的TIDB PCTP专家认证总结,本人目前 PCTP认证已过。 物有所值。

2022-02-08

PCTA认证--TIDB 数据同步复制

TiDB 数据同步复制学习总结

2022-02-08

PCTA认证-- TIDB数据迁移

TIDB数据迁移模块学习总结

2022-02-08

PCTA认证--TiDB 备份恢复

TiDB PCTA认证之备份恢复总结

2022-02-08

PCTA认证-- TIDB集群管理

TiDB集群管理总结

2022-02-08

PCTA认证-- TiDB体系架构

TIDB 体系架构学习总结

2022-02-08

【情人节撩妹全攻略---63行代码拿下】

windows必用表白代码 可直接运行,无需装载任何环境

2021-08-14

percona-xtrabackup源码包2.4版本

percona-xtrabackup工具的源码包,适用于MySQL5.7 的所有版本,可以学习其中的一些实现

2021-08-07

慢查询优化的系统设计架构

我们该设计一个什么样的慢查询优化系统

2021-08-07

MySQL平台工具.xmind

包含了我们设计一款MySQL自动化平台需要设计哪些功能,如何设计

2021-08-07

mysql-5.7.33.tar.gz

MySQL的源代码

2021-08-07

MySQL 学习路线.xmind

MySQL最全学习线路图 超级详细版

2021-07-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除