![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 71
DBA之路
啥也不会的DBA
展开
-
【OC】OC与MHA对比
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。原创 2024-07-11 11:23:30 · 791 阅读 · 0 评论 -
【MySQL工具】pt-heartbeat
pt-heartbeat - 监控 MySQL 复制延迟。原创 2024-05-07 15:46:30 · 725 阅读 · 1 评论 -
【MHA】MySQL高可用MHA源码1-主库故障监控
监控主库故障的函数 是一个无限循环的函数,知道主库宕机或出现连接问题。原创 2024-04-26 18:32:58 · 717 阅读 · 1 评论 -
【MHA】MySQL高可用MHA介绍8-常见错误以及解决
MHA Manager 尝试在主服务器上保存二进制日志,但是由于权限问题而失败。错误消息指出 app 用户在 host1 上没有对二进制日志的读权限。解决方法是为 app 用户授予对二进制日志的读权限,或者使用更高权限的用户(如 root)。MHA Manager 检测到配置了多主复制,而当前版本的 MHA 不支持多主复制。MHA Manager 尝试在主服务器 hostx 上保存二进制日志,但是未成功。这些日志是 MHA Manager 在执行故障检测和故障切换过程中遇到的一些问题的记录。原创 2024-04-25 20:21:00 · 267 阅读 · 0 评论 -
【MHA】MySQL高可用MHA介绍7-常见问题
如果您拥有 root 账户,是的,您可以使用。在两层复制中,主服务器的二进制日志文件和位置被写入从服务器的中继日志中(详见幻灯片 p.17-)。默认情况下,除非所有从服务器都存活,否则 MHA 不会开始故障切换,因此当 MHA 运行时应该是可靠的。已知的一个问题是,在基于语句的二进制日志记录执行大型 LOAD DATA 后,如果主服务器失败,恢复可能会失败。如果您只有一个主服务器和一个从服务器,“一些从服务器落后于最新的从服务器”情况就永远不会发生,因此自动故障切换变得更加容易。不支持 Windows。原创 2024-04-25 20:12:54 · 760 阅读 · 0 评论 -
【MHA】MySQL高可用MHA介绍6-后台运行与管理多套集群
默认情况下,masterha_manager在前台运行。您可以将masterha_manager程序在后台运行,如下所示。设置nohup,并确保masterha_manager不会从STDIN、STDOUT和STDERR读取/写入。原创 2024-04-25 20:07:48 · 278 阅读 · 0 评论 -
【MHA】MySQL高可用MHA介绍5-所有参数
如果您使用设置 --orig_master_is_new_slave(这意味着当前主服务器作为新主服务器的新从属服务器运行)进行在线主服务器切换,而没有设置 repl_password,那么启动从属服务器将失败,因为当前主服务器上的默认复制密码为空(MHA 将在原始主服务器上执行 change master 而不在其他从属服务器上设置复制密码)。通过将 candidate_master 设置为 1,只要满足成为新主服务器的条件(例如启用了二进制日志,不会显著延迟复制等),服务器就会优先考虑成为新主服务器。原创 2024-04-25 15:58:19 · 740 阅读 · 2 评论 -
【MHA】MySQL高可用MHA介绍4-故障监控与切换具体流程
以下步骤可以通过 masterha_master_switch 命令完成(带 --master_state=alive 参数)。验证复制设置并识别当前主服务器。关闭失败的主服务器(可选)检查上次故障转移状态。原创 2024-04-25 15:19:34 · 1613 阅读 · 0 评论 -
【MHA】MySQL高可用MHA介绍3-命令详解
可以通过执行 masterha_manager 命令来启动 MHA Manager。masterha_manager 接受以下参数。原创 2024-04-24 17:51:43 · 927 阅读 · 0 评论 -
【MHA】MySQL高可用MHA介绍2-安装,配置,要求与限制
MHA可以管理master1和master2,并在master1崩溃时将master2提升为新主服务器,但是MHA无法监视和恢复slave3,因为slave3从不同的主服务器(master2)复制。在MHA Manager版本0.52之前,MHA检查所有受管理的主机,并仅在所有从服务器从同一主服务器复制时才开始监视/故障转移。当MHA执行基于GTID的故障转移时,MHA会检查binlog服务器,如果binlog服务器领先于其他从服务器,MHA会在恢复之前将差异binlog事件应用于新主服务器。原创 2024-04-24 17:12:48 · 1127 阅读 · 3 评论 -
【MHA】MySQL高可用MHA介绍1-功能,架构,优势,案例
MHA(Master High Availability)执行自动化的主服务器故障转移和从服务器提升,最小化停机时间,通常在10-30秒内完成。MHA可以防止复制一致性问题,并节省了获取额外服务器的费用。所有这些操作都不会造成性能下降,没有复杂性(易于安装),也不需要对现有部署进行任何更改。MHA还提供了定期在线主服务器切换功能,安全地将当前运行的主服务器切换到新主服务器,仅需几秒钟的停机时间(仅阻止写入)。MHA Manager有管理程序,例如监控MySQL主数据库,控制主故障转移等。原创 2024-04-24 15:30:19 · 843 阅读 · 0 评论 -
【MySQL复制】半同步复制
除了内置的异步复制之外,MySQL 5.7 还支持通过插件实现的半同步复制接口。本节讨论半同步复制的概念及其工作原理。接下来的部分将涵盖与半同步复制相关的管理界面,以及如何安装、配置和监控它。原创 2024-01-29 11:19:06 · 1224 阅读 · 0 评论 -
【MySQL源码】Seconds_Behind_Master是如何计算的
作为MySQL DBA,相信大家对参数 `Seconds_Behind_Master` 并不陌生,该字段的值可以通过 show slave status\G的输出,表示主从延迟的时间,单位为秒。监控主从延迟一般取这个值就足够了。0 表示无延迟,理想状态该值不要超过1。如果业务场景中有写后读,而且读的是从库,那么就会对主从延迟要求非常高。理解了该字段的含义,大家有没有探究过该值是如何计算的?相信大家都可以说出来 是从库的时间 减去 SQL_thread应用到的主库binlog event的时间戳。今天从官原创 2024-01-23 16:45:38 · 1564 阅读 · 0 评论 -
【MySQL故障】主从延迟越来越大
Relay_Master_Log_File 与 Exec_Master_Log_Pos(sql_thread 应用的relay_log对应主库文件和位点)Master_Log_File 与 Read_Master_Log_Pos (读取到的主库的binlog文件和位点)首先确认落后是在 IO_thread(拉取binlog日志) 还是在 SQL_thread(应用binlog日志)修改relay log的落盘参数,sync_relay_log 原来设置的是1 ,该大一些。原创 2024-01-23 11:55:36 · 1361 阅读 · 0 评论 -
【MySQL变更】gh-ost原理解读
所有现有的在线表结构变更工具都以相似的的原理:它们创建一个与原始表结构相同的幽灵表,在该表为空时进行表结构变更,缓慢并增量地将数据从原始表复制到幽灵表,同时将正在进行的更改(任何INSERT, DELETE,UPDATE应用于源表)应用到幽灵表。最后,在适当的时候,他们用幽灵表替换原表。gh-ost使用相同的模式。然而,它与所有现有工具的不同之处在于不使用触发器。因为触发器是许多限制和风险的来源。gh-ost 使用二进制日志流来捕获表数据变化,并将它们异步应用到ghost表上。原创 2023-12-25 12:58:48 · 1360 阅读 · 0 评论 -
【MySQL工具】pt-online-schema-change源码分析
通过阅读源码 更加深入了解原理,以及如何进行全量数据同步,如何使用触发器来同步变更期间的原表的数据更改。(^-^)V。原创 2023-12-22 20:36:15 · 1033 阅读 · 0 评论 -
【MySQL工具】pt-online-schema-change 详细介绍
无锁表修改表结构工具。原创 2023-12-20 21:51:42 · 2136 阅读 · 0 评论 -
【MySQL命令】show slave status\G 超详细全面解释
这个命令是DBA日常运维中常用来查看主从状态的命令,很多备份,监控工具也会使用到该命令监控主从状态是否正常,主从延迟,获取位点信息等。作为常用日常命令,一定要完全理解该命令的输出。今天主要结合 官方文档 和 实际输出 详细解释该命令。达到完全搞懂!该语句提供有关副本线程的基本参数的状态信息。它需要 SUPER 或特权。建议使用\G。原创 2023-12-13 18:09:58 · 3583 阅读 · 0 评论 -
【MySQL备份】MySQL备份工具-MyDumper
MyDumper是一个MySQL逻辑备份工具。mydumper负责导出 MySQL 数据库的一致备份myloader从 mydumper 读取备份,连接到目标数据库并导入备份。这两个工具都使用多线程功能。MyDumper优势有哪些速度更快 - 多线程并发备份性能更好 - 避免昂贵的字符集转换,整体代码高效易于管理的输出文件 -(比如每个表都能生成单独的备份文件,备份的元数据信息文件metadata记录位点信息等等,便于查看/解析数据)原创 2023-12-13 12:27:47 · 1520 阅读 · 0 评论 -
mysqldump --set-gtid-purged参数详解
系统变量( gtid_purged) 的全局值 @@GLOBAL.gtid_purged是一个 GTID 集合,包含已提交但不存在于binlog中的所有 GTID 组成。可以手动设置 gtid_purged 的值,以便在服务器上记录某个 GTID 集中的事务已被应用,尽管它们不存在于服务器上的任何二进制日志中。在开启了GTID模式的数据库,如果你对数据库的部分数据进行了备份,如果不加参数--set-gtid-purged=OFF,该备份中也会包含该数据库的所有GTID。原创 2023-12-12 14:05:32 · 2605 阅读 · 0 评论 -
MySQL GTID详解
GTID 全局事务唯一标识( global transaction identifier)原创 2023-12-11 19:50:21 · 495 阅读 · 0 评论 -
【MySQL命令】RESET MASTER;RESET SLAVE;RESET SLAVE ALL详细解释
、原创 2023-07-25 18:57:57 · 1930 阅读 · 0 评论 -
【MySQL工具】my2sql-快速解析binlog
go版MySQL binlog解析工具,通过解析MySQL binlog ,可以生成原始SQL、回滚SQL、去除主键的INSERT SQL等,也可以生成DML统计信息。类似工具有binlog2sql、MyFlash、my2fback等。原创 2023-11-29 17:57:30 · 860 阅读 · 0 评论 -
【MySQL源码】使用CLion 远程调试MySQL源码
作为DBA工作多年,如果还是停留在运维阶段,很难提高自己的技术水平。阅读 MySQL 及相关工具的源代码,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路,全方位提高技术水平。原创 2023-11-29 17:42:57 · 706 阅读 · 1 评论 -
MySQL中继日志 Relay Log
主从中断导致relay log大量堆积,导致磁盘告警,参数relay_log_purge设置为on ,relay log 在应用完成后本该自动删除,但是由于主从中断,导致relay log大量堆积,从而磁盘告警。需要手动清理relay log释放磁盘空间后进行主从恢复。原创 2023-07-25 14:45:16 · 664 阅读 · 0 评论 -
mysqldump参数 --master-data详解
mysqldump -uroot -proot -h10.238.162.31 --master-data=2 --single-transaction --databases test > /server/backup/test.sql加上 --databases test选...原创 2020-05-06 20:20:00 · 6625 阅读 · 2 评论 -
主从GTID不一致处理方法
原因: 我在从库上删除了一个测试库,因此从库的GTID比主库多解决 :在从库上创建库 ,然后在主库上删除。再在主库上跳过这两个GTID从库从库多出了两个GTID的事务:d3c6f103-803c-11ec-b805-08c0eb350a8a:1-2在主库上跳过两个GTIDset session gtid_next='d3c6f103-803c-11ec-b805-08c0eb350a8a:1'begin;commit;set session gti原创 2022-04-15 17:32:44 · 1036 阅读 · 0 评论 -
MySQL幻读以及加锁规则
什么是幻读?幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行幻读定义的两个前提1 在可重复读隔离级别下,普通的查询是快照读,是不会看到别的事务插入的数据的。因此,幻读在“当前读”下才会出现。2 幻读仅专指“新插入的行”。幻读有什么问题?1首先是语义上的。2其次,是数据一致性的问题。如何解决幻读为了解决幻读问题,InnoDB 只好引入新的锁,也就是间隙锁 (Gap Lock)。什么是间隙锁间隙锁,锁的就是两个...原创 2021-09-26 23:12:10 · 265 阅读 · 0 评论 -
InnoDB脏页刷新
粉板 redo log ib_logfile0账本 数据文件 .ibd掌柜的记忆 内存脏页 与 干净页当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”刷脏页(flush)什么时候会flush 并且有什么影响1 redo log 写满了 (粉板满了)第一种是“redo log 写满了,要 flush 脏页”,这种情况是 InnoDB 要尽量避免的。因为出现这种情况的时候原创 2021-08-31 00:24:33 · 269 阅读 · 0 评论 -
InnoDB三大特性 自适应哈希索引
1 什么是自适应哈希索引《高性能MySQL》5.1.1索引类型中如是提到:“InnoDB引擎有一个特殊的功能叫做“自适应哈希索引(adaptive hash index)”。当InnoDB注意到某些索引值被使用得非常频繁时,它会在内存中基于B-Tree索引之上再创建一个哈希索引,这样就让B-Tree索引也具有哈希索引的一些优点,比如快速的哈希查找。这是一个完全自动的、内部的行为,用户无法控制或者配置,不过如果有必要,完全可以关闭该功能。”摘录来自: 施瓦茨 (Baron Schwartz)...原创 2021-08-30 23:42:00 · 332 阅读 · 0 评论 -
InnoDB的三大特性 change buffer
1 什么是change buffer从图中可以看到 buffer pool中有insert buffer page当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行 change buffer 中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的...原创 2021-08-30 23:16:38 · 229 阅读 · 0 评论 -
optimizer_trace
《极客时间》 16篇/* 打开optimizer_trace,只对本线程有效 */SET optimizer_trace='enabled=on';/* @a保存Innodb_rows_read的初始值 */select VARIABLE_VALUE into @a from performance_schema.session_status where variable_name = 'Innodb_rows_read';/* 执行语句 */select city, name,age ..原创 2021-08-28 12:30:18 · 406 阅读 · 0 评论 -
explain中的Extra
Using index condition;Using filesortusing whereusing index原创 2021-08-27 14:46:23 · 86 阅读 · 0 评论 -
show processlist;stats含义
·Sending to client首先要明白SQL在进行查询时,都是一边读数据一边发数据给客户端的。数据库会将最先获取到的数据写到net_buffer中(由参数net_buffer_length定义这个空间的大小,默认16k),然后反复获取数据。当net_buffer写满后通过网络接口发送出去。如果发送成功就清空net_buffer继续取后面的数据并写入net_buffer。如果发送失败,就表示本地网络栈(socket send buffer)写满,此时会暂停读取数据并进入等待。直到网络栈重新可...原创 2021-08-27 14:21:41 · 379 阅读 · 0 评论 -
mysql bit类型查询为空
MySQL [conan_commons_qywechat]> show create table contact_way_config\G*************************** 1. row *************************** Table: contact_way_configCreate Table: CREATE TABLE `contact_way_config` ( `id` bigint(20) NOT NULL AUTO_INCR...原创 2021-06-28 17:33:36 · 781 阅读 · 0 评论 -
MHA切换日志
测试 一主两从mysql5.7 GTID1 启动MHA进程sh start.sh op-yanhaihang-mha-mysql2 制造流量mysqlslap -udbadmin_01 -p*** -hdx-op-yanhaihang-mha-mysql1-online -P 3306 --auto-generate-sql --auto-generate-sql-load-type=write --auto-generate-sql-add-autoincrement --...原创 2021-06-24 16:37:43 · 188 阅读 · 0 评论 -
MySQL数据库设计规范(仅供参考)
MySQL数据库设计规范(仅供参考)目录规范背景与目的 设计规范 2.1 数据库设计 2.1.1 库名 2.1.2 表结构 2.1.3 列数据类型优化 2.1.4 索引设计 2.1.5 分库分表、分区表 2.1.6 字符集 2.1.7 程序DAO层设计建议 2.1.8 一个规范的建表语句示例 2.2 SQL编写 2.2.1 DML语句 2.2.2 多表连接 2.2.3 事务 2.2.4 排序和分组 2.2.5 线上禁止使用的SQL语句1. 规范背景与目的MySQ原创 2021-05-17 15:03:53 · 169 阅读 · 0 评论 -
主从同步报错1
Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction '5a4178ac-bd37-11ea-8a85-aabb0a095d49:5762816' at master log mysql-bin.000005, end_log_pos 748195647. See er.原创 2021-04-13 16:35:47 · 371 阅读 · 0 评论 -
MySQL执行SQL文件并把执行内容和输出内容写到文件中
mysql -vvv -e "source file" > output使用mysql -e执行语句时,可以加入-v, -vv, -vvv参数mysql 提供了-e参数用于直接在终端执行语句,并输出。-v显示语句本身-vv增加显示查询结果行数-vvv增加显示执行时间https://blog.csdn.net/fdipzone/article/details/78660204...原创 2021-03-29 16:42:50 · 2745 阅读 · 0 评论 -
mysql 使用order by field() 自定义排序
selectdr.host,dr.datafromdns_records drwheredr.type = "A"and dr.host in ()order byfield (host,) limit 100;原创 2021-03-19 12:03:46 · 426 阅读 · 0 评论