魏书生的技术空间
码龄11年
关注
提问 私信
  • 博客:37,608
    37,608
    总访问量
  • 30
    原创
  • 1,231,851
    排名
  • 9
    粉丝
  • 0
    铁粉

个人简介:关注mysql,redis,python,个人成长,认知提升等领域

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2013-09-04
博客简介:

魏书生的博客

博客描述:
保持一颗书生的心态去持续学习、成长!
查看详细资料
个人成就
  • 获得14次点赞
  • 内容获得11次评论
  • 获得38次收藏
创作历程
  • 8篇
    2021年
  • 22篇
    2020年
成就勋章
TA的专栏
  • MySQL
    26篇
  • ClickHouse
    1篇
  • 书生成长圈
    3篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

344人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

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 ·
886 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

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 ·
964 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

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

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 ·
1474 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
4601 阅读 ·
3 点赞 ·
3 评论 ·
15 收藏

MySQL中快速删除大表

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

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 ·
611 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

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 ·
289 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

书生笔记-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 ·
207 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

书生笔记-mysql主库dump线程

每一个mysql的从库slave都会对于一个 dump线程,如上图的 Binlog Dump GTID .
原创
发布博客 2020.12.15 ·
947 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

书生笔记-并行复制的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 ·
552 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

45讲目录.xmind

发布资源 2020.12.02 ·
xmind

书生笔记-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 ·
290 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

书生笔记-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 ·
1642 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

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

发布资源 2020.11.17 ·
xmind

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

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

书生笔记-binlog 的写入机制

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

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

发布资源 2020.11.17 ·
docx

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

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

书生笔记-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 ·
718 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多