mysql
文章平均质量分 71
db_murphy
杨磊,墨天轮社区MVP,DBASK技术专家、OCMU联盟成员;某央企研发部,职位数据架构师;一直在数据库领域坚持耕耘近10年,多年从事数据架构设计,具有一线部署实施经验。精通关系型数据库:Oracle、MySQL;对开源数据库、国产数据库、NoSQL、NewSQL、大数据、云计算、云原生等新技术有持续关注和极大兴趣。
展开
-
知识篇 | MySQL常用存储引擎MyISAM、InnoDB和MEMORY之介绍
MySQl的存储引擎有哪9种,使用show engines;命令即可查看。今天介绍常用的三种常用存储引擎:MyISAM、InnoDB和MEMORY。一**、MyISAM**MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但NO事物。使用这个存储引擎,每个MyISAM在磁盘上存储成三个文件:(1)frm文件:存储表的定义数据(2)MYD文件:存放表具体记录的数据(3)MYI文件:存储索引frm原创 2021-10-29 08:39:55 · 1251 阅读 · 0 评论 -
知识点 | MySQL的三种常用存储引擎介绍
本文将介绍MySQL的几种存储引擎。1.InnoDB存储引擎InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性有:1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混原创 2021-10-26 18:45:04 · 2607 阅读 · 0 评论 -
知识点 | MyDUMP逻辑备份下之FTWRL全局锁咋个办?
全局锁 Flush tables with read lock 被简称为 FTWRL。全局锁也可以理解为数据库级别的锁,这把锁会加给整个数据库。FTWRL(flush tables with read lock)命令主要被备份工具使用,使用逻辑方式进行备份(mydumper,mysqldump)或物理方式进行备份(percona-xtrabackup),为了保证数据的一致性,这两种备份方式都会在备份过程中执行 flush table with read lock 这个命令,通过执行FT原创 2021-10-12 11:05:03 · 619 阅读 · 0 评论 -
知识点 | mysqldumpslow解读slow.log日志
slow.log信息解读及其mysqldumpslow分析简单介绍1)slow.log信息解读#Time: 070927 16:08:52#User@Host: root[root] @ [192.168.1.110]#Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630select id, name from manager where id in (66,10135);Query_time == 用的原创 2021-09-24 16:50:57 · 433 阅读 · 0 评论 -
问题排查 | bash: $’\r’: command not found报错处理
问题描述在Windows下编写好sh文件后,在Linux下运行会报错:bash: $’\r’: command not found问题解决这是因为Windows系统的文件换行使用的是\r\n,而Unix系统是\n有两种解决方法:方式一安装dos2unix来进行文件转换[root@mysqlSlave ~]# yum install -y dos2unix[root@mysqlSlave ~]# dos2unix your_file.sh方式二使用vim打开文件,然后使用命令:set原创 2021-09-23 18:48:47 · 1117 阅读 · 1 评论 -
知识分享 | mysql服务器启动后,为啥有mysqld_safe和mysqld 2个进程?
在mysql服务器启动后,有2个进程mysqld_safe和mysqld,这是为啥?如下:[root@ethanyang bin]# ps -ef | grep mysqldroot 6488 3324 0 Sep03 pts/0 00:00:00 /bin/sh /mysqlsoft/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysqlmysql 7327 6488 0 Sep03 pt原创 2021-09-04 00:43:49 · 4429 阅读 · 0 评论 -
官方文档 | MySQL InnoDB静止数据加密
InnoDB Data-at-Rest EncryptionInnoDB supports data-at-rest encryption for file-per-table tablespaces, general tablespaces, the mysql system tablespace, redo logs, and undo logs.As of MySQL 8.0.16, setting an encryption default for schemas and general tab原创 2021-08-11 18:01:57 · 888 阅读 · 0 评论 -
神器篇 | MySQL 的几种调式分析工具介绍
MySQL 的几种调式分析工具,常用的有如下4种:pstackgdbstraceperf如下分别介绍之。pstack获取堆栈信息问题线程的定位负载较低mysql_pid=23632pstack $mysql_pid>pstack.infopt-pmp对堆栈信息排序pt-pmp pstack.info | less也可以直接执行pt-pmppt-pmp --pid 4522gdb堆栈跟踪等待分析侵入性大mysqld_pid=23632gdb -p $原创 2021-08-04 09:01:47 · 473 阅读 · 0 评论 -
分享篇 | MySQL的ibdata1是个啥,为啥越来越大,怎么缩小?
ibdata1文件是什么?ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffer和双写buffer。随着数据库的使用,ibdata1文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,默认是8M.熟悉Oracle的亲,可以把ibdata理解成redo日志。my.cnf中的参数设置形式:innodb_data_file_path = ibdata1:256M;ibdata2:原创 2021-08-03 19:23:58 · 14580 阅读 · 1 评论 -
知识点 | MySQL分区到底能不能用?
Point: 理解的最好形式是有效发问?要理解MySQL分区到底能不能用,就需要知道为何会有分区这个东东。为什么需要分区?TP类事务中,业务对巨大数据表全表扫描的时间变得无法容忍。这时候你会想起要建索引,但依赖索引,会导致大量的碎片和低聚集度的数据,会导致查询的时候有上千次的随机 I/O 访问而致查询响应时间无法接受。这种情况下一般只会使用1-2个索引,而不会更多。可以说此时索引意义不大,且维护索引(磁盘空间,I/O 操作)的代价同样很高。索引本质是拿空间来换取时间的一种方式,但这种方式并非一直有原创 2021-08-02 11:29:00 · 727 阅读 · 0 评论 -
知识点 | SQL标准协议有哪些?
简介:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名,包括了增删改查,安全性完整性定义控制等一系列功能。SQL语言分为五类DDL:Data Definition Language,数据定义语言,包括了:create,drop,alter,truncate(这是删除并新建表,可消除自增的历史最大值);DML:Data Manipul原创 2021-07-26 14:50:39 · 1977 阅读 · 0 评论 -
知识点 | MySQL的运维神器之 Percona Toolkit 介绍
MySQL数据库是轻量级、开源数据库的佼佼者,其功能和管理,健壮性与Oracle相比还是有相当的差距。因此有很多功能强大第三方的衍生产品,如percona-toolkit,XtraBackup等等。Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的一组高级命令行工具的集合。可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等。这个工具套件对MySQL DBA确实很香甜。功能包括检查主从复制的数据一致性、检查重复索引、定原创 2021-06-24 16:42:25 · 1129 阅读 · 0 评论 -
知识点 | MySQL InnoDB Cluster 的几点建议
MySQL InnoDB Cluster官方手册的架构图示该架构中包含:MySQL router, MySQL Servers, MySQL Shell。1. MySQL router: 属于一个TCP模型的Proxy主要用于流量中转及基于端口号的读写分离。在3306π社区广州站听官方人员透漏基于shared方式的router也快要出来了,敬请期待。2. MySQL Servers: 该部分即为MySQL Group Replication即MGR,这个MGR属于Single primary模式。原创 2021-06-22 14:38:14 · 317 阅读 · 0 评论 -
生产排查 | MySQL主从同步时报错1864之slave_pending_jobs_size_max设置生产排查
大家都知道,MySQL 的各参数很多,设置不恰当,会引起各种异常;本文根据一则实际生产异常场景,即从库的同步异常报错Last_Errno: 1864,来介绍slave_pending_jobs_size_max参数的调整。问题现象描述生产环境上从库出现SQL进程停止的异常,错误信息如下:mysql> show slave status \G;原创 2021-06-10 23:42:24 · 650 阅读 · 0 评论 -
知识点 | 为何从8.0开始取消了MySQL查询缓存Query Cache?!
本文转载自MySQL原厂徐工的一篇文章,原文链接如下:https://mp.weixin.qq.com/s/_EXXmciNdgXswSVzKyO4xg转文如下:MySQL之前有一个查询缓存Query Cache,从8.0开始,不再使用这个查询缓存,那么放弃它的原因是什么呢?本文介绍之。MySQL查询缓存是查询结果缓存。它将以SEL开头的查询与哈希表进行比较,如果匹配,则返回上一次查询的结果。进行匹配时,查询必须逐字节匹配,例如 SELECT * FROM t1; 不等于select * from原创 2021-05-29 23:16:41 · 2604 阅读 · 0 评论 -
知识点 | 再谈数据库事务的四种隔离级别
关于隔离性,之前写过几篇文章,链接如下:专题_今天来聊一聊数据库事务的四种隔离性_Oracle和MySQL各自的默认隔离级别及原因分析大家都知道,对数据的并发访问特性,是数据库的一大特性/买点。但并发访问统一数据资源时,会带来一些问题,如下:并发访问数据时可能遇到的问题:1)脏读:B事务读取到了A事务尚未提交的数据;2)不可重复读:B事务读到了A事务已经提交的数据,即B事务在A事务提交之前和提交之后读取到的数据内容不一致(AB事务操作的是同一条数据);3)幻读/虚读:B事务读到了A事务已经提原创 2021-05-11 15:02:28 · 101 阅读 · 0 评论 -
知识分享 | MySQL InnoDB 日志缓冲区(Log Buffer)讲解
InnoDB有两个非常重要的日志:undo log、redo log(1)通过undo log可以看到数据较早版本,实现MVCC,或回滚事务等功能。(2)通过redo log用来保证事务持久性。Mini-Transaction是用来实现InnoDB的物理逻辑日志的写入和页恢复的。通过Mini-Transaction来保证并发事务操作和数据库异常时页的一致性。Mini-Transaction主要用于innodb redo log和undo log写入,保证两种日志的ACID特性。(注意:是日志的AC原创 2021-05-09 13:49:42 · 2866 阅读 · 0 评论 -
知识分享 | MySQL innodb存储引擎中的事务是如何通过日志来实现
**问题:**MySQL innodb存储引擎中的事务是如何通过日志来实现的?基本流程如下:因为事务在修改页时,要先记undo(数据被修改前的前镜像),在记undo之前要记undo的redo;原因:undo的中保存数据被修改前的前镜像数据这一行为,也会涉及undo保存前镜像数据而导致的修改页的操作,故会有redo数据的产生;这和Oracle的redo机制一致:只要发生数据块的改变,redo日志就会记录;MySQL对应的是数据页,Oracle对应的是数据块(默认8k);然后修改数据页,再记数据页修改原创 2021-05-08 23:35:29 · 162 阅读 · 0 评论 -
理论学习 | MySQL 8.0.18 +的hash join学习
在MySQL 8.0.18之前,表的join方式只有嵌套循环(nested loop)这一种方式;8.0.18推出了hash join的方式以替代嵌套循环。hash join的原理概括为:选择占用空间较小的表t1(不一定是行数)作为驱动表,计算其join字段的hash值,在内存中build一个hash table,将t1的join字段的hash值存放至hash table。然后对被驱动表t2的join字段计算hash值,并与内存中的hash table进行查找匹配。使hash join方式生效的前提原创 2021-05-08 12:55:46 · 335 阅读 · 0 评论 -
知识点 | Mysql InnoDB Cluster 工作原理和流程
MySQL InnoDB集群提供了一个集成的,本地的,HA解决方案。Mysq Innodb Cluster是利用组复制的 pxos 协议,保障数据一致性,组复制支持单主模式和多主模式。MySQL InnoDB集群由以下几部分组成:- MySQL Servers with Group Replication:向集群的所有成员复制数据,同时提供容错、自动故障转移和弹性。- MySQL Router:确保客户端请求是负载平衡的,并在任何数据库故障时路由到正确的原创 2021-04-29 20:28:45 · 808 阅读 · 0 评论 -
知识分享 | Oracle的官方ACE是个啥 and如何搞定一个ACE!
You can through the https://apex.oracle.com/pls/apex/f?p=19297:3 search “MySQL” keyword, you can see the MySQL domain ACE for detailed information.China currently has 24 players in all three levels(ACEa,ACE,ACED).What is the Oracle ACE Program?The Orac原创 2021-04-26 11:30:34 · 2376 阅读 · 0 评论 -
知识点 | 数据仓库中的 ods ,dw,dm分别是个啥?
先看一下数据中心的整体架构以及数据流向:DB 是现有的数据来源,可以为mysql、SQLserver、Oracle、Mongodb、PostgreSQL、文件日志等,为数据仓库提供数据来源的一般存在于现有的业务系统之中。ETL的是 Extract-Transform-Load 的缩写,用来描述将数据从来源迁移到目标的几个过程:Extract,数据抽取:把数据从数据源读出来。Transform,数据转换:把原始数据转换成期望的格式和维度。如果用在数据仓库的场景下,Transform也包含数据清洗原创 2021-04-07 14:46:34 · 2159 阅读 · 0 评论 -
知识点 | MySQL常用的几条管控语句
Mysql数据库大小查看select table_schema,round(sum(data_length+index_length)/1024/1024/1024,4) from information_schema.tables group by table_schema;2.查看正在执行的sqlSELECT * FROM information_schema.PROCESSLIST WHERE info IS NOT NULL;3.查看innodb内核中的当前活跃(ACTIVE)事务s.原创 2021-03-02 10:32:46 · 107 阅读 · 0 评论 -
InnoDB在什么情况下会触发检查点(checkpoint)?
以下文章内容摘选自如下链接:https://www.modb.pro/db/12071InnoDB在什么情况下会触发检查点(checkpoint)?(一)MySQL的checkpoint分类1、sharp checkpoint(激烈检查点,要求尽快将所有脏页都刷到磁盘上,对I/O资源的占有优先级高)2、fuzzy checkpoint(模糊检查点,会根据系统负载及脏页数量适当平衡,不要求立即将所有脏页写入磁盘,这事默认的方式)(二)触发时机1、数据库正常关闭时,即innodb_fast_shu原创 2021-02-24 09:33:17 · 392 阅读 · 0 评论 -
MySQL 8.0 | 用户可自定义表空间
MySQL 8.0开始,用户可自定义表空间,语法如下:参见官方链接:https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.htmlCREATE [UNDO] TABLESPACE tablespace_name InnoDB and NDB: [ADD DATAFILE 'file_name'] [AUTOEXTEND_SIZE [=] value] InnoDB only: [FILE_BLOCK_SI原创 2021-02-23 16:27:20 · 407 阅读 · 0 评论 -
知识篇 | MySQL InnoDB存储架构图解
InnoDB存储结构主要包括两部分:逻辑存储结构和物理存储结构。逻辑上是由表空间tablespace —> 段segment或者inode —> 区Extent ——>数据页Page构成,Innodb逻辑管理单位是segment,空间分配的最小单位是extent,每个segment都会从表空间FREE_PAGE中分配32个page,当这32个page不够用时,会按照以下原则进行扩展:如果当前小于1个extent,则扩展到1个extent;当表空间小于32MB时,每次扩展一个exten原创 2021-02-23 10:23:20 · 251 阅读 · 1 评论 -
知识点 | MySQL的IOT表和HEAP表有什么区别?
啥是IOT表?Index Organized table by itself is a B-tree index. Index key is the primary key and the rest of columns are index values.The rows are stored in the primary key order. IOT provides fast access to a specific row by primary ke or the prefix of primary原创 2021-02-17 23:47:08 · 345 阅读 · 0 评论 -
Concept | Full Vs Incremental Vs Differential Backup
The web link to the article is as follows:https://phoenixnap.com/kb/full-vs-incremental-vs-differential-backupIntroductionWhen setting up a backup plan, you need to take into consideration the resources available, as well as the amount of data you need原创 2021-02-07 16:18:56 · 196 阅读 · 0 评论 -
知识点 | MySQL的redolog和binlog到底有啥子区别???
大家知道:MySQL中有三种日志文件,redo log、bin log、undo log。redo log 是 存储引擎层(innodb)生成的日志,主要为了保证数据的可靠性;bin log 是 MySQL server层面上生成的日志,主要用于 point in time 恢复和主从复制。undo log 主要用于事务的回滚(undo log 记录的是每个修改操作的逆操作) 和 一致性非锁定读(undo log 回滚行记录到某种特定的版本—MVCC 多版本并发控制)。可以看到,MySQL中的redo原创 2021-02-02 16:28:38 · 887 阅读 · 0 评论 -
mariadb登陆异常_ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘XXX‘ (111)
【现象】近期,同事来找帮忙,说一MySQL数据库账号不能登陆了,看了下报错如下:[root@localhost ~]# mysql -uuser_name -pXXXXXXXXX -h192.168.0.111 -P3306ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.0.111’ (111)经查看:root本地账号是可以登录的,如下:[root@localhost ~]# /opt/lampp/bin/mysql -u原创 2021-01-26 12:33:12 · 1302 阅读 · 0 评论 -
一步步详细认知哈希表是个嘛?
【引言】MySQL 的默认索引结构是 B+ 树,也可以指定索引结构为 HASH 或者 R 树等其他结构来适应不同的检索需求。这里我们来介绍 MySQL 哈希索引。MySQL 哈希索引又基于哈希表(散列表)来实现,所以了解什么是哈希表对 MySQL 哈希索引的理解至关重要。本文来一步一部介绍哈希表。本文转载自爱可生社区,文章链接如下:https://mp.weixin.qq.com/s/-mAv_BpV1kuAFWovWIjxww数组数组是最常用的数据结构,是一种线性表的顺序存储方式,由下标(原创 2020-12-24 15:55:43 · 115 阅读 · 0 评论 -
MySQL生产级全备+增备备份脚本_Xtrabackup.sh
【引言】之前推过一篇采用percona的xtrabackup 进行数据备份和恢复的推文,链接如下:《MySQL备份神器:如何采用percona的xtrabackup 进行数据备份和恢复》今天再来推一篇生产环境中使用percona的xtrabackup 对MySQL进行全量+增量备份的脚本。脚本内容如下:Xtrabackup.sh################################################1. 该备份脚本需要加入到cron中,每天自动执行该脚本#2. 以周为原创 2020-12-23 11:20:40 · 995 阅读 · 1 评论 -
MySQL备份神器:如何采用percona的xtrabackup 进行数据备份和恢复
摘要:如何使用percona提供的xtrabackup 工具来做数据备份和恢复。Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup有两个主要的工具:xtrabackup、innobackupex。innobackupex是参考了InnoDBHotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是原创 2020-11-19 08:42:47 · 255 阅读 · 0 评论 -
SQL在执行的时候却不走索引的几个原因
当一张表上有索引,那么sql在执行的时候却不走索引的原因:隐式转换索引列上使用了函数索引列选择度太差条件列使用了is null或者is not null条件列使用模糊查询并且前面带%条件列使用了<>或者!=表的统计信息与实际值相差很多索引不满足当前的业务场景索引列分布不均匀,且该列上存在直方图查询条件没有使用索引的前导列对索引列进行了运算等值和范围索引不会被合并使用索引相关的参数设置索引的clustering factor值太大...原创 2020-11-18 13:58:51 · 1464 阅读 · 0 评论 -
如何在UNIX环境中运行MySQL多实例?!
Theme:How to Running Multiple MySQL Instances on UnixNoteThe discussion here uses mysqld_safe to launch multiple instances of MySQL. For MySQL installation using an RPM distribution, server startup and shutdown is managed by systemd on several Linux plat原创 2020-11-09 14:54:22 · 168 阅读 · 0 评论 -
如何采用percona的xtrabackup 进行数据备份和恢复?!
摘要:如何使用percona提供的xtrabackup 工具来做数据备份和恢复。Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup有两个主要的工具:xtrabackup、innobackupex。innobackupex是参考了InnoDBHotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主原创 2020-10-10 11:41:41 · 674 阅读 · 0 评论 -
聊一聊数据库事务的四种隔离性及Oracle和MySQL各自的默认隔离级别及原因分析
【引言】大家都知道数据库事务四特性:原子性、一致性、隔离性和持久性,也就是人们熟知的 ACID 特性。在实际生产应用中,数据库中的数据是要被多用户共享/访问,而在多个用户同时操作相同数据时,可能会出现一些事务的并发问题,这就就有了事务隔离性的四种不同级别。今天,本文将围绕事务的特性、并发问题、隔离级别进行集中学习。之前的一篇相关推文介绍过MySQL的三种锁:《浅谈MySQL三种锁:全局锁、表锁和行锁》点击查看首先回顾下事物的概念:一个事务中的一系列的处理操作操作要么全部成功,要么一个都不做。在数原创 2020-09-05 00:05:21 · 2795 阅读 · 1 评论 -
MySQL 5.6和 5.7下 修改同步账号密码:不一样
【引言】大家都知道,MySQL配置了同步,通用账号密码在master做了修改,slave会自动同步过来。但有一个账号除外,那就是同步账号。是不是第一感觉不太对?为啥主从配置下的其他账号密码的修改都能同步,即使是root@local这样的本地账号都能同步至从库,同步账号就不行?大家都知道,MySQL账号信息是保存在数据字典mysql.user中,按照道理来说,mysql.user内容的修改是会同步至从库。先看一段在配置同步过程中change master的一段官方...原创 2020-08-19 16:44:24 · 1164 阅读 · 0 评论 -
My Introduction for Oracle ACE
CurrentlyLei Yanghas beenworking as a Data ArchitectatAirChina in China for 10 years, having more than9years of experience as a DBA on the full Oracle stack (Clusterware, DataGuard, RAC, ASM, EM, GC), andhaving MySQL-related working experiencefor ...原创 2020-06-28 09:44:47 · 196 阅读 · 0 评论 -
生产环境下_MySQL企业版5.7.30如何进行单实例部署
文档说明:本文将详细描述MySQL企业版5.7.30的二进制TAR包安装步骤;此文档对生产环境的单库部署有借鉴意义;MySQL8.0版本安装步骤,等同于此步骤。测试服务器IP为:192.168.0.42操作系统:[root@MySQL-test03 MySQL]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 7.3 (Maipo)MySQL服务器安装版本5.7.30-enterp..原创 2020-06-23 15:18:55 · 414 阅读 · 0 评论