mysql
文章平均质量分 78
高铭杰
反思总结常态化,华为高斯PG->阿里PG->腾讯PG
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mysql参数explicit_defaults_for_timestamp问题
explicit_defaults_for_timestamp = OFF是第一列的行为非常奇葩,而且会影响后面的表列。原创 2025-12-19 16:07:27 · 375 阅读 · 0 评论 -
mysql主备配置(对比postgresql)
mysql主流模式是逻辑复制,下面的区别其实就是逻辑和物理复制的区别。原创 2025-11-11 16:48:54 · 820 阅读 · 0 评论 -
windows上开发linux程序完美环境搭建
1 virtualbox准备win上下载文件,文件夹结构:dev/ install/ boost_1_59_0.tar.gz CentOS-7-x86_64-Minimal-2009.iso mysql-boost-5.7.15.tar.gz share/ (放解压后的文件) boost_1_59_0 mysql-boost-5.7.15 vbox/ (放虚拟机文件)安装virtualbox,启动配置需要修改网络和CPUCP原创 2021-02-14 10:42:32 · 996 阅读 · 1 评论 -
Mysql连接管理从network_init()到connection_event_loop()
1 network setup简要流程[mysql.cc]network_init > Mysqld_socket_listener *mysqld_socket_listener=new (std::nothrow) Mysqld_socket_listener(bind_addr_str,...) > Connection_acceptor<Mysqld_socket_listener> *mysqld_socket_acceptor = new (std::nothr原创 2021-02-06 19:43:47 · 499 阅读 · 0 评论 -
Mysql连接建立与thread cache唤醒原理
触发场景:drop table a;入口函数:row_drop_table_for_mysql(storage/innobase/row/row0mysql.cc)Stackfil_delete_tablespace(unsigned long, buf_remove_t, char const*) fil0fil.cc:2887row_drop_single_table_tablespace(unsigned long, char const*, char const*, bool, bool,原创 2021-02-01 14:41:30 · 475 阅读 · 0 评论 -
Mysql如何才能走索引排序?
一条SQL到底能不能走索引排序?实际遇到的场景比较多,总结记录到下表,后面不断补充。一些结论1、in查询排序:与范围查询的区别在于,in后面的等值查询依然可以走索引,范围查询不可以。排序行为与范围查询一致。2、in查询排序:in后面的列都不能用索引排序,但是如果in列参加排序,后面可以用索引排序,与范围查询行为一致。3、范围查询后面的列不能走索引,也无法排序。3、范围查询排序:范围查询列自己排序了,后面跟着的列可以走索引排序,可以串联到主键也可以索引排序,但是中间不能断。实际验证CREATE原创 2020-08-03 18:05:34 · 2078 阅读 · 0 评论 -
Mysql长事务总结
一 长事务现象1 PROCESSLIST只能看到sleep时间较长,并不能看出来是事务2 INNODB_TRXselect t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t order by idle_time desc limit 5\G在结果中idletime是计算产生的,也是事务的持续时间。但事务的trxquery是NUL,这并不是说事务什么也原创 2020-06-22 13:44:51 · 1920 阅读 · 0 评论 -
Mysql手动全量增量迁移实战
如果可以接受一定时间的停写,可以使用mysqldump+binlog的方式迁移数据规划8002库迁移全量加增量到8001库,增量迁移时8002库只读保证数据一致。1 流程(1)准备基础数据sysbench oltp_common --mysql-host=127.0.0.1 --mysql-port=8002 --mysql-user=server_234 --mysql-password=server_234 --mysql-db=server_234_db --db-driver=mysql原创 2020-06-17 19:26:39 · 4106 阅读 · 0 评论 -
Mysql清理binlog的几种方式
速查show master logs;PURGE BINARY LOGS TO 'mysql-bin.000001';PURGE BINARY LOGS BEFORE '2014-04-28 23:59:59';show variables like 'expire_logs_days';set global expire_logs_days = 60;flush logs;RE...原创 2020-04-03 22:55:10 · 2605 阅读 · 0 评论 -
基准测试绘图
OLTP基准测试mysql参数(HDD硬盘64核CPU)[mysqld]innodb_buffer_pool_size = 128Mbasedir = xxxdatadir = xxxport = 5400server_id = 06700000socket = xxxjoin_buffer_size = 128Msort_buffer_size = 2Mread_rnd_b...原创 2020-04-03 22:09:01 · 788 阅读 · 0 评论 -
Mysql中unionall的max下推案例
长求总max …(union all)中max无法自动下推,要跟库业务场景手动下推。改造为Max…(union all max…union all…max…)1 构造测试数据/home/mingjie.gmj/bin/sysbench-1.0.16/bin/sysbench oltp_common --threads=64 --events=0 --mysql-socket=xxx ...原创 2020-04-03 22:04:50 · 544 阅读 · 0 评论 -
Mysql参数innodb_thread_concurrency
0 长求总innodb_thread_concurrency- innodb_thread_concurrency是动态参数可以随时修改- 64个活跃连接以内直接配0- 高压场景需要从高到低测试,找到最优值- 高压场景下较低的值可以明显提高写入QPS的占比(高频率的读被限制了)innodb_thread_sleep_delay(微秒)- 定义在开始排队前,等多久加入队列i...原创 2020-04-03 22:03:10 · 5837 阅读 · 0 评论 -
Mysql悲观锁踩坑测试
mysql for update今天遇到一个高并发悲观锁的问题,活跃连接堆积恶性循环最后DB卡死了。做下测试总结。看看这类SQL能扛多少,以后遇到问题心里也有底了。这是出问题前的截图,QPS继续涨连接就开始堆积了,SQL还是这些频率高了。还有一点TOP1的SQL有热点的行for update。悲观锁业务场景对应的索引访问条目进行上排他锁(X 锁),也就是说这个语句对应的锁就相当于upda...原创 2020-04-03 21:53:16 · 912 阅读 · 0 评论 -
Mysql生成大量测试数据
set max_heap_table_size=400000000; # 默认16777216set global innodb_flush_log_at_trx_commit=0;创建测试表CREATE TABLE `__test_t1` ( `id` BIGINT (20) NOT NULL AUTO_INCREMENT, `c1` VARCHAR (20) NOT N...原创 2020-04-03 21:51:25 · 558 阅读 · 0 评论 -
Mysql报文理解mtu拆包依据(tso/gro)
速查:tso在网卡层面拆包,gro在网卡层面拼包ethtool -k eth0generic-receive-offload:ethtool -K eth0 gso ontcp-segmentation-offload:ethtool -K eth0 tso ontcpdump -i eth0 -s 0 -w s3_s.cap port 3001默认tso:...原创 2020-04-03 21:46:50 · 1171 阅读 · 0 评论 -
Ping报文理解mtu拆包依据
ping报文理解mtu拆包依据速查:不是ICMP的话从IP头算起(包括IP头20字节)后面的长度等于ip header中的length,也就是拆包依据是ICMP包的话IP+ICMP=20+ping -s n=20+n > MTU1500产生拆包,也就是说-s 1480以上就会拆如果拆包了第二个包的IP标志位Flags中会看到 Fragment offset: xxx如果拆包了...原创 2020-04-03 21:38:57 · 4226 阅读 · 0 评论 -
Mysql网络问题处理方法
1 抓包与网络问题速查1.1 抓包Linux 普通抓包:1. 打开一个到 ECS 的 ssh 连接,并以 root 身份登录。在该窗口运行下列命令tcpdump -i eth0 -s 0 -w /var/tmp/rds.cap port 数据库实例端口2. 复现问题。3. 使用 ctrl + c 终止上述窗口 的 tcpdump 命令。4. 下载 /var/tmp/rds.cap...原创 2020-04-03 21:35:58 · 1643 阅读 · 0 评论 -
Mysql show status核心参数含义
innodb行锁mysql> show global status like '%innodb%lock%';+-------------------------------+-------+| Variable_name | Value |+-------------------------------+-------+| Innodb_row_l...原创 2020-04-03 21:21:10 · 806 阅读 · 0 评论 -
Mysql范围查询优化
mysql range optimization速查1:eq_range_index_dive_limit决定的两种评估方式对比DiveStatistic真实idx1(t1,t2,k)5(误差0%)2(误差60%)5Idx2(t1,k)1026(误差0%)985(误差%)1026(误差4%)statistics时长0.188ms0.107ms...原创 2020-04-02 14:49:31 · 3581 阅读 · 0 评论 -
为什么ib_logfile被覆盖Mysql还能正常运行!?
ib_logfile0和ib_logfile1被覆盖但是mysql还在正常运行,复现问题记录排查流程,涉及文件系统的一些知识点。速查拿到FD:lsof | grep /u01/database/data/ | grep delete查看FD:stat /proc/23141/fd/4复现问题docker1新建空实例,删除后docker1还可以正常使用rm ib_logfile...原创 2020-04-02 14:47:46 · 685 阅读 · 0 评论 -
Xtrabackup在线搭建备库与并行复制延迟
mysql在线搭建备库&并行复制&备库延迟1 读写环境准备主库模拟压力环境准备一个干净的主库(开undo表空间回收顺便测下)sysbench oltp_common --mysql-socket=tmp/mysql.sock --mysql-user=root --mysql-db=server_234_db1 --db-driver=mysql --tables=4 -...原创 2020-04-02 14:45:13 · 574 阅读 · 0 评论 -
Mysql onlineddl vs gh-ost
mysql 0nlineddl vs gh-ostonline ddl1 早期DDL实现原理(5.6.7之前 )Innodb早期支持通过copy table跟inplace的方式来执行DDL语句,其原理如下:copy table方式新建跟原表格一致的临时表,并在该临时表上执行DDL语句锁原表,不允许DML,允许查询逐行数据从原表拷贝到临时表中**(这个过程是没有排序的)**拷贝...原创 2020-03-31 15:54:04 · 1514 阅读 · 0 评论 -
Mysql空间回收总结
准备数据4张100w的表sysbench oltp_common --mysql-socket=tmp/mysql.sock --mysql-user=root --mysql-db=server_234_db1 --db-driver=mysql --tables=4 --table-size=5000000 --report-interval=1 --threads=8 prepare...原创 2020-03-31 00:04:40 · 913 阅读 · 0 评论 -
Mysql加密解密
Mysql加密解密https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_aes-encrypt函数定义AES_ENCRYPT(str,key)返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,使用 VARBINARY or BLO...原创 2020-03-31 00:00:55 · 1075 阅读 · 0 评论 -
Mysql binlog解析
mysql binlog解析5.6为例1 binlog解析(fmt=row)logbin打开,找到路径mysql> show global variables like 'log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_bin |...原创 2020-03-30 23:59:40 · 1036 阅读 · 0 评论 -
Mysql的redo和undo日志
undo1.1 undo(记旧值)undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name=‘B’ 修改为Name = ‘B2’ ,那么undo日志就会用来存放Name='B’的记录,如果这个修改出现异常,可以使用undo日志来实现回滚操作,保证事务的一致性。IdName1A2B3C4D对数据的变更操作...原创 2020-03-30 23:58:04 · 1769 阅读 · 2 评论 -
Mysql并行复制实践总结
mysql并行复制总结实战篇Mysql5.6 并行复制一般Mysql主从复制有三个线程参与,都是单线程:Binlog Dump(主) -> IO Thread (从) -> SQL Thread(从)。复制出现延迟一般出在两个地方:SQL线程忙不过来 (可能需要应用数据量较大,可能和从库本身的一些操作有锁和资源的冲突;主库可以并发写,SQL线程不可以;主要原因)网络抖动导...原创 2020-03-30 18:09:07 · 827 阅读 · 0 评论 -
innodb与ext4缓存交互分析
innodb与ext4缓存交互分析一般来说对一个文件的写入操作包括两部分,对数据本身的写入操作,以及对文件属性(metadata元数据)的写入操作(这里的文件属性包括目录,inode等)。O_DIRECT直接IO绕过了page cache/buffer cache以后为什么还需要fsync()了,就是为了把directory cache和inode cache元数据也刷新到存储设备上。而由于...原创 2020-03-30 18:04:13 · 874 阅读 · 0 评论 -
Mysql索引使用案例分析
Mysql索引使用案例分析1 Index Design1.1 设计过程考察只用排序 还是 先检索在排序(排序会限制索引使用)。考察哪些列选择性更好,哪些列在where中最多。选择性好的放左面还是用的多的放左面?一般是用的多的放左面。原因:用的多可以把前面用的多的条件使用in跳过(例如性别)(in组合不能太多否则就不再评估了,受eq_range_index_dive_limit控制...原创 2020-03-30 17:55:29 · 717 阅读 · 0 评论 -
MySQL权限系统分析
MYSQL权限系统实践操作,总结整理。匿名用户的问题直接搜索“匿名”MySQL访问权限系统权限系统工作原理MySQL权限系统保证所有的用户只执行允许做的事情。当你连接MySQL服务器时,你的身份由你从那儿连接的主机你指定的用户名来决定。连接后发出请求后,系统根据你的身份和你想做什么来授予权限。MySQL权限控制包含2个阶段:阶段1:服务器检查是否允许你连接。阶段2:假定你能...原创 2019-04-21 14:02:03 · 2569 阅读 · 0 评论
分享