代码改变世界

随笔分类 -  数据库技术(My SQL)

Ubuntu下面MySQL的参数文件my.cnf浅析

2018-10-07 00:09 by 潇湘隐者, 21945 阅读, 收藏,
摘要: 前几天刚接手一个MySQL数据,操作系统为Ubuntu 16.04.5 LTS, 数据库版本为5.7.23-0ubuntu0.16.04.1(APT方式安装的MySQL)。这个操作系统下的MySQL的配置文件my.cnf很多地方都让人有点不适应(跟之前的MySQL环境有些出入,之前都是维护RHEL、CentOS等操作系统环境下的MySQL)。遂研究总结了一下。具体如下所示: root@... 阅读全文

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

2018-09-20 14:45 by 潇湘隐者, 94293 阅读, 收藏,
摘要: 今天在MySQL 5.6版本的数据库中修改InnoDB表字段长度时遇到了"ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes"错误,第一次遇到这个错误,遂花了点学习、研究过、总结这个问题。 我们先来创建一个测试表,构造这样的错误。 mysql> use MyDB;Reading tab... 阅读全文

MySQL索引扩展(Index Extensions)学习总结

2018-09-12 16:19 by 潇湘隐者, 4050 阅读, 收藏,
摘要: MySQL InnoDB的二级索引(Secondary Index)会自动补齐主键,将主键列追加到二级索引列后面。详细一点来说,InnoDB的二级索引(Secondary Index)除了存储索引列key值,还存储着主键的值(而不是指向主键的指针)。为什么这样做呢?因为InnoDB是以聚集索引方式组织数据的存储,即主键值相邻的数据行紧凑的存储在一起(索引组织表)。当数据行移动或者发生页分裂的时... 阅读全文

MySQL如何判别InnoDB表是独立表空间还是共享表空间

2018-08-21 23:37 by 潇湘隐者, 4413 阅读, 收藏,
摘要: InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数据都... 阅读全文

MySQL Innodb数据库误删ibdata1后MySQL数据库的恢复案例

2018-08-19 19:04 by 潇湘隐者, 4824 阅读, 收藏,
摘要: 上周,以前公司的同事朋友找我帮忙,看看能否帮忙恢复一个MySQL 数据库,具体情况为:数据库版本为MySQL 5.6(具体版本不清楚),也不清楚具体的数据库引擎; 没有数据库备份,只剩下数据库下面的一些文件(frm、idb),具体原因是因为出现问题的时候,重装了MySQL,最要命的是ibdata1等文件也没有了,当然这中间细节过程如何,不清楚也不用去纠结了。大概就是这么一个情况。 因... 阅读全文

MySQL中Identifier Case Sensitivity

2018-08-15 22:51 by 潇湘隐者, 1912 阅读, 收藏,
摘要: 在MySQL当中,有可能遇到表名大小写敏感的问题。其实这个跟平台(操作系统)有关,也跟系统变量lower_case_table_names有关系。下面总结一下,有兴趣可以查看官方文档“Identifier Case Sensitivity” In MySQL, databases correspond to directories within the data directory. Each... 阅读全文

MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事

2018-07-16 08:47 by 潇湘隐者, 12856 阅读, 收藏,
摘要: MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事 一网友反馈使用mysqlbinlog解析出的二进制日志中的内容中,有些SQL语句有#注释的情况,这个是怎么回事呢?我们通过实验来了解一下具体细节情况,如下所示,实验环境为5.6.20-enterprise-commercial-advanced-log # whereis mysqlbinlog mysqlbinlo... 阅读全文

MySQL 5.7开启二进制日志注意事项

2018-07-11 15:56 by 潇湘隐者, 3759 阅读, 收藏,
摘要: 最近才开始将部分MySQL 5.6升级到MySQL 5.7, 在开启MySQL的二进制日志时,发现MySQL 5.7 与MySQL 5.6已有细微区别。如果在my.cnf配置文件中,只设置了全局系统变量log_bin,没有设置全局系统变量server_id的话,那么MySQL启动不了,而且错误日志没有任何错误信息。 查了一下官方文档16.1.6.4 Binary Logging Options... 阅读全文

MySQL自增列(AUTO_INCREMENT)相关知识点总结

2018-07-11 15:32 by 潇湘隐者, 5749 阅读, 收藏,
摘要: MySQL的自增列(AUTO_INCREMENT)和其它数据库的自增列对比,有很多特性和不同点(甚至不同存储引擎、不同版本也有一些不同的特性),让人感觉有点稍微复杂。下面我们从一些测试开始,来认识、了解一下这方面的特殊知识点: 自增列持久化问题 如果一个表拥有自增列,当前最大自增列值为9, 删除了自增列6、7、8、9的记录,重启MySQL服务后,再往表里面插入数据,自增列的值为6还... 阅读全文

Percona XtraBackup 备份还原篇

2018-06-27 23:34 by 潇湘隐者, 4648 阅读, 收藏,
摘要: Percona XtraBackup 安装介绍篇已经对Percona XtraBackup的功能和安装做了比较详细的介绍,那么本篇我们直接进入主题,如何使用XtraBackup做备份、还原,下面主要介绍XtraBackup备份还原操作的细节和场景,疏漏之处难免存在,如有不足,敬请指出。本篇暂时不做原理介绍,后续篇章"Percona XtraBackup 原理分析篇"再做介绍。 ... 阅读全文

MySQL状态变量Aborted_connects与Aborted_clients浅析

2018-06-21 00:25 by 潇湘隐者, 7216 阅读, 收藏,
摘要: 关于MySQL的状态变量Aborted_clients & Aborted_connects分别代表的意义,以及哪些情况或因素会导致这些状态变量变化呢?下文通过实验测试来验证一下,首先我们来看看状态变量的描述: Aborted Connect Aborted Connect表示尝试连接到MySQL服务器失败的次数。这个状态变量可以结合host_cache表和其错误日志一起来分析问题... 阅读全文

ERROR 1044 (42000): Access denied for user 'root'@'localhost'

2018-06-19 14:53 by 潇湘隐者, 28473 阅读, 收藏,
摘要: 从供应商那边接手一个MySQL数据库(数据库版本为5.7.21 MySQL Community Server (GPL)),在创建账号时遇到了“ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database xxx”错误,如下所示 mysql> grant all on xxx.* to xxx@'192... 阅读全文

ERROR 3009 (HY000): Column count of mysql.user is wrong…..

2018-06-19 13:45 by 潇湘隐者, 7242 阅读, 收藏,
摘要: 在测试备份还原时,使用XtraBackup还原数据库后,创建一个测试账号时遇到了下面错误: mysql> grant all on house.* to test@'192.168.%' identified by 'test1249'; ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found ... 阅读全文

MySQL InnoDB下关于MVCC的一个问题的分析

2018-05-29 22:33 by 潇湘隐者, 1231 阅读, 收藏,
摘要: 这个是网友++C++在群里问的一个关于MySQL的问题,本篇文章实验测试环境为MySQL 5.6.20,事务隔离级别为REPEATABLE-READ ,在演示问题前,我们先准备测试环境。准备一个测试表test以及一个存储过程循环往test表里面插入记录。 CREATE TABLE test( `id` int(11) primary key not null, `name` char... 阅读全文

翻译:MySQL "Got an Error Reading Communication Packet" Errors

2018-05-23 09:07 by 潇湘隐者, 42124 阅读, 收藏,
摘要: 前言: 本文是对Muhammad Irfan的这篇博客MySQL "Got an Error Reading Communication Packet" Errors的翻译,如有翻译不对或不好的地方,敬请指出,大家一起学习进步。尊重原创和翻译劳动成果,转载时请注明出处。谢谢! 英文原文地址:https://www.percona.com/blog/2016/05/16/mysql-got-... 阅读全文

MySQL的变量分类总结

2018-05-10 19:44 by 潇湘隐者, 4192 阅读, 收藏,
摘要: 在MySQL中,my.cnf是参数文件(Option Files),类似于ORACLE数据库中的spfile、pfile参数文件,照理说,参数文件my.cnf中的都是系统参数(这种称呼比较符合思维习惯),但是官方又称呼其为系统变量(system variables),那么到底这个叫系统参数或系统变量(system variables)呢? 这个曾经是一个让我很纠结的问题,因为MySQL中有各种... 阅读全文

MySQL5.7参数log_timestamps

2018-04-30 17:12 by 潇湘隐者, 4312 阅读, 收藏,
摘要: 最近测试MySQL 5.7.21 Community Server这个版本的MySQL数据库时,发现其错误日志的时间跟系统当前时间不一致,后面检查发现日期时间格式都是UTC时间,查了一下相关资料,原来在MySQL 5.7.2 之后日志文件里面的时间戳从默认的本地系统时区改为了UTC格式。MySQL 5.7.2多了一个参数log_timestamps ,这个参数主要是控制错误日志、慢查询日志等日志... 阅读全文

MySQL新参数log_error_verbosity

2018-04-30 11:49 by 潇湘隐者, 15205 阅读, 收藏,
摘要: 在介绍这个参数前,我们先聊聊参数log_warnings。我们知道MySQL中,其中log_error定义是否启用错误日志的功能和错误日志的存储位置,log_warnings定义是否将告警信息(warning messages)也写入错误日志。此选项默认启用,具体来说: log_warnings 为0, 表示不记录告警信息。 log_warnings 为1, 表示告警信息写入错误日... 阅读全文

[翻译]:MySQL Error: Too many connections

2018-04-27 23:25 by 潇湘隐者, 2183 阅读, 收藏,
摘要: 翻译:MySQL Error: Too many connections 前言: 本文是对Muhammad Irfan的这篇博客MySQL Error: Too many connections的翻译,如有翻译不对或不好的地方,敬请指出,大家一起学习进步。尊重原创和翻译劳动成果,转载时请注明出处。谢谢! 英文原文地址:https://www.percona.com/blog/2013/... 阅读全文

MySQL Innodb如何找出阻塞事务源头SQL

2018-04-26 00:04 by 潇湘隐者, 7568 阅读, 收藏,
摘要: 在MySQL数据库中出现了阻塞问题,如何快速查找定位问题根源?在实验开始前,我们先梳理一下有什么工具或命令查看MySQL的阻塞,另外,我们也要一一对比其优劣,因为有些命令可能在实际环境下可能并不适用。 1: show engine innodb status 2: Innotop工具 3: INNODB_TRX 等系统表 下面我们理论联系实际,通过实验来测试总结一... 阅读全文