自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

魏书生的博客

保持一颗书生的心态去持续学习、成长!

  • 博客(30)
  • 资源 (3)
  • 收藏
  • 关注

原创 ERROR 1799 (HY000): Creating index ‘FTS_DOC_ID_INDEX‘ required more than ‘innodb_online_alter_log_ma

1,背景:在进行大表(600G)碎片整理,命令如下:alter table XXX engine=innodb;2,报错:ERROR 1799 (HY000): Creating index 'FTS_DOC_ID_INDEX' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.信息查看:mysql> select version(

2021-05-18 14:12:41 748

原创 MySQL临时表空间设置最大值

1,背景:线上数据库,可能由于一些SQL因使用了临时表,如果是大表,或者产生了笛卡尔积等特殊情况下去,会占用很多临时表空间文件2,举例:mysql> select * from t union select * from t1 ;此时ibtmp1 会持续增大,可能造成数据目录100%。3,解决办法:设置临时表空间最大值[mysqld]innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:15M4,验证:.

2021-02-19 15:46:16 849

原创 DBA如何利用strace/pstack/gdb来定位问题

参考:https://database.51cto.com/art/202006/617923.htmstrace简介strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用。Strace是一个简单的跟踪系统调用执行的工具。在其最简单的形式中,它可以从开始到结束跟踪二进制的执行,并在进程的生命周期中输出一行具有系统调用名称,每个系统调用的参数和返回值的文本行。常用选项-T:strace输出显示时间 -t:可以在每行的输出之前添加时间戳,-tt可以精确到..

2021-02-18 16:22:49 387

原创 MySQL批量KILL线程

1,使用pt-kill工具[root@localhost ~]# pt-kill --user=root --password=123456 -hlocalhost --no-version-check --match-command Connect --match-state "Waiting in connection_control plugin" --victims all --interval 2 --print --kill# 2021-02-18T09:49:28 KILL 218...

2021-02-18 10:16:52 1369

原创 mysql 安全插件-密码复杂度和登录失败处理

1,背景应等保三级安全要求,现需要对生产环境MySQL数据库进行插件安装,以满足密码复杂度和登录失败处理的安全要求(1)设置口令位数至少为8位,至少一位大小写字母,一位数字,一位特殊字符(2)设置当密码错误超过一定次数后(建议3次或5次),自动锁定账户(建议30分钟以上)2,密码复杂度插件(1)安装插件mysql> install plugin validate_password soname 'validate_password.so';Query OK, 0 rows a

2021-02-18 10:15:38 4284 3

原创 MySQL中快速删除大表

1,背景:某些情况下需要清理线上的大表。如果设置了分区表的归档日志表,需要删除指定日期前的数据,直接truncate 或者drop table 可能造成所在服务器的IO吃满,进而影响线上业务。这里我们介绍采用硬链接的方式进行删除大表2,解决方案这里需要利用了linux中硬链接的知识,来进行快速删除。所谓的硬链接,就是不止一个文件名指向node Index,有好几个文件名指向node Index。假设,这会又有一个文件名指向上面的node Index,即这个时候,你做了删除文

2021-02-13 18:04:45 1397

原创 GDB方式修改mysql最大连接数

1,背景:可能由于一些原因造成mysql连接数满了比如程序并发连接过多,或者连接异常不断开,造成mysql连接数满了,此时dba本地登录也会受到影响,为了不重启mysql服务,也能够修改最大连接数,这里我们介绍gdb修改mysql参数的方式。[root@localhost ~]# /dbfiles/scripts/mysql_login.shmysql: [Warning] Using a password on the command line interface can be insecur.

2021-02-13 17:41:08 504

原创 MySQL5.7源码安装

1,下载软件https://downloads.mysql.com/archives/community/2,开始安装mysqlgroupadd mysqluseradd mysql -g mysql -s /sbin/nologin -M3, 安装软件包yum -y install openssl openssl-devel4,编译安装cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7/ -DMYSQL_DATADIR=

2021-02-13 16:49:55 245

原创 书生笔记-DUMP线程查找和过滤GTID的基本算法

《深入理解MySQL主从原理32讲》-学习笔记主库DUMP线程有几步需要比较GTID和GTID SET:1,检查从库的GTID SET是否大于主库的GTID SET2,根据主库的gtid_purged变量检查从库需要的event是否已经被清理3,实际扫描的主库的binary log 检查从库需要的event是否已经被清理4,进行GTID过滤,决定发送哪些事务给从库之前讲的是功能,这一节介绍算法比如从库出现b:1-95:97-100这种GTID SET的时候,如果要在主库查找是否有

2020-12-15 14:35:53 169

原创 书生笔记-mysql主库dump线程

每一个mysql的从库slave都会对于一个 dump线程,如上图的 Binlog Dump GTID .

2020-12-15 11:20:13 822

原创 书生笔记-并行复制的writeset分析

参考《深入理解MySQL主从原理32讲》一,WriteSet是什么?实际上 Writeset 是一个集合,使用的是 C++ STL 中的 set 容器,在类 Rpl_transaction_write_set_ctx 中包含了如下定义:class Rpl_transaction_write_set_ctx{public:...private: std::vector<uint64> write_set; std::set<uint64> writ.

2020-12-07 17:32:11 484

原创 书生笔记-MySQL5.7并行复制实验

一,配置文件master_info_repository=TABLErelay_log_info_repository=TABLEslave_parallel_type = LOGICAL_CLOCKslave_parallel_workers=2slave_preserve_commit_order=1验证:二,日志解析当前模式: COMMIT_ORDER (默认方式)mysql> show variables like '%binlog_transaction.

2020-12-02 18:55:30 213

原创 书生笔记-clickhouse单机安装

1,环境要求Clickhouse 仅支持Linux 且必须支持SSE4.2 指令集这里用Centos7进行演示[root@localhost soft]# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"SSE 4.2 supported如果服务器不支持SSE指令集,则不能直接下载预编译安装包,需要通过源码编译特定版本进行安装关闭防火墙以及防

2020-12-01 18:30:46 1584 1

原创 书生笔记-redo log的写入机制

redo log 的写入机制redo log buffer:事务在执行过程中,生成的 redo log 是要先写到 redo log buffer 的。redo log buffer 里面的内容,是不是每次生成后都要直接持久化到磁盘呢?答案是,不需要。如果事务执行期间 MySQL 发生异常重启,那这部分日志就丢了。由于事务并没有提交,所以这时日志丢了也不会有损失。那么,另外一个问题是,事务还没提交的时候,redo log buffer 中的部分日志有没有可能被持久化到磁盘呢?答案是,确.

2020-11-17 17:28:31 1675 3

原创 书生笔记-binlog 的写入机制

其实,binlog 的写入逻辑比较简单:事务执行过程中,先把日志写到 binlog cache,事务提交的时候,再把 binlog cache 写到 binlog 文件中。 一个事务的 binlog 是不能被拆开的,因此不论这个事务多大,也要确保一次性写入。这就涉及到了 binlog cache 的保存问题。 系统给 binlog cache 分配了一片内存,每个线程一个,参数 binlog_cache_size 用于控制单个线程内 binlog cache 所占内存的大小。如果超过了这个参数规...

2020-11-17 17:21:42 1148

原创 书生笔记-MySQL 层事务提交流程简析

作者:高鹏文章末尾有他著作的《深入理解MySQL主从原理 32讲》,深入透彻理解MySQL主从,GTID相关技术知识。本文节选自《深入理解MySQL主从原理》第15节本节包含一个笔记如下:https://www.jianshu.com/writer#/notebooks/37013486/notes/50142567本文提要本节将解释 MySQL 层详细的提交流程,但是由于能力有限,这里不可能包含全部的步骤,只是包含了一些重要的、并且我学习过的步骤。我们首先需要来假设参数设置,因为某.

2020-11-17 15:50:28 275

原创 书生笔记-Binlog Cache解析

整个事务的Event在commit的时候才会真正的写入到binlog 文件中,在此之前,这些Event 都放在binlog cache中。先来看下几个相关参数的定义binlog_cache_size,binlog_stmt_cache_size。 binlog_cache_size The size of the memory buffer to hold changes to the binary log during a transaction. When binary loggin

2020-11-16 17:52:46 628

原创 书生笔记-binlog_row_image参数解析

1,参数定义 For MySQL row-based replication, this variable determines how row images are written to the binary log. 对于基于row模式的复制,binlog_row_image变量决定了images是如何写入到binlog日志文件的。 In MySQL row-based replication, each row change event contains two images, .

2020-11-12 19:10:37 383

原创 书生笔记-Binlog Event Type解析

binlog以事件的形式记录数据库变更情况。通过执行show binlog events in "XXX"命令可以查看事件源码中定义的binlog event type事件类型,源码位置:binlog_event.h先来看一个例子:可以看到第一个event type是前面文章我们介绍的第一个event,FORMAT_DESCRIPTION_EVENT,event type 为Format_desc,这里我们还可以看到其他类型,如:Previous_gtids:上一个binlog结束的gt

2020-11-11 17:38:33 2251

原创 书生笔记-mysql binlog Event详解-概述

Binlog是一种二进制格式的文件,理解Binlog二进制格式能够帮助我们进一步理解MySQL的主从复制原理。本文将对Binlog文件格式进行分析官方文档:https://dev.mysql.com/doc/internals/en/binlog-event.htmlBinlog文件头Binlog文件,前4个字节固定为一个Magic Number,十六进制值为fe62696e。[root@localhost logs]# hexdump -Cv binlog.000012 0000

2020-11-11 11:49:22 967

原创 书生笔记-gtid_mode 参数解析

GTID transactions are identified by a global transaction identifier (GTID) in the form UUID:NUMBER. Every GTID transaction in a log is always preceded by a Gtid_log_event. GTID transactions can be addressed using either the GTID or using the file name and.

2020-11-10 17:33:47 3105 1

原创 书生解读-《哈佛的6堂独立思考课-多角度看待问题》

​LESSION3:从多种角度看待问题,深思考0 1议题讨论老师:“各位同学, 你们认为‘好社会’是个什么样的社会?”学生:“没有战争或犯罪的社会。”学生:“能做自己想做的事的社会。”老师:“为什么这么想?”学生:“如果想成为宇航员, 但是没有可以让我实现这种理想的社会,就无法实现。能做想做的事是每个人的权利。”老师:“原来如此。那么, 这次请大家站在不同的人的角度, 思考‘好社会是个什么样的社会’这个问题。例如, 从母亲的角度看, ‘好社会’是什么样的社会呢?...

2020-11-10 11:52:58 684 1

原创 书生笔记-mysqldump搭建GTID的主从复制

step1,主库备份:[root@localhost backup]# pwd/data/backup[root@localhost backup]# mysqldump --socket=/data/mysql/mysql3306/mysql.sock --user=root --password=123456 --single-transaction --master-data=2 -R -E --triggers --all-databases >test01.sql

2020-11-09 20:00:25 291

原创 书生笔记-GTID如何跳过一个事务?

首先我们要获得从库最后一个执行的GTID值,有以下三种方式:show slave status 中Executed_Gtid_Set Retrieved_Gtid_Set: b11374c3-223c-11eb-9e81-000c2936cc32:11 Executed_Gtid_Set: b11374c3-223c-11eb-9e81-000c2936cc32:1-11 Auto_Position: 1 Replicate_

2020-11-09 14:31:06 526

原创 哈佛的6堂独立思考课-Lession2》-书生解读

LESSION2:深入理解-思考不要停留在“可能是事实”之前0 1,议题讨论老师:“今天请大家读一段小说的内容。这本书是讲一个少年冒险的故事, 大家都读过吧。”学生:“读过了。”老师:“今天我们要用跟以往有点不同的方法来读这个故事。各位桌上都放有绿、 黄、 红色的记号笔吧?”学生:“用这些笔画线吗?”老师:“是的, 请你们在读小说的同时, 用这 3 种颜色的记号笔在书的各个段落画线。画线有一定的规则, 你们要仔细听。首先, 用绿色的笔在你觉得‘原来如此, 充分理...

2020-11-09 10:31:09 548

原创 《哈佛的6堂独立思考课-Lession1》-书生解读

目录【内容简介】【书生解读】 建立“自我意见"1,议题讨论2,案例思考3,什么是“批判性思考”?4,“思考根据”的练习5,划重点书名:《哈弗的6堂独立思考课》作者:【日】 狩野未希 出版社:后浪出版公司出版时间:2017年4月【内容简介】本书是一位有着20年教学经验的日本老师,主要教授英语和思考力。以哈佛大学提倡的“自我意见建立法”和“批判性思考“为基础,并融入了自身实际的教学经验,给我们带来的一本经典之作,我们也可以把它看做成一位资深..

2020-11-06 18:22:14 497

原创 GTID的变更时机

mysql.gtid_executed:GTID的持久化介质,GTID模块初始化时,会读取这个表,作为gtid_executed变量的初始值 gtid_executed变量:表示数据库执行了哪些GTID ,This is the same as the value of the Executed_Gtid_Set column in the output of SHOW MASTER STATUS and SHOW SLAVE STATUS. gtid_purged变量:包含了mysql执行过的且...

2020-11-05 16:59:24 235

原创 GTID的格式和存储

GTID的概念:A global transaction identifier (GTID) is a unique identifier created and associated with each transaction committed on the server of origin (the source). This identifier is unique not only to the server on which it originated, but is unique acr

2020-11-04 20:08:10 273 2

原创 GTID 的生命周期

GTID 的生命周期 A transaction is executed and committed on the replication source server. This client transaction is assigned a GTID composed of the source's UUID and the smallest nonzero transaction sequence number not yet used on this server. The GTID is w

2020-11-04 11:27:53 721

原创 MySQL auto.cnf 文件

长期关注mysql,redis,python,个人成长,认知提升等,喜欢请添加微信weihaodong0557,或QQ群:979480263一、auto.cnf 是什么?源码解释:/** File 'auto.cnf' resides in the data directory to hold values of options that server evaluates itself and that needs to be durable to sustain the serv..

2020-11-03 17:07:10 5637

45讲目录.xmind

mysql45讲目录,xmind笔记的目录结构,便于快速查找。

2020-12-02

哈佛的6堂独立思考课-书生笔记

什么是“批判性思考”?思考信息,意见和想法的对错,从中摸索出更好的“答案”,即时批判性思考,简单点,“不流于他人的想法,自己认真思索意见的思索方法”

2020-11-17

《思考结构力-书生笔记》

结构存在于每个整体与局部关系的无穷变化中,每个局部表现整体,而局部的意义又由整体来决定,因此当我们面临一个问题时,如果可以从结构的视角去审视和思考,一定可以让我们看的更全面,更清晰。

2020-11-17

空空如也

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

TA关注的人

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