
MYSQL
文章平均质量分 55
MYSQL日常运维管理
老王笔记
JD
展开
-
MHA配置VIP
VIP飘移有两种方式,Keepalive 和MHA脚本,这里使用MHA自带脚本实现飘移。原创 2024-12-23 16:02:08 · 414 阅读 · 0 评论 -
MHA binlog server
GTID模式下切换的时候,默认是不会去Master上获取binlog,如果配置了Binlog Server,MHA机会去binlog-server上获取,下面创建一个binlog server,并验证binlog server能够在主库binlog被清理的情况下提供日志恢复.原创 2024-12-22 19:32:25 · 462 阅读 · 0 评论 -
GTID下复制问题和解决
数据库1主2从,mysql版本是v5.19表结构。原创 2024-12-20 17:26:42 · 977 阅读 · 0 评论 -
MySQL复制问题和解决
数据库1主2从,mysql版本是v5.19表结构。原创 2024-12-20 15:02:05 · 968 阅读 · 0 评论 -
GTID详解
3, mysql-bin.000004 的previous-gtid = 1-120, 如果N = 88 在 Previous-GTIDs 中,那么继续对比上一个binlog文件mysql-bin.000003,然后继续step2,直到找到为止。2, Previous_gtid_log_event: 用于表示当前binlog文件之前已经执行过的gtid集合,记录在Binlog文件头,如:4855c186-ba02-11ef-8bf4-000c297511da:1-23。3,主库将从库缺失的事务发送给从库。原创 2024-12-20 10:25:49 · 1415 阅读 · 0 评论 -
数据库索引失效场景
字段类型不一致或隐式转换: 当查询条件中的字段类型与索引列的类型不一致时,MySQL可能会进行隐式类型转换,从而导致索引失效。例如,如果索引列是VARCHAR类型,而查询条件中使用了整数类型进行比较,就会发生隐式转换。 查询中包含OR条件: 当查询语句中使用OR连接多个条件时,如果MySQL优化器认为使用索引的成本高于全表扫描,则可能会选择不使用索引。这通常发生在其中一个条件未使用索引或索引选择性较低的情况下。 LIKE通配符的错误使用: 在使用LIKE进行模式匹配时,如果通配符“%”出现原创 2024-12-11 11:50:46 · 222 阅读 · 0 评论 -
Xtrabackup备份过程
(5)innobackupex收到xtrabackup通知后哦,执行FLUSH TABLES WITH READ LOCK(FTWRL),取得一致性位点,然后开始备份非InnoDB文件(如frm、MYD、MYI、CSV、opt、par等格式的文件),在拷贝非InnoDB文件的过程当中,数据库处于全局只读状态。(4)xtrabackup拷贝完成ibd数据文件后,会通知innobackupex(通过创建文件),同时xtrabackup进入等待状态(redo线程依旧在拷贝redo.log)原创 2024-11-30 11:32:35 · 326 阅读 · 0 评论 -
MHA切换过程
MHA(Master High Availability)是一套用于MySQL数据库的高可用性解决方案,它能够在主服务器发生故障时自动将一个从服务器提升为新的主服务器,从而实现数据库服务的持续可用。原创 2024-12-05 12:02:08 · 293 阅读 · 0 评论 -
Innodb和MyISAM的使用场景
InnoDB的使用场景需要事务支持的应用:InnoDB支持事务处理(ACID),可以保证数据的一致性和完整性。例如,在金融系统中,转账操作需要确保原子性、一致性、隔离性和持久性,InnoDB能够满足这些需求。 高并发写操作的场景:InnoDB支持行级锁定(Row-Level Locking),允许多个用户同时对同一表进行写操作,提高并发性能。这在电子商务平台中,多个用户同时下单的场景下非常重要。 需要外键约束的场景:InnoDB支持外键约束,可以维护不同表之间的引用完整性。例如,在一个包含订单表和用原创 2024-12-05 11:41:10 · 318 阅读 · 0 评论 -
mysql登录脚本
可以避免每次都要手动输入登录账号和密码.原创 2024-12-04 18:34:13 · 90 阅读 · 0 评论 -
MySQL两阶段提交目的
MySQL的两阶段提交(Two-Phase Commit, 2PC)主要目的是为了确保在分布式事务处理中数据的一致性和完整性。在MySQL中,两阶段提交机制用于协调存储引擎层的Redo Log和服务器层的Binlog之间的操作顺序,以防止在系统崩溃或异常情况下出现数据不一致的情况。原创 2024-12-04 15:10:59 · 362 阅读 · 0 评论 -
MySQL MVCC 介绍
MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。MVCC通过在每个数据行上维护多个版本的数据来实现。当一个事务要对数据库中的数据进行修改时,MVCC不会直接覆盖原始数据,而是创建一个新版本的数据,并将原始数据保留下来,以便其他事务可以继续读取旧版本的数据。原创 2024-12-03 17:38:19 · 807 阅读 · 0 评论 -
mysql一个事务最少几次IO操作
例如,如果数据不在Buffer Pool中,那么在事务开始时,可能需要从磁盘加载数据页到Buffer Pool,这会增加IO操作的次数。此外,如果事务涉及的数据页在Buffer Pool中被修改,那么在事务提交后,这些脏页需要被异步刷写到磁盘上,这也会增加IO操作的次数。在最理想的情况下,即所有数据都在内存中,并且没有其他并发事务的情况下,一个事务最少可能只需要三次IO操作:一次是将Redo Log从缓冲区刷写到磁盘,一次是Undo Log书盘,第三次是将Binlog从缓冲区刷写到磁盘。原创 2024-12-02 16:18:53 · 408 阅读 · 0 评论 -
MySQL如何区分幻读和不可重复读
在MySQL中,幻读和不可重复读都是并发事务中可能出现的问题,但它们的表现和原因略有不同。原创 2024-12-02 10:29:04 · 518 阅读 · 0 评论 -
MySQL中如何减少回表
在MySQL中,回表是指在使用非聚集索引进行查询时,如果需要获取的数据不在索引页中,就需要根据索引页中的指针返回到数据表中查找实际数据行的过程。这个过程会增加额外的磁盘I/O操作,降低查询性能,特别是在查询大量数据时,回表查询的开销会显著增加。为了减少回表,可以采取以下策略。原创 2024-11-30 17:10:28 · 527 阅读 · 0 评论 -
MySQL Inception工具
MySQL Inception是一个强大的数据库变更管理和审计工具,主要用于审核、执行、备份以及回滚数据库操作。它的工作模式和MySQL完全相同,可以直接使用MySQL客户端来连接,但不需要验证权限。Inception相对于应用程序(上层审核流程系统等)而言,是一个服务器,在连接时需要指定服务器地址及Inception服务器的端口即可。原创 2024-11-30 14:49:11 · 376 阅读 · 0 评论 -
半同步复制
MySQL半同步复制(Semisynchronous replication)是一种介于异步复制和全同步复制之间的复制方式,旨在提高数据安全性,减少数据丢失的风险。在半同步复制中,主库在执行完客户端提交的事务后,不会立即返回给客户端,而是等待至少一个从库接收并将事务写入中继日志(relay log)后,主库才会返回给客户端。这样,即使主库发生故障,至少有一个从库已经接收到了事务,从而减少了数据丢失的风险。原创 2024-11-29 16:18:53 · 348 阅读 · 0 评论 -
redo log 如何确保事务持久性的
预写日志(Write-Ahead Logging, WAL):顺序写入:事务提交时的刷盘:后台线程的刷盘:redo log的循环使用:崩溃恢复:原创 2024-11-28 11:41:43 · 386 阅读 · 0 评论 -
数据库日志
MySQL中有哪些日志。原创 2024-11-28 11:40:21 · 550 阅读 · 0 评论 -
DBA面试题-1
索引(Index)是一种用于提高数据库查询效率的数据结构。它类似于书籍的目录,能够帮助快速定位并检索表中的数据行。通过索引,数据库系统可以不必扫描整个表来查找所需的数据,而是直接访问索引结构,从而显著提高查询速度。介绍索引下推(Index condition pushdown) 简称 ICP,主要用于提升使用索引的查询效率。在MySQL中,查询优化器会决定使用哪些索引来加速查询。原创 2024-11-28 10:07:58 · 1679 阅读 · 0 评论 -
JDBC连接数据库
JDBC:用Java代码操作关系数据库的API全称: Java DataBase Connectivity, Java数据库连接;JDBC本质:JDBC定义了操作所有关系型数据库的规则,即接口;各个厂商去实现这套接口,提供数据库驱动jar包;我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的视线类;优点:研发就可以在不改变代码的情况下,使用JDBC操作不同的关系型数据库(Mysql/Oracle/DB2等),原创 2024-09-12 09:24:39 · 898 阅读 · 0 评论 -
com.alibaba.druid.pool.DruidDataSource error
com.alibaba.druid.pool.DruidDataSource原创 2024-09-11 11:29:04 · 753 阅读 · 0 评论 -
--binlog-row-event-max-size
MySQL --binlog-row-event-max-size原创 2023-08-07 21:05:19 · 595 阅读 · 0 评论 -
数据库阻塞排查
数据库排查原创 2023-06-08 14:19:50 · 279 阅读 · 0 评论 -
golang操作mysql
GOLang操作mysql执行DDL原创 2023-04-07 11:13:42 · 273 阅读 · 0 评论 -
GOLang mysqldump备份一个库
dump a db from mysql using GOLang原创 2023-04-08 10:41:48 · 707 阅读 · 0 评论 -
数据库自愈
介绍数据库自愈的一些手段,减少工作成本;原创 2023-01-17 10:39:04 · 609 阅读 · 0 评论 -
Shell多进程并发
Shell多进程; 数据库并发备份;原创 2022-08-10 14:16:20 · 523 阅读 · 0 评论 -
Python多线程并发
Python 并发执行for循环原创 2022-04-21 16:38:47 · 2577 阅读 · 0 评论 -
BINLOG清理
由于expire_logs_days最短1天,对于某些流水日志类的,不需要留存久的,可以crontab中添加定时清理任务;#!/bin/bashsource /root/.bash_profilets=$(date -d '50 minute ago' +'%Y-%m-%d %H:%M:%S')mysql -e "purge binary logs before '$ts'"...原创 2021-09-24 20:02:41 · 155 阅读 · 0 评论 -
Innodb压缩
压缩目的:在IO密集型应用场景下,CPU比较空闲,对数据进行压缩来节约存储资源的一种方式;什么样的数据适合压缩:字符串适合压缩,图片,二进制,视频等不适合压缩;操作步骤:1, 确保版本高于v5.1;2,innodb_file_per_table =13,innodb_file_format =Barracuda4, 建表的时候加入row_format=compressed key_block_size=8;5, 如果对历史归档表压缩,ALTER TABLE tb...原创 2021-09-23 10:28:15 · 509 阅读 · 0 评论 -
mysql 过滤复制
今天业务需要,要设置表过滤复制;数据库为5.6版本,所以要更新my.cnf并重启;但是设置后服务却无法拉起;最终发现,设replicate-do-table = security_data.coupon_usereplicate-do-table = security_data.coupon_grantreplicate-do-table = security_data.coupon_now置参数必须为db.table格式才可以......原创 2021-06-03 16:17:43 · 381 阅读 · 0 评论 -
MySQL 5.7 InnoDB Online DDL
MySQL 5.7 Innodb 允许in-place就地操作,操作时可以同步执行DML,尽可能减少对业务的影响;这极大提高了繁忙生产环境的可用性;而在版本5.6的时候,许多操作基本都需要COPY表 或者 阻塞表;DDL的时候可以用LOCK选项来协调性能和并发性之间的关系;a, LOCK=EXCLUSIVE DDL同时拒绝其他所有操作b, LOCK=SHARE DDL同时允许查询,但不允许写入c, LOCK=NONE DDL同时,允许增删改查d, LOCK=DEFAULT 或者 省略原创 2021-01-16 16:57:44 · 255 阅读 · 0 评论 -
mysql慢日志都是COMMIT
马上双十一大促了,要统一过一遍所有数据库负载较高的机器,把慢查询处理一下;我们慢日志都是通过pt-query-digest 分析的;当查到某套业务DB的时候发现一个奇怪的情况,如下图显示,慢日志里面93%占比的相应时长是COMMIT导致的;DB默认是自动提交的,不存在"COMMIT"; 既然是commit,肯定是会话被关闭了自动提交;但是为什么没有记录对应的语句,而只记录了COMMIT;呢?原因可能是业务启用了大事务, 例如BEGIN开启事务后,里面执行了大量的INSERT语句,然.原创 2020-09-28 20:33:21 · 1640 阅读 · 0 评论 -
Errant GTID/Errant transaction
原因:没有规范地在主库执行SQL,而是在从库执行了SQL,导致Errant gtid found 或者errant transaction ;如果确认当前数据是一致的;1, master 上执行select @@global.gtid_executed, 查看master已执行的所有gtid;2, 从库执行如下sql,目的是重置从库的gtid_purged列表,使之等于master上的已执行列表; 这样就会从该GTID之后开始同步stop slave;reset master; 清...原创 2020-06-29 10:05:35 · 1320 阅读 · 1 评论 -
GTID生命周期
参考:https://www.cnblogs.com/leohahah/p/11533952.htmlGTID生命周期:1, 如果实例启用了GTID,当提交事物的时候,系统自动分配一个GITD, GTID = uuid:transaction_id uuid:每个实例都有一个唯一的uuid,查看方法: select uuid(); transaction_id: 通常为自增序列,第一个是1,往后递增;如:bb08f12d-b9c4-11e9-8916-fa162e...原创 2020-06-16 21:07:35 · 357 阅读 · 0 评论 -
mysql 异地克隆
本地克隆可以参考:https://blog.youkuaiyun.com/JSWANGCHANG/article/details/106555294异地克隆:异地克隆可以用于数据库需要新增一个从库的场景条件:1, 在远端实例需要拥有BACKUP_ADMIN权限,来传输数据;在本地需要有CLONE_ADMIN权限来替换数据,阻塞DDL,自动重启server操作;2, 本地和远端都需要有相同的版本,都要安装CLONE插件;远端要在本地的克隆白名单中clone_valid_donor_list...原创 2020-06-04 19:00:32 · 343 阅读 · 0 评论 -
mysql克隆功能--本地克隆
克隆功能分为本地克隆和远端克隆;克隆介绍及插件安装可以参考:https://blog.youkuaiyun.com/JSWANGCHANG/article/details/106545330本地克隆: 1, 用户需要有BACKUP_ADMIN的权限; 2, 需要安装克隆插件; 3, 计算好空间,别数据量太大导致磁盘满了的情况 命令:CLONE LOCAL DATA DIRECTORY [=] 'clone_dir'; clone_d...原创 2020-06-04 18:51:40 · 650 阅读 · 0 评论 -
mysql 8.0安装克隆插件
Step1: 确认本地插件目录下是否有克隆模块mysql> select @@plugin_dir;+-----------------------------------+| @@plugin_dir |+-----------------------------------+| /export/servers/mysql/lib/plugin/ |+-----------------------------------+1 row in原创 2020-06-04 14:13:08 · 680 阅读 · 0 评论 -
mysql 8安装
1, 打开官方网站,下载mysqlhttps://dev.mysql.com/downloads/mysql/公司内部SERVER,无法连外网,采用源码包(我之前下的是mysql-8.0.17-linux-glibc2.12-x86_64版本,就不重复下载了)下周后解压:tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz创建软连接:ln -s mysql-8.0.17-linux-glibc2.12-x86_64 mysql..原创 2020-05-31 23:07:48 · 312 阅读 · 0 评论