-----MySQL相关特性
文章平均质量分 83
Leshami
十年以上数据库领域一线实战经验,涵盖高可用,灾备中心设计,备份恢复,数据库开发,数据挖掘,数据库设计,性能优化等;其产品服务领域包括Oracle,MySQL,SQLserver,MongoDB等。曾先后服务于晨星资讯,dbadirect,香港易高科技等金融,证券软件行业;并提供企业级数据库性能优化,运维管理相关培训,先后提供培训服务的对象有速尔快递,同洲电子,民太安保险,康拓普,广州电信研究院,中行浙江分行等。
展开
-
MySQL字符集乱码
MySQL数据库查询结果乱码,这是大家比较常见的情形。到底是什么原因导致出现查询结果为乱码呢,本文主要通过演示来理解乱码产生的原因,以及如何解决字符集乱码,供大家参考。一、字符编码对比 SELECT hex(convert('love' USING latin1)) latin_value, hex(convert('love' USING gb2312)) gb2312_va...原创 2019-06-07 23:24:53 · 2651 阅读 · 0 评论 -
MySQL数据库数据迁移到SQLserver
最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单。对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserver链接服务器的方式来访问mysql。具体见下文描述。原创 2016-04-05 17:40:45 · 13409 阅读 · 4 评论 -
基于Innobackupex的MySQL备份脚本
Innobackupex是Xtrabackup的一部分,其实质也是调用xtrabackup。主要的不同是Xtrabackup除了支持innodb引擎外还支持xtradb引擎。本文主要封装了Innobackupex到shell脚本进行定期备份,供大家参考。 1、脚本描述a、支持增量备份以及全备b、需要传递到备份脚本(如备份路径,连接相关参数等)c、基于周日,周三的全量备份,其他增量备份d、可根据需要原创 2015-01-12 15:32:00 · 6317 阅读 · 0 评论 -
MySQL EXPLAIN SQL 输出信息描述
EXPLAIN语句能够被用于获取一些关于SQL执行时的相关信息,比如表的连接顺序,对表的访问方式等等。通过对该相关信息进行进一步的分析,我们可以通过对表添加适当的索引,以及优化连接顺序,使用提示等等手段来达到使SQL高效运行的目的。本文描述了EXPLIAN的用法并给出相关示例。原创 2015-10-12 09:04:27 · 4530 阅读 · 0 评论 -
加强MySQL用户安全
很多亲们在安装好了MySQL数据库之后,对于mysql用户表并没有做任何特殊的处理,因此缺省情况下,存在密码为空的用户,也有很多用户名和密码都为空的情形,我们称之为双空用户。这种情形下的登录,在此统称为异常登陆。对于生产环境的数据库来说,这会带来一些不确定的安全隐患。下面是关于这个问题的描述以及清理掉无关用户的方法。原创 2015-09-30 14:30:44 · 3337 阅读 · 1 评论 -
加快mydumper与myloader导出导入
mydumper与myloader是一个优秀的第三方mysql数据库逻辑备份恢复工具,使用多线程的导出与导入。弥补了mysqldump单线程的不足。本文描述的是如何加快mydumper与myloader的导出与导入供大家参考。原创 2015-09-10 20:21:32 · 5729 阅读 · 0 评论 -
MySQL create table as与create table like对比
在MySQL数据库中,关于表的克隆有多种方式,比如我们可以使用create table ..as .. ,也可以使用create table .. like ..方式。然而这2种不同的方式还是有些差异的,他的差异到底在哪里呢,本文通过演示对此展开描述。1、mysql sakila表上的结构--actor表状态robin@localhost[sakila]> show table原创 2015-07-08 11:06:34 · 38695 阅读 · 2 评论 -
mydumper安装及安装故障汇总
mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式术语逻辑备份。它支持多线程,备份速度远高于原生态的mysqldump以及众多优异特性。因此该工具是DBA们的不二选择。本文主要描述该工具的安装及其出现异常的解决方法。1、mydumper特性(直接参考readme) * Parallelism (hence, speed) and performance (原创 2015-07-03 13:53:00 · 10056 阅读 · 0 评论 -
myloader恢复mysql数据库示例
mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式为逻辑备份。它支持多线程,备份速度远高于原生态的mysqldump以及众多优异特性。与其相配套的恢复工具则是myloader,主要用于将dump出来的sql以并行的方式进行恢复。本文主要描述myloader的使用方法并给出示例。 有关mydumper的相关参考 mydumper备份mys原创 2015-07-09 15:51:58 · 8219 阅读 · 0 评论 -
mydumper备份mysql数据库示例
mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式术语逻辑备份。它支持多线程,备份速度远高于原生态的mysqldump以及众多优异特性。因此该工具是DBA们的不二选择。本文主要描述该工具的使用方法并给出示例。 有关mydumper安装参考:mydumper安装及安装故障汇总1、mydumper的特点a、多线程逻辑备份,生产的多个备份文件b、与mysqldump相原创 2015-07-09 13:26:26 · 8775 阅读 · 0 评论 -
ERROR 1160 (08S01) : Got an error writing communication packets
应用程序端碰到错误提示,MySQLNonTransientConnectionException:Got an error writing communication packets。与packet有关,之前一直都没有碰到过这个问题。数据库error日志也未见半点异常,到底是怎么一回事呢?原创 2015-05-19 21:12:35 · 16916 阅读 · 1 评论 -
Xtrabackup 流备份与恢复
Xtrabackup是MySQL数据库的备份不可多得的工具之一。提供了全备,增备,数据库级别,表级别备份等等。最牛X的还有不落盘的备份,即流备份方式。对于服务器上空间不足,或是搭建主从,直接使用流式备份大大简化了备份后的压缩复制所带来的更多开销。Xtrabackup支持tar格式以及xbstream格式的流备份。本文即是对此展开的相关描述。 1、基于tar格式备份a、备份到本地# innoback原创 2015-04-15 20:07:05 · 18989 阅读 · 2 评论 -
Linux 下卸载MySQL Enterprise Monitor
MySQL Enterprise Monitor是专门为MySQL数据库而设计的一款企业级监控,能非常好地与MySQL各方面特性相结合,包括:MySQL的关键性能指标、主机、磁盘、备份、新特性相关以及各种场景下的架构配置,并支持从单节点到海量节点部署的环境。它不仅能够全面地监控MySQL的运行状态,还能及时发现潜在的问题并给出优化建议。MySQL Enterprise Monitor的安装和卸载也原创 2015-02-15 14:03:19 · 3285 阅读 · 1 评论 -
基于innobakcupex跨实例不完全恢复步骤
MySQL在基于热备的基础上,可以实现对原有实例的完全或不完全恢复。而很多时候,原有实例部署了DRBD或者MHA等,在这种情况下,基于原有实例进行恢复会影响原有的故障现场及架构,可以通过跨实例恢复来恢复丢失或异常数据。同时跨实例恢复也可以实现基于整个实例进行实例级别数据库迁移。下文演示了基于跨实例的不完全恢复。 1、主要步骤a、准备新实例b、基于热备做prepare及recoverc、复制完整的备原创 2015-02-12 16:32:39 · 2737 阅读 · 1 评论 -
mysqlbinlog can not parse row based events
最近的MHA测试过程中,碰到了mysqlbinlog客户端的版本低于服务端版本的问题。即这个错误提示:mysqlbinlog is 3.2 (included in MySQL Client 5.0 or lower), but MySQL server version is 5.6.22-log. mysqlbinlog can not parse row based events。原创 2015-02-17 10:24:50 · 3411 阅读 · 0 评论 -
安装MySQL Enterprise Monitor
MySQL Enterprise Monitor是专门为MySQL数据库而设计的一款企业级监控,能非常好地与MySQL各方面特性相结合,包括:MySQL的关键性能指标、主机、磁盘、备份、新特性相关以及各种场景下的架构配置,并支持从单节点到海量节点部署的环境。它不仅能够全面地监控MySQL的运行状态,还能及时发现潜在的问题并给出优化建议。本文描述了MySQL Enterprise Monitor的安原创 2015-01-21 10:45:57 · 8490 阅读 · 2 评论 -
MySQL HA架构下innodb_flush_log_at_trx_commit及sync_binlog参数
HeartBeat + DRBD以及MySQL replication是很多企业比较普遍使用的方式。对于数据的完整性和一致性的问题,这两种架构需要考虑2个重要的参数innodb_flush_log_at_trx_commit以及sync_binlog参数。本文主要参考了MySQL 5.6 Reference Manual列出对这2个参数的具体描述。 1、Heartbeat + DRBD or re原创 2014-12-11 11:48:54 · 5318 阅读 · 0 评论 -
mysql explain type连接类型示例
对于MySQL执行计划的获取,我们可以通过explain方式来查看,explain方式看似简单,实际上包含的内容很多,尤其是输出结果中的type类型列。理解这些不同的类型,对于我们SQL优化举足轻重,本文仅描述explian输出结果中的type列,同时给出其演示。原创 2015-10-27 14:09:44 · 11875 阅读 · 0 评论 -
Linux 下MySQL源码安装完整版
在Linux中安装MySQL,通常为RPM与源码方式安装。对于生产环境而言,由于需要自定义诸如安装路径、数据文件位置、字符集以及支持的存储引擎等多以源码方式来进行安装。之前有写过一篇关于源码安装的文章,Linux下基于源码方式安装MySQL 5.6,但不是很完整,因此该文可以作为其补充。以下为具体安装步骤,供大家参考。1、安装前的有关描述必备的包和工具 gcc/g++ :MySQL 5.6开始,原创 2014-10-14 11:41:33 · 8698 阅读 · 0 评论 -
基于案例理解MySQL执行计划
一、执行计划一些参考链接mysql explain type连接类型示例MySQL EXPLAIN SQL 输出信息描述二、获取SQL执行计划方法1(命令行):EXPLAIN sql_statement方法2(Toad):Toad里边在SQL编辑器里边点击explain plan方法3(Navicate)Navicate里边点击解释三、案例1、原始SQL及完整执行计划原始SQL语...原创 2018-11-27 17:09:54 · 1832 阅读 · 1 评论 -
MySQL SQL更新锁定
MySQL数据库锁是实现数据一致性,解决并发问题的重要手段。数据库是一个多用户共享的资源,当出现并发的时候,就会导致出现各种各样奇怪的问题,就像程序代码一样,出现多线程并发的时候,如果不做特殊控制的话,就会出现意外的事情,比如“脏“数据、修改丢失等问题。所以数据库并发需要使用事务来控制,事务并发问题需要数据库锁来控制,所以数据库锁是跟并发控制和事务联系在一起的。本文主要描述基于更新SQL语句来理解...原创 2018-11-27 14:35:26 · 3147 阅读 · 2 评论 -
MySQL数据库锁机制
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。在MySQL数据库中支持多种不同粒度的锁来兼顾数据库并发与一致性问题。本文主要描述MySQL锁工作机制及其锁类型,粒度等。一、...原创 2018-11-27 11:22:22 · 1904 阅读 · 1 评论 -
MySQL数据类型选择性能比对
在关系型数据库建表期间,我们需要考虑很多很多的事项。诸如表存储什么数据,列上使用的数据类型,选择什么样的存储引擎等等。本文主要介绍针对表上列使用三种不同的数据类型来进行对比,以观察选择不同数据类型时,对于性能造成的影响。一、建表时需要考虑的事项作用: 存储什么数据?结构: 包含什么列,需要约束吗?存储: 每一列使用什么数据类型?需要索引吗?引擎: 使用什么存储引擎...原创 2018-11-23 07:43:10 · 2261 阅读 · 1 评论 -
数据库三范式
关系型数据库设计是很重要的一门学科,设计的好坏与否,直接影响到后续业务性能。遵从数据库方式进行数据库设计,将极大程度上是的数据冗余变少,后续整个数据库的性能,维护与管理都将变得轻松。设计数据库结构有六种范式,而最常用的莫过于一二三范式。本文将主要描述这三种范式。一、第一范式(1NF)1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解。关系数据模型要求所有的关系模式必须满足第一范...原创 2018-11-22 22:04:52 · 1720 阅读 · 1 评论 -
批量生成MySQL不重复手机号大表
在MySQL很多测试场景,需要人工生成一些测试数据来测试。本文提供一个构造MySQL大表存储过程,可以生成包含用户名,手机号码,出生日期等字段。也可以通过滤重来使得手机号码不重复,模拟现实场景。一、生成脚本生成说明:以下使用存储过程批量生成包含用户名,手机号,出生日期等字段大表。该存储过程使用基于uid作为主键,因此会生成少量重复手机号码,后面有滤重SQL脚本。如果想一次性生成不重复手机...原创 2018-11-22 20:39:09 · 3542 阅读 · 2 评论 -
MySQL数据类型 -- 字符型
在MySQL关系型数据库中,MySQL支持的数据类型非常丰富。它主要分为3大类,即:数值型,日期时间性,字符型。而实际上这三类数据类型可以进一步的细分扩展,可以根据业务需要选择最适合的一种。本文主要介绍字符类型,并演示其用法。一、字符型MySQL支持的字符类型可以进一步细分,即可以分为定(变)长字符型,大值字符型,枚举集合类型等。如下图所示:二、字符型空间需求三、字符型演示mysql...原创 2018-09-23 19:43:36 · 4989 阅读 · 0 评论 -
MySQL数据类型 -- 日期时间型
在MySQL关系型数据库中,MySQL支持的数据类型非常丰富。它主要分为3大类,即:数值型,日期时间性,字符型。而实际上这三类数据类型可以进一步的细分扩展,可以根据业务需要选择最适合的一种。本文主要介绍日期时间类型,并演示其用法。一、日期时间型MySQL支持的日期时间类型可以进一步细分,即可以分为日期型,时间型,日期时间型,时间戳等。如下图所示:二、日期时间型存储需求三、日期时间型零值...原创 2018-09-23 19:10:46 · 12918 阅读 · 0 评论 -
MySQL数据类型 -- 数值型
在MySQL关系型数据库中,MySQL支持的数据类型非常丰富。它主要分为3大类,即:数值型,日期时间性,字符型。而实际上这三类数据类型可以进一步的细分扩展,可以根据业务需要选择最适合的一种。本文主要介绍数值类型,并演示其用法。###一、数值型MySQL支持所有标准SQL的所有数值类型。在MySQL中,主要分为以下2大类。一类是整数类型,一类是浮点数类型,如下图所示。整数类型 上图中列出...原创 2018-09-23 17:45:07 · 6438 阅读 · 0 评论 -
percona-toolki安装冲突(my.cnf Percona-Server-shared与mysql-community-server)
最近在安装percona-toolkit工具包时,提示在my.cnf文件中, Percona-Server-shared与mysql-community-server冲突。起初还以为是一定需安装Percona-Server-shared这样一个包才可以呢。Google了一下,原来是需要安装mysql-community-libs-compat 才可以搞定。下面是对这个问题展开描述。1、故障...原创 2018-08-12 18:06:45 · 4320 阅读 · 0 评论 -
MySQL可更新视图
可更新视图是指通过视图,来更新、插入、删除基本表中的数据。视图是一个虚拟表,即对视图的更新,实质上是更新基表。但是视图的构造很多时候是由多个表连接查询,以及结合聚合函数,分组过滤等等定义的。对于这类的视图,想要去更新,恐怕就显得力不从心了。因为涉及到多张表。本文简要描述可更新视图的特点并给出演示。一、不带check option更新-- 当前环境mysql> show va...原创 2018-07-24 10:43:55 · 4677 阅读 · 0 评论 -
MySQL视图
视图是关系型数据库重要的组成部分之一,它可以限制数据访问,简化复杂查询,保持数据的独立性,以及基于相同的数据提供不同的视图等等。本文介绍MySQL数据库视图的一些用法,供大家参考。一、视图的特点视图与表类似,包含列和数据行 可以对视图查询或特定情形下DML操作 视图仅仅包含一些DDL定义语句 视图不存储任何真实数据,数据来源于基表 视图限制访问数据,简化复杂查询创建视图...原创 2018-07-24 10:28:55 · 1907 阅读 · 0 评论 -
Linux 7下MySQL自启动配置(glibc)
使用glibc编译后的mysql二进制安装方法被广泛使用,因为它和Windows下的zip方式一下,简单几个步骤,配置一下环境即可。而在Linux 7版本中,MySQL的自启动,不再建议将启动脚本存放到/etc/init.d目录中,因此,我们需要手动配置一下基于systemd方式的自启动文件。下文供大家参考。一、当前环境# more /etc/redhat-release Cen...原创 2018-06-19 13:47:57 · 1833 阅读 · 0 评论 -
Windows环境下安装MySQL5.7及MySQL WrokBench
最近需要给童鞋们编写一个Windows环境下MySQL5.7安装手册,因此将文档内容直接发布到博客,供大家参考。一、安装环境Windows 7 X64 二、下载安装文件下载地址:https://dev.mysql.com/downloads/windows/installer/5.7.html 三、Windows环境准备1. .NET ...原创 2018-05-31 13:43:50 · 1943 阅读 · 0 评论 -
使用pt-table-checksum校验MySQL主从复制
pt-table-checksum是一个基于MySQL数据库主从架构在线数据一致性校验工具。其工作原理在主库上运行, 通过对同步的表在主从段执行checksum, 从而判断数据是否一致。在校验完毕时,该工具将列出与主库存在差异的对象结果。一、主从不一致的情形 Master端使用了不确定的语句(如:CURRENT_USER(), UUID()) 不正确的故障转移(failover)流程原创 2017-10-28 17:14:02 · 8136 阅读 · 1 评论 -
MySQL Utilities工具包概述及安装
MySQL Utilities 是一组基于python语言编写的python库的命令行实用工具集,依赖于python 2.6。该工具提供了MySQL数据库运维工程中常用的一些工具,诸如克隆、复制、比较、差异、导出、导入、安装、配置、索引、磁盘查看等等。有了这个工具包,就好比那些个神医大夫,不管大病小病,先去搞个化验,搞个CT,你也可以当华佗.......原创 2016-10-12 11:46:05 · 10698 阅读 · 1 评论 -
基于 Linux 安装glibc版mysql 5.7.12
对于mysql的数据库的安装,我们有很多种选择来完成。而最为常用的为二进制安装以及源码安装。二进制安装方式中,包括rpm版本以及glibc版本。rpm版本就是在特定linux版本下编译的,如果你的linux版本匹配,就可以安装,如针对RedHat6或者RedHat7编译好的rpm包,下载对应的安装即可。还有另外一种二进制安装包为基于特定的glibc版本编译的,本文主要描述基于glibc方式安装mys原创 2016-06-30 17:07:54 · 12779 阅读 · 3 评论 -
基于Innobackupex的不完全恢复
对于MySQL的不完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到任意时刻。这里的不完全恢复(也叫时点恢复)是相对于完全恢复。本文主要演示了基于Innobackupex如何做一个不完全恢复,供大家参考。 有关Innobackupex的备份恢复的知识点请参考以下链接: Innobackupex 全备数据库 使用mysqlbi原创 2014-12-26 14:15:57 · 3981 阅读 · 0 评论 -
基于Innobackupex的完全恢复
对于MySQL的完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到故障点。这里的完全恢复是相对于时点恢复(也叫不完全恢复)。本文主要演示了基于Innobackupex如何做一个完全恢复,供大家参考。 有关Innobackupex的备份恢复的知识点请参考以下链接: Innobackupex 全备数据库 使用mysqlbinlo原创 2014-12-26 09:55:12 · 6095 阅读 · 0 评论 -
基于Innobackupex的增备及恢复
MySQL的热备(物理备份)可以采取全备加增量备份的方式来减轻数据库I/O压力及系统资源的占用。增量备份主要是以全备或增量备份为基础,备份那些变更过的页面。其备份的原理是基于一个不断增长的LSN序列,这个LSN与Oracle的SCN类似。在恢复期间,我们需要将已提交的事务前滚,未提交的事务回滚。本文主要描述了增量备份及增量恢复。1、增备的相关知识点 As not all informatio原创 2014-12-25 08:37:09 · 5216 阅读 · 0 评论 -
Shell 脚本中执行mysql语句
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本。本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美化,需要进一步完善和调整。以下为具体的事例及其方法。1、将SQL语句直接嵌入到shell脚本文件中--演示环境[root@SZDB ~]# more /etc/issueCentOS relea原创 2014-10-14 15:02:00 · 34297 阅读 · 0 评论