mysql
yimenglin
这个作者很懒,什么都没留下…
展开
-
mysql优化案例分析
本文总结了一些工作常见的sql优化例子,虽然比较简单,但很实用,希望对大家有所帮助。sql优化一般分为两类,一类是sql本身的优化,如何走到合适的索引,如何减少排序,减少逻辑读;另一类是sql本身没有优化余地,需要结合业务场景进行优化。即在满足业务需求的情况下对sql进行改造,已提高sql执行速度,减少响应时间。例子1:SELECT ID FROM SENDLOG WHERE TO_DAYS(NOW())-TO_DAYS(GMT_CREATE) >...转载 2020-08-10 14:48:25 · 362 阅读 · 0 评论 -
mysql执行计划
烂sql不仅直接影响sql的响应时间,更影响db的性能,导致其它正常的sql响应时间变长。如何写好sql,学会看执行计划至关重要。下面我简单讲讲mysql的执行计划,只列出了一些常见的情况,希望对大家有所帮助。测试表结构:CREATE TABLE `t1` ( `c1` int(11) NOT NULL DEFAULT '0', `c2` varchar(128) DEFAULT NULL, `c3` varc...转载 2020-08-10 14:37:39 · 124 阅读 · 0 评论 -
教你手工mysql拆库
互联网网站应用大多采用mysql作为DB存储,限于mysql单机性能的瓶颈,为了支撑更大容量和更大的访问量,dba一般通过建立分布式集群,让多个mysql共同提供服务。所谓的mysql分布式集群,实质就是将原有的数据拆成多份,放在多个mysql数据库上存储,应用通过中间层路由到对应的数据库分片,访问所需要数据,基本架构如图1所示。这里的关键点就是“拆”,如何拆库,根据业务场景,一般可以采取水平拆分和垂直拆分。所谓水平拆分是指,将一个大表按一定的规则分片,分...转载 2020-08-10 14:21:30 · 430 阅读 · 0 评论 -
mysqldump备份时出现when using LOCK TABLES
mysqldump备份时出现when using LOCK TABLESmysqldump: Got error: 23: Out of resources when opening file '.\discuz\ecs_user_address.MYD' (Errcode: 24) when using LOCK TABLES解决办法,加上-skip-lock-tables选项即可。例:mysql...转载 2020-08-04 09:08:19 · 1386 阅读 · 0 评论 -
如何提高mysql插入数据的速度
提高mysql插入数据的速度在myisam engine下:尽量使用insert into table_name values (…), (…),(…)这样的形式插入数据,避免使用inset into table_name values (); inset into table_name values (); inset into table_name values ();增加bulk_insert_buffer_size(默认8M)如果是非空表,使用alter table table_na...转载 2020-07-31 09:19:25 · 805 阅读 · 0 评论 -
InnoDB Monitor(innodb监视器)
1. InnoDB Monitor 类型有四类InnoDB monitor:Standard Monitor、Lock Monitor、Tablespace Monitor、Table Monitor。其中Tablespace Monitor和Table Monitor将在后续版本(MySQL5.7中移除,对应的信息可从information_schema的表中获取)Standard Monitor:监视活动事务持...转载 2020-07-29 15:49:48 · 776 阅读 · 1 评论 -
mysql的undo log和redo log
在数据库系统中,既有存放数据的文件,也有存放日志的文件。日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件。 MySQL中的日志文件,有这么两类常常讨论到:undo日志与redo日志。1 undo1.1 undo是什么undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name='B' 修改为Name = 'B2' ,那么undo日志就会用来存放Name='B'的记录,如...转载 2020-07-24 15:23:14 · 427 阅读 · 0 评论 -
MySQL日志系统:redo log、binlog、undo log 区别与作用
日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。图来自极客时间的mysql实践,该图是描述的是M...转载 2020-07-24 15:11:54 · 211 阅读 · 0 评论 -
优化MySQL的21个建议
今天一个朋友向我咨询怎么去优化 MySQL,我按着思维整理了一下,大概粗的可以分为21个方向。 还有一些细节东西(table cache, 表设计,索引设计,程序端缓存之类的)先不列了,对一个系统,初期能把下面做完也是一个不错的系统。 1. 要确保有足够的内存 数据库能够高效的运行,最关建的因素需要内存足更大了,能缓存住数据,更新也可以在内存先完成。但不同的业务对内存需要强度不一样,一推荐内存要占到数据的15-25%的比例,特别的热的数据,...转载 2020-07-24 14:53:41 · 129 阅读 · 0 评论 -
MySQL Binlog 技术原理和业务应用案例分析
写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下!GitHub地址:abel-max/Java-Study-Note导语MySQL Binlog 用于记录用户对数据库操作的结构化查询语言 (Structured Query Language,SQL) 语句信息。是 MySQL 数据库的二进制日志,可以使用 mysqlbin 命令查看二进制日志的内容。爱奇艺在会员订单系统使用到了 MySQL Binlog,用来实现订单转载 2020-07-24 14:12:06 · 307 阅读 · 0 评论 -
MySQL 数据库之Binlog日志使用总结
binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了。下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理:一、binlog日志介绍1. 什么是binlogbinlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。2. binlog作用因为有了数据更新的binlog,所以可以用于实时备份,与master/slave主从复制结合。3. b...转载 2020-07-24 11:12:53 · 452 阅读 · 0 评论 -
mysql5.7性能提升一百倍调优宝典(赠给有缘人)
前言:全文中一共有常用的(事实上你如果花1-2周阅读、理解、自己动手设一下后是需要这么多参数的)76个参数,笔者把近10年里3个亿万级项目的数据库调优用此篇浓缩到了可能读者只需要2周时间就可以掌握,同时我是按照:每一个参数干吗?在某些典型硬件配置下的db上参数该设多少?设会怎么样?不设会怎么样?有什么坑如何填坑?有些参数怎么算、算法又如何这种style来写的,相信此篇会对一些使用mysql的尤其是正在或者将要面临万级并发的项目、网站有所帮助。具体请看文档!一千个DBA就有一千种配置方式!大家一定转载 2020-07-24 10:39:20 · 435 阅读 · 0 评论 -
从MYSQL的ibtmp1文件太大说起
1. 啥情况呀测试环境机器磁盘空间不足的告警打破了下午的沉寂,一群人开始忙活着删数据。但是,不久前刚清理了一波数据,测试环境在没做压测的情况下不至于短短一个月不到就涨了200G数据,于是,我悄悄的进入数据目录下,发现一个不寻常的点,ibtmp1文件有192G ll -h ibtmp1 -rw-r----- 1 mysql mysql 192G Aug 12 16:20 ibtmp12. 怎么处理2.1 简单说明ibtmp1是非压缩的...转载 2020-07-24 09:00:28 · 427 阅读 · 0 评论 -
MySQL的ibdata1文件占用过大瘦身
处理MySQL的ibdata1文件过大问题本人在对数据库进行大量的数据插入和删除的时候,发现ibdata1的占了将近一个Tibdata1文件是什么?ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。如果file-per-table选项打开的话,该文件则不一定包含所有表的数据。当innodb_file_per_table选...转载 2020-07-24 08:57:54 · 656 阅读 · 0 评论 -
Mysql 参数 innodb_buffer_pool_size
以下考虑主要为 Innodb 引擎, key_buffer_size 不考虑。对于实例级别或线程级别参数设置,暂不考虑。【 innodb_buffer_pool_size 】 用于缓存 索引 和 数据的内存大小, 这个当然是越多越好, 数据读写在内存中非常快, 减少了对磁盘的读写。 当数据提交或满足检查点条件后才一次性将内存数据刷新到磁盘中。然而内存还有操作系统或数据库其他进程使用, 一般设置 buffer ...转载 2020-07-23 19:23:00 · 440 阅读 · 0 评论 -
Mysql IO 内存方面的优化
这里使用的是mysql Ver 14.14 Distrib 5.6.19, for Linux (i686) using EditLine wrapper一、mysql目录文件ibdata1:系统表空间 包含数据字典、回滚日志/undolog等(insert buffer segment/double write segment/rollback segment/index segment/dictionary segment/undo segment)ib_logfile0/...转载 2020-07-23 19:21:22 · 264 阅读 · 0 评论 -
pt-table-checksum安装使用
pt –table -checksumpercona-toolkit系列工具中的一个用途: 可以用来检测主、 从数据库中数据的一致性。原理: 在主库上运行, 对同步的表进行checksum, 记录下来。 然后对比主从中各个表的checksum是否一致, 从而判断数据是否一致。pt-table-sync用途:用来修复多个实例之间数据的不一致,它可以让...转载 2020-07-23 08:52:24 · 717 阅读 · 1 评论 -
mysql如何从全备文件中恢复单个库或者单个表
mysql如何从全备文件中恢复单个库或者单个表 在mysql dba的日常实际工作中,一个实例下有多个库,而我们常见的备份就是全库备份。那么问题就来了,如果需要恢复单个库或者单个表,怎么办了,网上有很多人都有多种方法,今天,我自己结合众多资料,将实践记录下来,以便供参考。基本情况介绍:mysql版本:mysql-5.5.36.tar.gz操作系统:CentOS release 6.8 x64 (Final)一、全库备份[root@pre ~]# cat backup.sh ...转载 2020-07-20 14:16:26 · 777 阅读 · 0 评论 -
MySQL只恢复某个库或某张表
在Mysqldump官方工具中,如何只恢复某个库呢?全库备份[root@HE1 ~]#mysqldump -uroot -p --single-transaction -A --master-data=2 >dump.sql只还原erp库的内容[root@HE1 ~]# mysql-uroot -pMANAGER erp --one-database <dump.sql可以看出这里主要用到的参数是...转载 2020-07-20 14:04:57 · 3640 阅读 · 0 评论 -
MySQL管理工具MySQL Utilities — MySQL Utilities结构详解
管理和维护MySQL数据库有时会复杂化,有时任务需要繁琐甚至重复操作,鉴于这些因素,MySQL Utilities扩展是为了帮助初学者和经验丰富的数据库管理员执行常见任务。MySQL Utilities内部MySQL Utilities被设计成易于使用Python脚本,可以组合来提供更强大的功能。在内部,脚本使用mysql.utilities模块库来执行各项任务。由于该库是通用的函数,数据库管理员很容易创建自己的脚本来执行常见任务。这些工具都位于 /scripts文件夹下。如果源码自带的工.转载 2020-07-14 17:30:07 · 855 阅读 · 0 评论 -
MySQL Explain 解析
目录一、语法二、explain输出解释1 id2 select_type3 table4 type5 possible_keys6 key7 key_len8 ref9 rows10 Extra一、语法explain < table_name >例如:explain select * from t3 where id=3952602;二、explain输出解释+----+-------------+-------+-------+-------------------+------.转载 2020-07-14 16:34:46 · 106 阅读 · 0 评论 -
MySQL Utilities管理工具介绍
目录1 mysqldbcompare2 mysqldiff3 mysqldbcopy4 mysqldbexport5 mysqldbimportMySQL Utilities提供了一系列MySQL服务器和数据库的管理工具。完全支持MySQL5.1及以上版本,也兼容MySQL5.0版本,不过有些特性不支持。不支持MySQL4.0版本。下面这些工具工作在数据库级别,可以用来管理一个或多个服务器的数据库。1 mysqldbcompare比较两个服务器或同个服.转载 2020-07-14 16:29:29 · 329 阅读 · 0 评论 -
MySQL查看实时执行的SQL语句
目录1 查看LOG功能2 打开LOG功能2.1 临时开启2.2 永久开启3 实时查看MySQL默认不能实时查看执行的SQL语句,因为这会消耗一定的资源。要开启这个功能,稍微配置一下,打开这个LOG记录就可以了。1 查看LOG功能首先,查看是否已经开启实时SQL语句记录。mysql> SHOW VARIABLES LIKE "general_log%";如下general_log值为OFF说明没有开启:+------------------+-----------------------.转载 2020-07-14 16:27:12 · 548 阅读 · 0 评论 -
MySQL锁详解
MySQL锁详解一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定.转载 2020-07-13 17:21:21 · 109 阅读 · 0 评论 -
MySQL中的事件
文章目录事件是什么?使用开启定时器语法创建事件查看事件启用和禁用删除事件实践简单案例参考事件是什么?MySQL5.1版本开始引进event概念,MySQL 中的事件(event:时间触发器)是用于执行定时或周期性的任务,类似Linux中的crontab,但是后者只能精确到分钟,事件可以精确到秒。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。事件由一个特定的线程来管理的,也就是所谓的事件调度器,但是事件不能直接调用。使用开启定时器MySQL中调度器event_s..转载 2020-07-13 16:51:34 · 370 阅读 · 0 评论 -
MYSQL事务的概念和事务处理方法
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!1,事务的概念一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。原子性:一个事务(transaction)中的所有操作,要么全部完成,...转载 2020-07-13 16:39:42 · 273 阅读 · 0 评论 -
MySQL基于GTIDs的主从复制
MySQL基于GTIDs的主从复制之前的文档中讲述了基于二进制日志文件位置的复制,这一节讲如何搭建基于GTID(Global Transaction Identifiers)的主从复制。如果要了解GTID的概念,请参考下一篇文章测试环境:Mysql 5.7.18 社区版,Ubuntu 16.04,两台机器,db2a作为Master, db2b作为slave前提条件:db2a, db2b之前并非主、从关系。也就是说,从零开始搭建。如果之前已经是基于二进制日志文件位置的复制,请参考链接目标:复制db2..转载 2020-07-13 10:01:29 · 134 阅读 · 0 评论 -
mysql如何保证数据一致性
1.MySQL数据库层丢数据场景 本节我们主要介绍一下在存储引擎层上是如何会丢数据的。1.1.InnoDB丢数据 InnoDB支持事务,同Oracle类似,事务提交需要写redo、undo。采用日志先行的策略,将数据的变更在内存中完成,并且将事务记录成redo,顺序的写入redo日志中,即表示该事务已经完成,就可以返回给客户已提交的信息。但是实际上被更改的数据还在内存中,并没有刷新到磁盘,即还没有落地,当达到一定的条件,会触发...转载 2020-07-08 18:05:23 · 4066 阅读 · 0 评论 -
MySQL数据一致性检查工具
数据的不一致常令DBA被客服或业务部门投诉,那么一致性便是耳根清净[虽然不能这么说]的良方这里介绍MySQL官方的mysqldbcompare(python写的)和percona公司的pt-table-checksum(perl写的)mysqldbcompare的作用是对比两个数据库的表结构、表数据的一致性并能生成对应补偿的SQL,如主备、线上线下对于差异的展现能通过参数--difftype调控① unified (d...转载 2020-07-08 10:22:37 · 886 阅读 · 0 评论 -
MySQL数据一致性检查的几个工具
一般来说呢,如何检测两张表的内容是否一致,这样的需求大多在从机上体现,以保证数据一致性。方法无非有两个,第一呢就是从数据库着手,第二呢就是从应用程序端着手。 我这里罗列了些如何从数据库层面来解决此类问题的方法。当然第一步就是检查记录数是否一致,否则不用想任何其他方法了。这里我们用两张表t1_old,t1_new来演示。表结构: CREATE TABLE t1_old ( id int(11) NOT NULL, log_time timestamp DEFAULT NULL) ;CREATE转载 2020-07-08 10:07:29 · 977 阅读 · 0 评论 -
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
参数说明innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,不同参数设置对磁盘IO影响不同。参数innodb_flush_log_at_trx_commitinnodb_flush_log_at_trx_commit=0:每秒一次将Log Buffer中数据写入到Log File中,并且Flush到磁盘。事务提交不会主动触发写磁盘操作。innodb_flush_log_at_trx_comm...转载 2020-07-07 13:56:37 · 452 阅读 · 0 评论 -
MySQL-存储过程(数据类型、函数)
文章目录MySQL存储过程一、存储过程与函数二、命令行结束标志符号三、关于变量的使用1. 局部变量2. 用户变量3. 存储过程结果赋值到变量的几种方法四、存储过程的查看、删除、调用、创建1. 查看存储过程2. 删除存储过程3. 调用存储过程4. 创建存储过程五、控制结构语句1. 判断-if的使用2. 判断-case when的使用3. while 循环4. repeat 循环5. loop 循环六、数据类型介绍1. 数值类型2. 日期和时间类型3. 字符串类型七、常用函数1. 数学函数2. 字符串函数3..转载 2020-07-01 09:41:54 · 1760 阅读 · 0 评论 -
mysql主从复制
一、主从复制前提要求:1、版本一致2、初始化表,并在后台启动mysql3、修改root的密码二、修改master数据库配置 # vi /etc/my.cnfimage.pnglog-bin = mysql-bin #[必须]启用二进制日志binlog_format=mixedserver-id =1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段innodb-file-per-table =ONskip_name_resolve=ON a) 查看二进制日志转载 2020-06-29 17:46:31 · 143 阅读 · 0 评论 -
mysql存储过程之动态sql
mysql存储过程之动态sql Mysql 5.0 以后,支持了动态sql语句,我们可以通过传递不同的参数得到我们想要的值 这里介绍两种在存储过程中的动态sql: set sql = (预处理的sql语句,可以是用concat拼接的语句) set @sql = sql PREPARE stmt_name FROM @sql; EXECUTE stmt_name; {DEALLOCATE | DROP} PREPARE转载 2020-06-28 13:52:00 · 824 阅读 · 0 评论 -
mysql存储过程学习笔记
本文主要记录了本人学习mysql存储过程时的笔记,文档中用到的表结构在文档结尾处有说明。一、定义 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。二、...转载 2020-06-28 11:40:59 · 214 阅读 · 0 评论 -
mysql mysqldump导出与导入sql文件
MySql数据库备份与恢复——使用mysqldump 导入与导出方法总结 mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个sql服务器(不一定是一个mysql服务器)。转储包含创建表和/或装载表的sql语句。如果在服务器上进行备份,并且表均为myisam表,应考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复。本文从四部分介绍了mysql数据备份与恢复:第一...转载 2020-06-23 16:01:44 · 3186 阅读 · 0 评论 -
MySQL基于ROW格式的数据恢复
大家都知道MySQL Binlog 有三种格式,分别是Statement、Row、Mixd。Statement记录了用户执行的原始SQL,而Row则是记录了行的修改情况,在MySQL 5.6以上的版本默认是Mixd格式,但为了保证复制数据的完整性,建议生产环境都使用Row格式,就前面所说的Row记录的是行数据的修改情况,而不是原始SQL。那么线上或者测试环境误操删除或者更新几条数据后,又想恢复,那怎么办呢?下面演示基于Binlog格式为Row的误操后数据恢复,那么怎么把B...转载 2020-06-22 15:30:52 · 460 阅读 · 0 评论 -
一个简单的binlog恢复测试
日常的数据备份及恢复测试,是DBA工作重中之重的事情,所以要做好备份及测试,日常的备份常见有mysqldump+binlog备份、xtrabackup+binlog备份,无论那一种,几乎都少不了对binlog的备份,说明了binlog在数据恢复中的重要性,下面做个小测试,是工作中不少运维或者新人DBA容易犯的错。创建一个测试表tb1:<test>(root@localhost) [xuanzhi]> show create ...转载 2020-06-22 15:25:33 · 183 阅读 · 0 评论 -
从xtrabackup备份恢复单表
目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么如何快速的从xtrabackup备份中恢复单张表呢?从mysql 5.6版本开始,支持可移动表空间(Transportable Tablespace),利用这个功能也可以实现单表的恢复,下面进行从备份中恢复单张innodb表进行演练。 1. 针对In...转载 2020-06-22 15:23:32 · 373 阅读 · 0 评论 -
binlog2sql之MySQL数据闪回实践
DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。现在有不少好用而且效率又高的开源闪回工具如binlog2sql、mysqlbinlog_flashback,这些工具在工作中给DBA减轻了不少痛苦,以下针对binlog2sql的使...转载 2020-06-22 15:22:05 · 187 阅读 · 0 评论