随笔分类 -  MySQL

摘要:​数据库备份的重要性毋庸置疑,可以说,它是数据安全的最后一道防线。鉴于此,对于备份,我们通常会做以下要求: 多地部署 对于核心数据库,我们通常有两地三中心的部署要求。对于备份来说,也是如此。 一个备份应该有多个副本,每个副本存储在不同区域。 多介质部署 一个备份的多个副本应存储在不同介质上,如磁盘和 阅读全文
posted @ 2021-10-16 11:31 iVictor 阅读(3126) 评论(5) 推荐(0) 编辑
摘要:在使用MySQL的过程中,在存储字符串时,大家或许都有过这样或那样的困惑,譬如: 1. 对于固定长度的字符串,为什么推荐使用 CHAR 来存储? 2. VARCHAR 可设置的最大长度是多少? 3. 给定一个字符串,怎么知道它的空间使用情况? 4. 创建索引时,提示“Index column siz 阅读全文
posted @ 2021-08-14 22:59 iVictor 阅读(40121) 评论(2) 推荐(8) 编辑
摘要:“Too many open files”是一个比较常见的错误,不仅仅是在 MySQL 中。只要是在 Linux 中启动的进程,都有可能遇到这个错误。 究其原因,是进程打开的文件描述符数超过了自身的限制。 这个限制,是进程级别的,在 MySQL 中,与 open_files_limit 的设置有关。 阅读全文
posted @ 2021-07-19 09:13 iVictor 阅读(2575) 评论(0) 推荐(3) 编辑
摘要:最近碰到一个case,值得分享一下。 现象 一个DDL,将列的属性从null调整为not null default xxx, alter table slowtech.t1 modify name varchar(10) not null default 'slowtech'; 通过平台执行(平台调 阅读全文
posted @ 2021-01-30 07:55 iVictor 阅读(4975) 评论(1) 推荐(2) 编辑
摘要:SQL_MODE是MySQL中的一个系统变量(variable),可由多个MODE组成,每个MODE控制一种行为,如是否允许除数为0,日期中是否允许'0000-00-00'值。 为什么需要关注SQL_MODE呢? 首先,看三个简单的Demo(MySQL 5.6)。 1. mysql> create 阅读全文
posted @ 2019-11-04 09:30 iVictor 阅读(7649) 评论(1) 推荐(2) 编辑
摘要:对于MySQL的历史,相信很多人早已耳熟能详,这里就不要赘述。下面仅从产品特性的角度梳理其发展过程中的里程碑事件。 1995年,MySQL 1.0发布,仅供内部使用。 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本。 1999年,MySQL AB公司成立。同年,发布MyS 阅读全文
posted @ 2018-10-18 08:54 iVictor 阅读(33561) 评论(11) 推荐(20) 编辑
摘要:在上一篇文章《MySQL 5.7中如何定位DDL被阻塞的问题》中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata_locks表。提出的定位方法,颇有种"锦上添花"的意味,而且,也只适用于MySQL 5.7开始的版本。 但在实 阅读全文
posted @ 2018-08-21 21:07 iVictor 阅读(2090) 评论(5) 推荐(2) 编辑
摘要:在上篇文章《MySQL表结构变更,不可不知的Metadata Lock》中,我们介绍了MDL引入的背景,及基本概念,从“道”的层面知道了什么是MDL。下面就从“术”的层面看看如何定位MDL的相关问题。 在MySQL 5.7中,针对MDL,引入了一张新表performance_schema.metad 阅读全文
posted @ 2018-08-14 10:36 iVictor 阅读(5270) 评论(0) 推荐(3) 编辑
摘要:在线上进行DDL操作时,相对于其可能带来的系统负载,其实,我们最担心的还是MDL其可能导致的阻塞问题。 一旦DDL操作因获取不到MDL被阻塞,后续其它针对该表的其它操作都会被阻塞。典型如下,如阻塞稍久的话,我们会看到Threads_running飙升,CPU告警。 mysql> show proce 阅读全文
posted @ 2018-08-13 10:01 iVictor 阅读(2907) 评论(7) 推荐(2) 编辑
摘要:很多童鞋在启动mysql的时候,碰到过这个错误, 首先,澄清一点,出现这个错误的前提是:通过服务脚本来启动mysql。通过mysqld_safe或mysqld启动mysql实例并不会报这个错误。 那么,出现这个错误的原因具体是什么呢? 哈哈,对分析过程不care的童鞋可直接跳到文末的总结部分~ 总结 阅读全文
posted @ 2017-05-17 15:19 iVictor 阅读(57450) 评论(0) 推荐(3) 编辑
摘要:今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图。 注意:他的生产环境是物理机,单个CPU,4个Core。 于是,他抓取了CPU的历史信息,发现CPU飙高大概是从2017年1月1日8点10分开始的。 但是这个从库的负载并不高, 阅读全文
posted @ 2017-01-04 17:03 iVictor 阅读(5463) 评论(18) 推荐(10) 编辑
摘要:命令如下: 其中-i指定监听的网络接口,在RHEL 7下,网络接口名不再是之前的eth0,而是 eno16777736。 在RHEL 5&6下,可直接不带-i参数,因为它默认是eth0。在RHEL 7下,如果不用-i参数指定网络接口,则会报如下错误: 阅读全文
posted @ 2016-12-12 11:53 iVictor 阅读(6288) 评论(0) 推荐(1) 编辑
摘要:在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: 这个报错信息就意味着当前的连接已经断开,需要重新建立连接。 那么,连接的时长是如何确认的? 其实,这个与interactive_timeout和wait_timeout的设置有关。 首先,看看 阅读全文
posted @ 2016-10-20 12:10 iVictor 阅读(65481) 评论(2) 推荐(17) 编辑
摘要:在删除数据库的时候报标题所示错误 问题原因: test目录下存在着MySQL数据库不知道的文件,即MySQL数据库中没有该文件的数据字典信息。 如下所示, 解决方法: 手动删除test目录下的该文件 登录数据库,重新执行drop database操作 阅读全文
posted @ 2016-09-28 17:47 iVictor 阅读(17165) 评论(0) 推荐(1) 编辑
摘要:如图所示,区别有以下两点: 1. B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。 2. B+树中所有叶子节点都是通过指针连接在一起,而B树不会。 B+树的优点: 1. 非叶子节点不会带上ROWID,这样,一个块中可以容纳 阅读全文
posted @ 2016-09-08 14:12 iVictor 阅读(45794) 评论(6) 推荐(13) 编辑
摘要:MySQL的升级相对来说还是比较简单的。 它支持两种方式的升级: 原地升级(In-place Upgrade) 关闭数据库,替换旧的二进制文件,重启数据库,执行mysql_upgrade 逻辑升级(Logical Upgrade) 用mysqldump导出数据,安装新的数据库版本,将数据导入到新的数 阅读全文
posted @ 2016-08-16 21:36 iVictor 阅读(2676) 评论(0) 推荐(1) 编辑
摘要:今天碰到一个很奇怪的问题,关于exists的, 第一个语句如下: 产生的结果是:89584 第二个语句如下: 产生的结果是:432382 确实相当奇怪,对于exist子句来说,其判断的是子查询的值是否存在,也就是说,列名,和对列名求最大值没什么区别啊。 包括MySQL官方文档中也提到 大意就是MyS 阅读全文
posted @ 2016-08-12 14:24 iVictor 阅读(1834) 评论(3) 推荐(0) 编辑
摘要:TokuDB是Tokutek公司开发的基于ft-index(Fractal Tree Index)键值对的存储引擎。 它使用索引加快查询速度,具有高扩展性,并支持hot scheme modification,具有以下特点: 1. 插入性能快20~80倍; 2. 压缩数据减少存储空间; 3. 数据量 阅读全文
posted @ 2016-08-11 15:34 iVictor 阅读(5205) 评论(0) 推荐(1) 编辑
摘要:MySQL线程池只在Percona,MariaDB,Oracle MySQL企业版中提供。Oracle MySQL社区版并不提供。 在传统方式下,MySQL线程调度方式有两种:每个连接一个线程(one-thread-per-connection)和所有连接一个线程(no-threads)。在实际生产 阅读全文
posted @ 2016-08-03 21:37 iVictor 阅读(6996) 评论(0) 推荐(0) 编辑
摘要:在初始化MySQL的过程中经常会碰到各种问题,如 出现这些问题的原因无非是两种, 1> 没有传递合适的参数。 譬如: [root@localhost ~]# /usr/test/mariadb-10.1.16-linux-x86_64/scripts/mysql_install_db --datad 阅读全文
posted @ 2016-08-03 14:35 iVictor 阅读(14159) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示