自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享既学习

一名在路上的 DBA

  • 博客(160)
  • 资源 (10)
  • 收藏
  • 关注

原创 InnoDB 事务处理机制

事务的起源可以追溯到 6000 年以前,当时苏美尔人(Sumerians)就发明了事务处理和记录方法。已知最早的记录是写在土块上的,上面记录的是皇家的税收、土地、谷物、牲畜、奴隶和黄金,明确地记下了每笔交易。这种早期的系统已经具备了事务处理的关键特征。记录使用的土块和记号方式就是数据库,每次土块的加入都会造成数据状态的变化,在今天可以称为事务。PS:事务是数据库关系系统中的一系列操作的一个逻辑单位。这种基于土块的事务处理系统的技术演变了数千年,经历了纸莎草纸、羊皮纸、最后到我们现在用的纸。

2024-05-16 11:47:03 1448 5

原创 MySQL 社区开源备份工具 Xtrabackup 详解

数据库备份恢复是 DBA 的 “保命” 技能,生产业务不仅要保证有合适的备份策略,也要定期验证备份的有效性和恢复演练流程,因为数据恢复和验证可能会涉及多方合作,演练可以让灾难真正发生时,多方配合有条不紊的将数据恢复,从而尽可能的减少 RTO 让业务快速恢复。Xtrabackup 是 MySQL 社区唯一一款开源物理热备工具,本篇文章将详细介绍 DBA 如何使用它,以及备份恢复的详细步骤。

2023-11-14 13:36:04 16462 9

原创 开箱即用:免费的数据库管理平台 NineData 社区版

数据库属于当代社会一个基础设施级别的技术,为各行各业提供数据存储、管理、分析和挖掘等关键服务。随着云计算、大数据和人工智能等技术的发展,数据库技术也在不断地进步和演化。分布式数据库、NoSQL 数据库、列式存储数据库、向量数据库、时序数据库等,各种新型数据库技术不断涌现,满足了各种新兴应用场景的需求。既然数据库如此重要,而且种类繁多,如何管理好数据库,为业务提供持续稳定的数据库服务将是一件非常核心、极具挑战性且至关重要的任务。

2025-03-21 16:11:27 1155 3

原创 MySQL 时区参数 time_zone 详解

MySQL 时区参数 time_zone 有什么用?修改它有什么影响?如何设置该参数,本篇文章会详细介绍。

2024-12-12 16:55:36 1257

原创 MySQL 在线 DDL 变更的一个异常问题

业务执行一条 DDL engine=innodb 失败了很多次,一直无法执行成功,报错 ERROR 1062 (23000): Duplicate entry xxx for key ‘xxx’,在官方文档中也提到过,Online DDL 期间可能会出现 ERROR 1062 (23000): Duplicate entry 异常,但是没有详细说明,什么情况下会触发,业务执行 DDL 的时候,一直没有成功,意味着距离找到答案不远了。

2024-12-10 10:42:43 723

原创 MySQL 迁移中 explicit_defaults_for_timestamp 参数影响

生产环境 timestamp 字段一般都会设置为如下样式,而且需要 timestamp 字段为 null 的业务场景很少。`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

2024-09-05 15:22:45 1075

原创 Percona 开源监控方案 PMM 详解

Percona Monitoring and Management (PMM) 是 Percona 公司基于业界流行的组件 Prometheus 和 Grafana 设计开发的一体化数据库监控解决方案。本篇文章介绍如何使用它监控 MySQL 和 PostgreSQL 两款数据库。这里是总览:本篇文章介绍了 PMM 监控如何部署和安装,并且接入数据库实例,这块工具非常强大,是一款企业级的数据库监控方案。

2024-09-05 11:05:52 2718

原创 MySQL 官方高可用方案 InnoDB Cluster

不知不觉 LTS 长期支持版本从 8.0 调整为了 8.4 版本,8.0.x 只会修复 bug 不再有新功能发布,而我们维护的数据库中 5.7 依然占大多数。8.0 版本 MySQL 官方发布了三套高可用方案,分别是 ReplicaSet、InnoDB Cluster、InnoDB ClusterSet 都提供切换和透明路由能力,用户可根据业务高可用的需求,选择对应的高可用方案。今天介绍的是 InnoDB Cluster 官方推出的一套高可用方案。

2024-08-28 16:53:53 2161

原创 MySQL 日志表改造为分区表

业务有一张日志表,只需要保留 3 个月的数据,仅 3 月的数据就占用 80G 的存储空间,如果不定期清理那么磁盘容纳不下,但是每次清理的时候,使用 DELETE 删除非常慢,还会产生大量的 Binlog 日志,而且删除后会产生大量的空间碎片,回收需要重建表,期间还会造成临时空间增长(Online DDL 排序需要使用临时空间)需要先扩磁盘,等待空间收缩后再缩容,非常麻烦。了解到这张表几乎不会查询,只会在发生问题的时候查询,所以非常适合使用分区表。

2024-08-08 16:05:15 1801

原创 MySQL 8.0 锁等待排查

MySQL 5.7 版本的时候锁等待排查用的元数据,主要存储在 information_schema 库下的 INNODB_LOCKS 和 INNODB_LOCK_WAITS 表,8.0 版本这两张表删除了,在 performance_schema 提供新的锁相关的表,本篇文章将结合这些改动,介绍 MySQL 8.0 版本如何排查锁等待问题。

2024-08-07 11:16:49 1992

原创 MySQL 8.0 复制搭建与可观测监控

2020 年美国科技界纷纷响应 Black Lives Matter,BLM 维权运动,将带有种族色彩的词汇替换,MySQL 也将 master、slave 等关键字进行替换,但是没有彻底删除,留给用户过渡的空间。在 2024 年 4 月 30 日 MySQL 发布的 8.4 LTS 版本中带有种族色彩的关键字已经彻底删除。本篇文章将介绍在新版本中搭建备库的语法,还有一些基于新特性搭建和监控复制的有趣的方法。

2024-07-30 11:39:41 628

原创 MySQL 8.0 新特性汇总

MySQL 5.7 在 2023 年 10 月 31 日起,已经终止软件生命周期了,意味着 MySQL 官方将不再提供对 MySQL 5.7 版本的技术支持和更新。8.0 版本成为官方长期支持版本,提供了很多新特性,本文将详细解读 MySQL 8.0 版本的新特性,为 MySQL 版本升级作参考和指导。MySQL 8.0 相比 5.7 版本更新很多新特性,很多改变没有直接删除,便于用户过渡,兼容性还是比较高的。不过到 8.1、8.2 的创新版本,老的 5.7 的参数和语法就已经删除。

2024-07-29 15:37:40 2758

原创 Python 获取 SQL 指纹和 HASH 值

本文介绍一个提取 SQL 指纹的方法,就是将 SQL 语句的条件转换为?可用于脱敏和 SQL 聚类分析的场景。

2024-07-10 17:09:17 698

原创 Redis 集群模式

Redis 3.0 提供了 Redis Cluster 架构,有效解决 Redis 分布式方面的需求。当遇到单机内存、并发、流量瓶颈时,可以使用 Redis 集群模式解决,达到负载均衡的目的。本篇文章将介绍 Redis 集群搭建运维。

2024-07-05 16:34:27 1273 2

原创 Redis 哨兵模式

Redis 主从复制模式下,一旦主节点出现了故障不可达,需要人工干预进行故障转移,无论对于 Redis 的应用方还是运维方都带来了很大的不便。对于应用方来说无法及时感知到主节点的变化,必然会造成一定的写数据丢失和读数据错误,甚至可能造成应用方服务不可用。对于 Redis 的运维方来说,整个故障转移的过程是需要人工来介入的,故障转移实时性和准确性上都无法得到保障。Redis 2.8 版本提供哨兵机制,可以解决此类问题。本篇文章介绍哨兵安装部署及原理。

2024-07-02 15:45:59 1030

原创 Redis 主从同步

在分布式系统中为了解决单点问题,通常会把数据复制到多个副本部署到其它机器,满足故障恢复和负载均衡需求。Redis 也提供了复制功能,实现相同数据多个 Redis 副本。本篇文章介绍如何配置 Redis 复制及原理。本篇文章介绍如何配置 Redis 复制及原理,复制的全量阶段会消耗大量的资源占用网络带宽,因此建议一个 Redis 实例内存不要太大,通常建议不要超过 6GB。可以减少 RDB 文件生成、传输、重新加载的开销。

2024-07-02 15:38:39 1567

原创 MySQL 代理层:ProxySQL

ProxySQL 默认的配置文件位于/etc/proxysql.cnf,第一次启动 ProxySQL 会初始化配置数据库,往后的所有配置都可以在 ProxySQL 数据库中修复,直接修改配置文件则不会生效,除非重新初始化。主机之间的复制关系是通过 hostgroup_id 来绑定的,关系定义使用的是 mysql_replication_hostgroups 表。

2024-07-02 13:59:33 2736 1

原创 MySQL 性能模式 performance_schema

performance_schema 是 MySQL 提供的一个较为底层的监控,它可以监控数据库中每个线程的所有动作,这些动作被称为事件,可以是一个函数调用,也可以是一条 SQL 执行过程。总体来讲 performance_schema 是一个相对专业的模块。

2024-05-08 17:53:24 2088 1

原创 MySQL 优化 - index_merge 导致查询偶发变慢

今天遇到了一个有意思的问题,线上数据库 CPU 出现了偶发的抖动。定位到原因是一条查询语句偶发变慢造成的,随后通过调整表中的索引解决。优化器通过某种机制检测到 index_merge 能带来性能提升,某些情况下不会带来提升,反而会耗费更长的时间,属于优化器的缺陷,可以通过调整表中的索引来解决。

2024-05-06 11:36:00 973 3

原创 MySQL Binlog 闪回与分析

由于误操作、代码 bug 或平台误点,我们在操作数据时难免会遇到数据丢失的情况,比如一条 delete 删除了预期之外的数据。早期想要恢复数据,只能通过 全量备份 + 日志备份 恢复数据或业务人员通过日志以及业务逻辑进行手动订正,这些恢复数据的方法影响其恢复速度的变量很多,全量备份如果数据量很大,上传和解压缩的耗时很久,还要考虑增量日志应用。手动订正数据量大业务逻辑复杂的话,是一件非常消耗人力的事情,且容易出错。直到出现 Binlog 闪回技术,大大的提升了 DML 造成数据丢失的恢复速度。

2024-04-29 16:43:16 1831 11

原创 MySQL 自建数据库慢日志分析

慢 SQL 是指 MySQL 中执行时间超过指定阈值的语句将被记录到 Slow log 文件中的查询。慢 SQL 的风险是可能随时都会因为某种原因而被触发,并且根据 DBA 的工作经验,数据库最常出现的问题,都是因为慢查询导致数据库慢了,进而导致整个实例雪崩,从而导致了线上故障。因此需要定期治理优化,避免数据库内慢 SQL 很多。云上数据库,都会提供慢 SQL 的分析功能,使用起来也非常便捷,本篇文章主要讨论自建 MySQL 慢 SQL 如何分析。

2024-04-24 17:33:49 1072

原创 8.0 新特性 - RESOURCE GROUP

MySQL 是单进程多线程的程序,在 8.0 之前所有的线程优先级都是相同的,并且所有的线程资源都是共享的。8.0 之后推出 RESOURCE GROUP 特性 DBA 可以通过资源组的方式修改线程优先级以及所使用的资源,目前仅支持 CPU 资源。查询现有的资源组,系统默认的资源组,无法进行修改或者删除。可以通过下方 SQL 查询资源组的使用情况,被哪些线程使用。我们模拟要跑一个 UPDATE 批次任务,现在创建一个资源组。VCPU = 0将线程与资源组绑定,设置的权重为 10。

2024-04-22 11:28:48 823

原创 8.0 新特性 - Instant Add Column

MySQL 8.0.12 版本支持 “快速加列” 功能,既添加字段时可以支持 “INSTANT” 快速完成。通过只修改数据字典的方法来实现大表快速加列,避免之前加列操作必须做的数据拷贝,从而大幅缩小大表加列所需的时间,减少对系统的影响。最开始的快速加列只能将列加在表中的末尾,随着该特性的不断完善,在 MySQL 8.0.29 中增加了在表的任何位置添加(或删除)列功能。MySQL 版本 8.0.12 及以上腾讯云内核版本 MySQL 5.7 20190830 及以上。

2024-04-22 11:03:14 1592

原创 MySQL 压测与结果分析

Sysbench 是一个开源的多线程基准测试工具,也是目前使用最多的 MySQL 压力测试工具。

2024-03-15 15:50:19 1927

原创 产品设计 - 尼尔森交互设计原则

最近学习了《尼尔森交互设计原则》发现经常使用的 APP 甚至是游戏,也都随处可见这套设计理论的影子。与交互设计七大定律相同,在产品设计的过程中,设计者有意识地去遵守这些经过科学和实践验证的原则,可以有效地改善产品的用户体验。PS:本文为笔记记录。产品经理方法论状态可见原则要求产品应该让用户时刻清楚当前发生的事情,即让用户对产品过去、现在、未来的状态有所了解。一般的方法是在合适的时间给用户适当的反馈,防止用户在使用时出现迷茫和错误。环境贴切原则要求产品应该使用用户熟悉的语言、文字、语句或者用户熟悉的概念。

2024-03-11 16:23:51 1133

原创 MySQL gh-ost DDL 变更工具

MySQL 的锁可以分为四类:MDL 锁、表锁、行锁、GAP 锁,其中除了 MDL 锁是在 Server 层加的之外,其它三种都是在 InnoDB 层加的。下面主要介绍一下:MDL 元数据锁,主要作用就是维护 DDL 过程中数据的安全性 & 正确性。当对一个表进行 DML 时,需要加 MDL 读锁,当需要对一张表结构进行变更时,需要加 MDL 写锁。读锁之间不互斥,即可以多个线程对一张表进行并发增删改。读写锁与写锁,之间是互斥的,用来保证变更表结构操作的安全性。

2024-03-11 10:09:59 1611 2

原创 产品设计 - 交互设计七大定律

最近看书,有本书介绍了交互设计七大定律,学习后发现经常使用的 APP 或者网站里面原来都是基于这些定律设计的。奈何记性不好,好记性不如烂笔头,将所感所得在此记录。菲茨定律(Fitts’ law)是由心理学家保罗·费茨(Paul M. Fitts)于 1954 年提出的一个描述人类操作屏幕过程中运动特征、运动时间、运动范围和运动准确性的数学模型。它预测了从任意一点到目标中心位置所需时间的数学模型,在人机交互(HCI)和设计领域的影响尤为广泛和深远。

2024-03-07 14:37:12 1173 1

原创 MySQL 空间碎片详解

最近遇到研发提问,为何使用 Delete 删除一张 30G 大表中 50% 的记录,为何空间使用率没有降下来,反而还更大了呢?使用率更大的原因是 Binlog 未来及触发上传归档,至于空间为何没下降,导致该现象原因就是空间碎片。

2024-03-06 17:34:48 1855

原创 MySQL 排错 - blocked because of many connection errors

通过上方代码,模拟了用户登陆错误,执行 SQL 错误,均未触发该异常,随后在官方文档中 host_cache Table 介绍中,提到了一个 SUM_CONNECT_ERRORS 字段。上面介绍的是临时解决方法,实际遇到此类异常时,建议先查 host_cache 表,找到发起 MySQL 协议握手失败的程序,定位问题的根源,才能彻底解决问题。从文档描述中,了解到这里的错误指的是协议握手错误。首先,需要介绍一下 host_cache 表,它记录了 MySQL 服务器缓存的连接信息,常用于排查连接错误的问题。

2024-03-05 16:12:14 2011

原创 MySQL 使用 pt-archiver 删除数据

在线核心业务都会有日志表,随着业务持续运行,日志表每天都在增大,最后超过阈值触发空间使用率告警。DBA 处理空间告警时,会先导出一份表大小信息,然后发给研发确认,哪些表是可以清理些数据的,让研发先清理。如果没有清理空间就需要提审批扩容。如果有数据可以清理,又分为 删库、清空表、删除表中部分数据 三种情况。前两种可以直接使用 MySQL 命令处理,第三种通常需要研发写一个任务批量删除,

2024-02-29 16:45:55 2032 1

原创 MySQL 用户账号迁移

有一个典型的使用场景,就是 RDS 下云大多数都是通过 DTS 进行数据传输的,用户是不会同步到自建数据库的。需要运维人员在自建数据库重新创建用户,如果用户数量很多的话,那么手动创建并不现实。那么就是 pt-show-grants 发挥作用的时候了。

2024-02-29 13:53:04 982 2

原创 MySQL 如何从 Binlog 找出变更记录并回滚

最近有研发同学问我:有一个问题,想查一个 ID 为 xxxx 的 sku 什么时候被更新了吗?更新前的数据是什么?一般这么讲,可能是由于手动执行或者是代码 Bug 导致出现数据丢失或者数据误更新,需要确认订正,一般需要通过分析 Binlog 来解决,本篇文章将通过该案例介绍此类问题的处理思路。本篇文章介绍了如何从 Binlog 中定位记录,需要有一点 Python 基础,但注册 Binlog 思路可应用多个场景,例如使用它恢复增量日志等。

2024-02-28 15:46:34 1866

原创 MongoDB 权限管理

上一篇《MongoDB 单机安装部署》文章中,为 MongoDB 配置了授权功能,当时只介绍了创建一个高权限账户,没有详细介绍 MongoDB 的权限相关的内容,本篇文章将详细 MongoDB 的权限控制。

2024-02-20 16:20:16 3429

原创 8.2 新特性 - 透明的读写分离

MySQL 8.0 官方推出过一个高可用方案 ReplicaSet 主要由 Router、MySQL Shell、MySQL Server 三个组件组成。MySQL Shell 负责管理 ReplicaSet 包括部署、切换、节点加入等,都可以通过内置 AdminAPI 自动化完成。MySQL Router 是一款轻量级中间件,可在应用程序和 ReplicaSet 之间提供透明路由和读写分离功能。8.0 时期的 Router 读写需要配置两个端口,应用如果想要使用读写分离的特性,需要额外适配。

2024-02-19 17:38:13 1114

原创 8.0 新特性 - Caching SHA-2 Pluggable Authentication

升级到 MySQL 8.0 后,可能会遇到如下报错,常发生在连接 MySQL 或配置复制关系的时候。网络上通常建议的解决方案是将 default_authentication_plugin 修改为 mysql_native_password 来解决。虽然可以规避报错,但是在 MySQL 8.1 版本 mysql_native_password 旧插件将被废弃,到时还是要直面 caching_sha2_password 插件。本篇文章将详细解读新的认证插件。

2024-02-18 15:17:35 1331

原创 MySQL 函数导致索引失效应对策略

MySQL 中,当 SQL 索引字段使用了函数的话,会出现隐式转换的问题,导致索引失效,从而导致 SQL 执行效率变慢。本篇文章介绍 MySQL 不同版本此类问题的应对策略。

2024-02-04 14:21:51 1109

原创 MongoDB 索引管理

索引是数据库中离不开的话题,其作用是提高数据的获取性能。与关系型数据库一样,MongoDB 同样可以利用索引提高查询效率。如果没有索引 MongoDB 的查询需要扫描集合中的每一条记录,然后挑选出与查询条件匹配的文档记录。也就是常说的全表扫描,一个非常耗时的操作。MongoDB 默认索引数据结构也是 B+Tree 与关系型数据库的索引相似。本篇文章将介绍 MongoDB 中的索引与维护。

2024-01-10 17:40:18 1302

原创 MySQL 中的状态变量

本篇文章介绍一些 MySQL 中常用的监控指标,常见的监控工具都是采集 MySQL 中的状态变量(status variables)理解这些状态变量,可以更好的帮助我们理解 MySQL 监控的含义及配置有效完备的监控,从而游刃有余的定位数据库的性能问题。

2024-01-04 15:41:20 1191

原创 MySQL 数据页损坏处理思路

研发自己搭建了一套 MySQL 没有设置双一参数,机房异常断电,导致数据页出现损坏,本篇文章介绍处理思路。

2023-12-28 17:00:38 1629 1

原创 MongoDB ReplicaSet 部署

本篇文章介绍 MongoDB ReplicaSet 如何搭建,及常用的维护方法。

2023-12-25 15:36:25 1222

数据库-Oracle 11g Linux x86-64 安装包-用于数据库安装

数据库-Oracle 11g Linux x86-64 安装包-用于数据库安装-网盘链接

2025-01-24

MySQL 8.4 自动化部署脚本

MySQL 8.4 自动化部署脚本

2024-08-14

MySQL 自动化部署脚本

MySQL 自动化部署脚本

2023-10-30

MySQL 使用开源审计插件

也可以直接下载直接用

2023-09-14

自研 Binlog 分析程序

自研 MySQL 分析程序,如何使用请到我们主页找《自研 MySQL Binlog 分析程序介绍》

2022-07-20

基于 Python 实现 MySQL Binlog 分析程序

自研 MySQL 分析程序,如何使用请到我们主页找《自研 MySQL Binlog 分析程序介绍》

2022-07-20

school.sql

MySQL 练习题部署的环境 SQL文件,下载时请查看我的相关文章,放在文章里篇幅太长了,所以就放在优快云下载了

2020-05-28

MHA-0.56 高可用技术

MHA高可用技术 mha4mysql-manager-0.56-0.el6.noarch.rpm 和 mha4mysql-node-0.56-0.el6.noarch.rpm 下载比较慢,需要的自提,安装方法可以关注我的博文

2020-05-14

course.csv

网易云课堂的课程数据(课程名+作者名+价格+参与课程人数)共2000条,可以用来做数据分析的练习,探索课程的价格,受欢迎的程度等

2020-02-16

数据屏幕前端页面.zip

请先看完博客再决定下载:https://blog.youkuaiyun.com/qq_42768234/article/details/104131630

2020-02-12

数据集等.rar

https://blog.youkuaiyun.com/qq_42768234/article/details/101748946 请看完这篇博客后再决定是否下载

2019-09-30

飞机大战.rar

Python使用Pygame实现的雷霆战机, 有难度递增, 生命值系统, 弹药补给系统, 登录方式等功能, Python面向对象, 精灵碰撞等技术实现

2019-08-07

飞机大战全套精美UI

飞机大战的全套UI,没有商业作用,仅供交流.

2018-12-29

pygame写一个钟表,实时显示时间,打包exe

用pygame写的时钟,显示实时功能,用三角函数实现,已经打包成exe,欢迎交流分享

2018-12-29

Pygame飞机大战Boss版本(资源包)

pygame开发出来的飞机大战,压缩包直接可以在Dos下运行,欢迎交流

2018-11-19

空空如也

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

TA关注的人

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