自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(858)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 个人的一些项目

go mysql客户端https://github.com/baixiaoyu/gocligo 解析系统表空间https://github.com/baixiaoyu/gibdgo id生成器https://github.com/baixiaoyu/idgeneratorpython 一些脚本https://github.com/baixiaoyu/dbascriptsgo mysql数据对比https://github.com/baixiaoyu/mydiff...

2022-04-28 12:34:56 1124

原创 mysql client server协议

实践了下mysql通讯协议,写了个go 的mysql客户端,效果如下go run main.go -h 127.0.0.1. -p 20996Welcome to the Go MySQL CLI. Commands end with ;Type your command > select * from test.dba_test;Type your command > id |name |sex |c |d |d1 |d2

2022-04-16 11:10:08 398

原创 dbagent

最近用go把数据库的自动化运维重构了一遍,之前都是些一些分散的脚本,没有成体系,现在把所有的功能都集成到了agent中,agent中封装的有些命令,会执行一些条件检查,避免手工执行的一些问题,比如建库,库名重复,等等,agent不曝漏密码,可以对执行的所有命令进行记录,审计,agent定时收集数据上传,并提供接口给server端,server端可以通过接口调用agent,操作mysql。server端使用raft,执行统计,以及调用agent接口操作mysql。agent支持的命令如下:The comm

2022-03-06 12:25:30 1349

原创 mysql showprocesslist 故障定位

在进行mysql 故障问题处理的时候,我们一般第一个先看 show processlist,对结果进行分析,有的时候,人工分析需要时间,本脚本能自动分析原因,给出相关建议。https://github.com/baixiaoyu/dbascripts/blob/main/myanalyzer.py如果阻塞的线程比较多,输入的结果也会比较多,另外如果sql比较长,那么输出结果展示也不一定很好。有问题可以反馈给我进行修改。...

2021-12-11 20:57:09 633

原创 MySQL半同步 vs raft

MySQL的after_sync半同步与raft 保证一致性的方式有些类似。after_sync是master在sync binlog后等待从库把事务写到relay log后的ack,拿到ack后,在commit,然后在返回给客户端提交成功的信息。raft中的日志有commit和applied 两个列表,commited 代表日志写入了文件,applied代表日志应用到了状态机。raft也是leader先写日志,然后在等待大部分的节点信息都写入了日志,提交了,然后leader在提交,提交日志后,lea

2021-09-16 14:54:27 330

原创 MySQL 数据对比

MySQL数据对比是常见的日常任务,使用pt-checksum 只能对比主从复制的数据,并且效率和使用上也不太方便。因此写了一个对比的工具,经过测试对比50张500万的表,能在30s内完成。要求,mysql 表必须有自增主键,对比期间不会加锁。对于不是非常非常高并发的主从复制,也可以进行数据的对比。可以非常方便的加入到日常的定时任务中。建议使用单独的机器运行对比,并把结果保存在单独的数据库实例中。链接:https://github.com/baixiaoyu/dbascripts/tree/main/c

2021-09-02 16:12:57 1791

原创 orchestrator master故障检测切换输出

Aug 29 03:15:52 dba1 orchestrator[8092]: dial tcp 192.168.36.131:3306: connect: connection refusedAug 29 03:15:52 dba1 orchestrator: [mysql] 2021/08/29 03:15:52 packets.go:123: closing bad idle connection: EOFAug 29 03:15:52 dba1 orchestrator: 2021-08-29

2021-08-29 15:59:21 561

原创 MySQL BinLog Server

MySQL 常用的几种Binlog Server有mysqlbinlog black hole maxscale.mysqlbinlog只是用来做纯binlog file的接受保存,只是一个命令启动了一个进程不停的接收。black hole是一种存储引擎,因此它是一个数据库实例,可以用来中继复制,maxscale也能用来中继复制,maxscale只适用于gtid复制以及MariaDB servers的复制,black hole 没有这个限制。MaxScale的使用https://mariadb.com/

2021-08-26 23:30:48 309

原创 MySQL8 resultset_metadata 对性能的影响

看了姜老师的视频,介绍这个参数对性能的影响,自己实际测试了一下。表结构+-------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+--------------+------+-----+---------+----------------+| id | int |

2021-07-30 10:46:02 351

原创 MySQL 查看指定时间范围内的大事务

代码地址:https://github.com/baixiaoyu/dbascripts/blob/main/bigtrx.py这个脚本能获取指定时间内的大事务信息。分别通过大小,影响行数及执行时间进行排序输出。输出的结果中有获取指定事务的命令,在排查大事务方面比较方便。输出结果实例:------order by rows-------trx 61824725984 start at:2021--06--17 12:23:06 from line: 4104 to line: 4515 has 8

2021-07-30 10:33:28 532

原创 MySQL innodb数据文件解析

写了一个程序,解析了MySQL的系统表空间和dump数据字典头,只是用于尝试以及学习,在实际中看不到使用的场景,所以只实现这2部分。gtihub 地址: https://github.com/baixiaoyu/gibd系统表空间解析输出部分日志输出内容如下:...

2021-07-24 21:06:09 278

原创 MHA与Orchestrator 对比

从下面几点对比了MHA和Orchestrator

2021-07-06 12:22:41 1154

原创 iterm2 的问题

DBA最好不要用iterm2去操作数据库,可能是我没有配置好,在执行命令的时候,库名输入了特殊字符,结果iterm也没有办法显示特殊字符是什么。ascii只显示128位内的。另外在拷贝大量命令的时候有莫名其妙的截断。导致执行到一半报错。还是用secrecrt 吧。...

2021-07-02 17:55:17 203

原创 pt-osc ghost 对比

从下面几个方面对比了下pt-osc和ghost

2021-07-02 12:04:15 586

原创 MySQL组提交

1. Queue ourselves for flushing. 2. Grab the log lock, which might result is blocking if the mutex is already held by another thread. 3. If we were not committed while waiting for the lock 1. Fetch the queue 2. For each thread in the que

2021-06-11 10:26:45 350 2

原创 MySQL binlog发送

sql_parser.cc 中处理语句 case COM_BINLOG_DUMP_GTID: // TODO: access of protocol_classic should be removed error= com_binlog_dump_gtid(thd, (char *)thd->get_protocol_classic()->get_raw_packet(), thd->get_protocol_classic()

2021-06-10 17:50:01 325

原创 semi-sync3

semi sync 相关hook 及处理函数都是在semisync_master_plugin.cc 文件中定义Trans_observer trans_observer = { sizeof(Trans_observer), // len repl_semi_report_before_dml, //before_dml repl_semi_report_before_commit, // before_commit repl_semi_report_before_ro

2021-06-10 16:15:51 209

原创 MySQL半同步与sync_relay_log关系2

relay log 在执行after_append_to_relay_log 的时候调用了flush_and_sync 进行flush 和syncbool MYSQL_BIN_LOG::flush_and_sync(const bool force){ mysql_mutex_assert_owner(&LOCK_log); if (flush_io_cache(&log_file)) return 1; std::pair<bool, bool> r

2021-06-04 14:21:27 289

原创 MySQL半同步与sync_relay_log关系1

sync_relay_log 肯定是与relay log相关,所以从rpl_slave.cc处理relay log的代码开始入手extern "C" void *handle_slave_io(void *arg)/* XXX: 'synced' should be updated by queue_event to indicate whether event has been synced to disk */ bool synced= 0; if (que

2021-06-04 13:28:13 363

原创 gh-ost的原子rename

在pt-osc的切换时候rename的过程会有短暂的表不存在的情况,应用程序可能会报错。gh-ost 通过先创建一个切换表,一个会话 lock住原表和切换表,然后在另外一个会话执行rename操作导致rename被故意阻塞,然后第一个会话删除掉切换表,在unlock 之前的锁,第二个会话执行成功2021-05-20 22:59:45 INFO Grabbing voluntary lock: gh-ost.99.lock2021-05-20 22:59:45 INFO Setting LOCK tim

2021-05-21 12:06:15 290

原创 mysql 中的limit语句在执行计划中rows不准确

https://forums.mysql.com/read.php?24,597352,597431#msg-597431https://www.percona.com/blog/2006/07/24/mysql-explain-limits-and-errors/https://bugs.mysql.com/bug.php?id=50168limit在explain 中会被忽略,在8.0中也没有修复

2021-04-16 10:11:46 408

原创 percona mysql与官方版本对比

https://www.percona.com/software/mysql-database/percona-server/feature-comparison

2021-04-12 11:52:52 504

原创 mysql xtrabackup工具等待优化

xtrabckup工具的备份优化,添加了下面的参数Options summary–ftwrl-wait-timeout (seconds) - how long to wait for a good moment. Default is 0, not to wait.–ftwrl-wait-query-type - which long queries should be finished before FLUSH TABLES WITH READ LOCK is run. Default is al

2020-12-06 18:12:28 384

原创 gap lock记录

gap lock没有sx冲突一说,在主键上的查询如何没有对应的记录,也是next-key lock,不是单纯的行锁

2020-12-06 16:29:40 271

原创 mysql是否会缓存执行计划

网友问题了一个问题,oracle中有硬解析,软解析之分,mysql是否也有软解析?解析完sql后,后面不会再次重复解析?其实是有的就是query cache,之前一直认为query cache是缓存结果数据的,其实不是。/* Warning. The purpose of query_cache_send_result_to_client() is to lookup the query in the query cache first, to avoid parsing and

2020-12-02 15:25:49 316

原创 mysql 一个update语句事务的执行流程

更新空行不会开启2阶段提交,没有prepare阶段开始执行begin命令#endif case SQLCOM_BEGIN: if (trans_begin(thd, lex->start_transaction_opt)) goto error; my_ok(thd); break; ** Begin a new transaction. @note Beginning a transaction implicitly commits a

2020-12-02 10:32:58 1327

原创 oracle闪回与undo的关系

Query all rely on undo data, records of the effects of each update to an Oracle databaseand values overwritten in the update. Used primarily for such purposes as providingread consistency for SQL queries and rolling back transactions, these undo records

2020-11-26 17:43:53 591

原创 mysql限制并行

对一个innodb来说,限制并发线程的主要目的是减少上下文切换导致的性能问题。在有助于最大程度地减少线程之间的上下文切换的情况下,InnoDB可以使用多种技术来限制并发执行的操作系统线程的数量(从而限制在任何时间处理的请求的数量)。当InnoDB从用户会话接收到新请求时,如果同时执行的线程数处于预定义的限制内,则新请求将休眠一小段时间,然后再次尝试。睡眠后无法重新安排的请求被放入先进/先出队列,并最终得到处理。等待锁的线程不计入同时执行的线程数。您可以通过设置配置参数innodb_thread_conc

2020-11-25 11:44:15 377

原创 mysqld初始化没有系统库生成

在debian的系统上进行mysqld 初始化的操作,但是没有看到有系统库生成,导致无法启动,指定了defaults-file依然不行。需要加–no-defaults添加参数–no-defaults,进行初始化。并且,切记要放在参数的首位!http://www.voidcn.com/article/p-zzxrezio-zp.html...

2020-11-17 11:51:31 380 1

原创 gunicorn启动django的坑

配置文件bind = ‘0.0.0.0:80’workers = 8threads = 64loglevel = ‘debug’timeout=120backlog = 1024worker_class = ‘gevent’daemon = Trueproc_name = ‘xxx’pidfile = ‘./xx.pid’accesslog = ‘./log/all.log’errorlog = ‘./log/error.log’用上面的的方式启动的时候总是提示worker超时,即

2020-10-18 21:39:55 1128

原创 mysql修改源码发布及源码中的debug日志查看

修改了mysql的源码后,就能按照,源码编译部署的步骤进行部署,打成一个解压即用的包。mkdir debugcd debugcmake … -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/user/local/mysql57/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3309 -DMYSQL_USE

2020-10-13 17:09:53 645

原创 zookeeper是如何实现应用的高可用及假死的问题

来自:https://tech.souyunku.com/?p=11706用到的zookeeper主要特性:节点唯一多个client竞相创建相同路径的节点时,只有一个client能成功。临时节点client创建节点时,如果指定节点的类型为临时节点,那么此节点的生命周期就是当前的会话,如果client挂了,与zookeeper的连接会话就结束了,此节点便被自动删除。Watcherclient可以对目标节点进行监听,例如监听此节点的状态变化,那么当节点被删除时,client就会收到zookeepe

2020-10-09 16:21:52 409

原创 mysql用xtrabackup 在从库制作新从库

innobackupex --defaults-file=/data/mysql_3320/my3320.cnf --user=mybackup --password=‘qkyo9eGlf0DCGo3x7UHU’ --socket=/tmp/mysql_3320.sock --slave-info --safe-slave-backup --no-timestamp /data/mysql_backup/3320innobackupex --apply-log /data/mysql_b.

2020-09-24 17:21:30 426

原创 mysql数据变更捕获用什么

在捕获mysql变更上,有一些组件可以直接使用的,maxwell ,databus,canal,这三个工具上maxwel足够简单支持mysql到kafak,databus比较复杂,需要自己写代码去databus上消费,支持的数据源比较多,canal也支持客户段消费,也能把变更发送到kafka,也支持集群模式,从这个上面来看个人更倾向canalhttps://blog.csdn.net/qq_25073261/article/details/104969148?utm_medium=distribute.p

2020-09-17 14:19:09 284

原创 mysql ,oracle不一样的一个例子

oracleSQL> select * from dba_test;ID50session a:SQL> update dba_test set id=id-10;1 row updated.SQL> commit;在commit前执行session bsession b:SQL> update dba_test set id=id-30;–被a阻塞,a提交后,1 row updated.SQL> select * from dba_test;I

2020-09-10 14:55:27 202

原创 mongodb知识回顾

mongodb --nssize默认情况下,MongoDB(MMAP)的每个数据库的命名空间保存在一个 16MB 的 .ns 文件中,平均每个命名占用约 628 字节,也即整个数据库的命名空间的上限约为 24000。每一个集合、索引都将占用一个命名。所以,如果每个集合有一个索引(比如默认的 _id 索引),那么最多可以创建 12000 个集合。如果索引数更多,则可创建的集合数就更少了。同时,如果集合数太多,一些操作也会变慢。不过,如果真的需要建立更多的集合的话,MongoDB 也是支持的,只需要在启动

2020-09-09 10:30:27 545 1

原创 5.7的一个开发上的bug

https://bugs.mysql.com/bug.php?id=79549Regression: “unknown column” for outer computed values used inside a subquery关联自查询中使用外部的别名,无法识别的问题,开发时候需要注意下

2020-08-18 11:40:47 245

原创 django定时任务

django结合celery实现定时任务,高版本的celery已经不需要djcelery了,django与celery的版本要匹配,否则会出现一系列的问题。我的版本django2.1.12 celery 4.4.4 python3.7 kombu 4.6.10启动方式:1启动djangovenv/bin/python3 manage.py runserver 80002 启动beatvenv/bin/celery -A dbplat beat -l info3 启动workervenv/

2020-06-06 15:59:25 352

原创 MongoDB的读写分离

MongoDB的读写分离也是在代码层面配置参数,然后复制集自动的进行了转发,从mongodb自带的分片和读写分离来看,真是是比mysql功能上好很多,天然的大数据量的存储。使用的ReadPreference方式进行的读写分离,配置的策略还是比较多的参考:https://blog.51cto.com/lizhuquan0769/1763287...

2020-06-05 10:46:58 533

原创 mysql Orchestrator使用与mha对比

待填充

2020-05-27 14:25:51 1038

开发者突击:java web 主流框架整合开发 源代码

开发者突击:java web 主流框架整合开发 源代码

2014-12-20

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

TA关注的人

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