自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 01.Go-运行时(runtime)

内存分配: runtime.MemStats 结构体提供了关于内存使用情况的统计信息,可以通过 runtime.ReadMemStats() 函数获取这些信息。并发控制: runtime.Gosched() 函数用于让出当前goroutine的执行权限,让其他goroutine有机会执行。程序退出: runtime.Gosched() 函数用于让出当前goroutine的执行权限,让其他goroutine有机会执行。错误处理: runtime.Goexit() 函数用于终止当前goroutine的执行。

2023-11-23 16:05:42 81

原创 块存储、文件存储、对象存储,三者的本质差别

一、块存储、文件存储、对象存储,三者的本质差别

2022-06-02 16:38:15 485

原创 mysql中一条update的执行过程

一、Server层阶段:连接器:负责跟客户端建立连接、获取权限、维持和管理连接分析器:验证通过以后,分析器会对该语句分析, 判断是否语法有错误等。优化器:选择索引,生成执行计划。执行器:根据优化器生成的执行计划,调用存储引擎API执行SQL。二、InnoDB引擎层阶段:事务执行阶段:进入InnoDB后引擎层,首先会判断该SQL涉及到的页是否存在于缓存中,如果不存在则从磁盘读取该行记录所在的数据页并加载到BP缓冲池。假设不存在,然后通过 B+Tree 读取到磁盘的索引页

2021-07-15 11:40:40 408

原创 MySQL 中实现可重复读(RR)的原理

MVCC,多版本并发控制(Multi-Version Conncurrency Control)是mysql中基于乐观锁原理实现的隔离级别的方式。用于实现读已提交和可重复读取隔离级别。对于MVCC,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间(事务ID),一个保存行的删除时间(回滚指针),当然存储的并不是实际的时间值,而是系统版本号(system version number).每开始一个新的事务,系统版本号都会自动递增,事务开始时刻的系统版本号会作为事务的版本号,用来和

2021-07-15 11:34:01 895 1

原创 innobackupex数据库备份原理

innobackupex是Percona开源的适MySQL热备份工具,在备份过程中不会锁定数据库。接下来我们就通过执行日志分析innobackupex的执行过程,从而总结备份的原理。前提: innobackupex命令:  /usr/bin/innobackupex --default-file=/etc/my.cnf --user “test” --password “test” --host 127.0.0.1 --parallel=2 --throttle=50 --slave-info /da

2021-02-25 16:37:34 1300

原创 mysqldump数据库备份原理

2021-02-08T18:49:14.721338+08:00 3631 Connect root@localhost on using Socket2021-02-08T18:49:14.721621+08:00 3631 Query /*!40100 SET @@SQL_MODE='' */2021-02-08T18:49:14.721780+08:00 3631 Query /*!40103 SET TIME_ZONE='+0

2021-02-08 18:53:21 936

原创 mysql-监控预警指标梳理

一、系统指标 1、系统负载LOAD 2、CPU 3、内存 4、磁盘使用率、IOPS、吞吐量 5、网络吞吐量 6、Disk until二、性能指标 1、并发线程数 2、连接数 3、QPS/TPS 4、线程缓存数 5、innodb缓存使用率/命中率 6、innodb读写数量、接受发送、日志写(逻辑、物理、fsync)次数 6、临时表和磁盘临时表 7、mysql打开表的数量三、可用性指标 1、存活监控 2、慢查询 3、主从延迟 4、主从线程状态 5、五分钟未提交事物数 

2021-02-08 17:06:49 541 1

原创 MHA GTID模式故障切换梳理

MHA故障切换过程详解检测阶段: 1、MySQL不可连接,调用masterha_secondary_check检测 2、三次dead mysql连通性检测(间隔为ping_interal) 3、检测dead master的SSH的连通性 4、检测所有服务的状态,从库是否故障,是否有从库指向不同的主,read_only设置 5、检测GTID模式切换阶段: 1检查所有服务器的状态,是否有从库故障,是否有从库指向不同的主 2隔离主库,停止dead master VIP 3获取同步位置最靠前和最

2020-10-30 17:03:58 379

原创 shell-grep选项详解

grep命令在文件中搜索指定的字符串,grep使用语法如下:grep [OPTION]… PATTERN [FILE]option包含以下选项:选项含义举例-E可以用来扩展选项为正则表达式grep -E ‘pattern1|pattern2’ filename || grep ‘pattern1|pattern2’ filename || grep -e pattern1 -e pattern2 filename-i匹配时忽略大小写grep -i “test”

2020-09-09 19:00:28 253

原创 mysql故障一例-表中bit字段添加索引导致数据过滤失效

1、背景线上数据库内存异常增长,导致数据库内存告警,问题追踪排查到数据库出现批量数据导入和慢查询。2、故障出现1)分析慢日志 a、由于没有符合查询条件的索引导致的慢SQL。 b、由于查询SQL复杂导致的慢查询。2)将复杂查询提供给RD,并且对无索引的SQL添加索引3)添加索引 表结构: CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(10) NOT NULL, `age` ti

2020-08-07 17:38:19 465

原创 Redis问题---connect timeout or command timeout

1、网络原因2、慢查询3、value值过大4、aof rewriteredis服务排查redis配置信息: auto-aof-rewrite-percentage:100% no-appendfsync-on-rewrite:no appendfsync:everysec1.查看redis日志如下:20949:M 03 Jul 12:28:02.956 * Starting automatic rewriting of AOF on 100% growth20949:M 03 Jul

2020-07-03 17:51:24 980

原创 MySQL Bug一例-----ibuf cursor restoration fails

2020-07-02T12:01:54.342463+08:00 0 [ERROR] InnoDB: ibuf cursor restoration fails!. ibuf record inserted to page 49868:257152020-07-02T12:01:54.342522+08:00 0 [ERROR] InnoDB: Submit a detailed bug report to http://bugs.mysql.comPHYSICAL RECORD: n_fields 7

2020-07-02 16:23:44 874

原创 数据库备份时大查询导致从库堵塞一例

数据库备份时大查询导致从库长时间堵塞阻塞的原因分析 1、数据库有t表慢查询(执行时间1000S) 占用t表元数据锁 2、数据库备份执行flush tables with read lock; flush table堵塞(等待慢查询结束进行close table) close table进入等待队列,后续对t表的增删改查全部进入等待队列 3、从库SQL线程执行t表binlog 加入t表等待队列(Slave_SQL_Running_State: Waiting for depe

2020-06-02 20:33:03 646

原创 pt-archiver详解

pt-archiver参数:–limit 1000 每次取1000行数据用pt-archive处理–txn-size 2000 2000行是一个事务–where ‘id<1000‘ 设置操作条件–progress 5000 每处理5000行输出一次处理信息–statistics 输出执行过程及最后的操作统计。(只要不加上–quiet,默认情况下pt-archive都会输出执行过程的)–charset=UTF8 指定字符集为UTF8–bul

2020-05-27 19:52:06 6150

原创 DML语句binlog信息详解

首先插入一条数据,binlog解析后信息如下:mysqlbinlog -vvv --base64-output='decode-rows’第一部分:GTID_EVENTDDL和DML的第一个EVENT,包含的信息主要 时间:200512 13:44:22 server id: 622(生成event的server) event类型:GTID last_committed:13 (逻辑时钟) sequence_number:14 rbr_only:yes(是否基于row复制)

2020-05-22 13:26:52 424

原创 replace into详解

一、replace into原理:replace是insert的增强版replace into 首先尝试插入数据到表中,1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据二、replace into在binlog中的表现形式:1、简单插入replace into tbl_name(col_name, …) valu...

2020-04-29 11:16:03 60653 1

转载 github的高可用实现

本文阐述了 GitHub 的 MySQL 高可用性和主服务发现解决方案,这个方案使得 GitHub 能够可靠地进行跨数据中心运维、克服数据中心隔离的影响并实现故障时的短宕机时间。GitHub 使用 MySQL 作为所有非git项目的主要数据存储,因此 MySQL 的可用性对于 GitHub 的运维来说至关重要。站点本身、GitHub 的 API、身份验证等都需要数据库访问。我们运行多个 MySQ...

2020-04-22 16:29:26 324

空空如也

空空如也

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

TA关注的人

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