摘要:“Too many open files”是一个比较常见的错误,不仅仅是在 MySQL 中。只要是在 Linux 中启动的进程,都有可能遇到这个错误。 究其原因,是进程打开的文件描述符数超过了自身的限制。 这个限制,是进程级别的,在 MySQL 中,与 open_files_limit 的设置有关。 阅读全文
posted @ 2021-07-19 09:13 iVictor 阅读(198) 评论(0) 推荐(0) 编辑
摘要:对于MySQL的历史,相信很多人早已耳熟能详,这里就不要赘述。下面仅从产品特性的角度梳理其发展过程中的里程碑事件。 1995年,MySQL 1.0发布,仅供内部使用。 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本。 1999年,MySQL AB公司成立。同年,发布MyS 阅读全文
posted @ 2018-10-18 08:54 iVictor 阅读(26265) 评论(11) 推荐(17) 编辑
摘要:MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切换操作,在master服务器不宕机的情况下,基本能保证数据的一致性。 它由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。其中,MH 阅读全文
posted @ 2017-05-21 21:37 iVictor 阅读(10426) 评论(6) 推荐(3) 编辑
摘要:对于MySQL的备份,可分为以下两种: 1. 冷备 2. 热备 其中,冷备,顾名思义,就是将数据库关掉,利用操作系统命令拷贝数据库相关文件。而热备指的是在线热备,即在不关闭数据库的情况下,对数据库进行备份。实际生产中基本上都是后者。 关于热备,也可分为两种方式: 1. 逻辑备份 2. 物理备份 对于 阅读全文
posted @ 2016-05-19 11:08 iVictor 阅读(15582) 评论(5) 推荐(4) 编辑
摘要:“Too many open files”是一个比较常见的错误,不仅仅是在 MySQL 中。只要是在 Linux 中启动的进程,都有可能遇到这个错误。 究其原因,是进程打开的文件描述符数超过了自身的限制。 这个限制,是进程级别的,在 MySQL 中,与 open_files_limit 的设置有关。 阅读全文
posted @ 2021-07-19 09:13 iVictor 阅读(198) 评论(0) 推荐(0) 编辑
摘要:优化SQL,只懂执行计划?不行滴! 阅读全文
posted @ 2021-06-12 20:00 iVictor 阅读(132) 评论(0) 推荐(1) 编辑
摘要:最近碰到一个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 阅读(987) 评论(1) 推荐(2) 编辑
摘要:Clone Plugin是MySQL 8.0.17引入的一个重大特性,为什么要实现这个特性呢?个人感觉,主要还是为Group Replication服务。在Group Replication中,添加一个新的节点,差异数据的补齐是通过分布式恢复(Distributed Recovery)来实现的。 在 阅读全文
posted @ 2020-10-15 08:44 iVictor 阅读(929) 评论(0) 推荐(0) 编辑
摘要:SQL_MODE是MySQL中的一个系统变量(variable),可由多个MODE组成,每个MODE控制一种行为,如是否允许除数为0,日期中是否允许'0000-00-00'值。 为什么需要关注SQL_MODE呢? 首先,看三个简单的Demo(MySQL 5.6)。 1. 实际存储值与插入值不符。 2 阅读全文
posted @ 2019-11-04 09:30 iVictor 阅读(4597) 评论(1) 推荐(2) 编辑
摘要:1. Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host' 阅读全文
posted @ 2019-07-08 15:30 iVictor 阅读(770) 评论(0) 推荐(1) 编辑
摘要:Redis Cluster采用虚拟槽分区,所有的key根据哈希函数映射到0~16383槽内,计算公式: slot = CRC16(key) & 16383 每个节点负责维护一部分槽以及槽所映射的键值对。 Redis虚拟槽分区的特点,解耦数据与节点之间的关系,简化了节点扩容和收缩难度。但其存在如下限制 阅读全文
posted @ 2019-03-27 22:05 iVictor 阅读(12107) 评论(0) 推荐(3) 编辑
摘要:对于MySQL的历史,相信很多人早已耳熟能详,这里就不要赘述。下面仅从产品特性的角度梳理其发展过程中的里程碑事件。 1995年,MySQL 1.0发布,仅供内部使用。 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本。 1999年,MySQL AB公司成立。同年,发布MyS 阅读全文
posted @ 2018-10-18 08:54 iVictor 阅读(26265) 评论(11) 推荐(17) 编辑
摘要:redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。 准备redis-trib.rb的运行环境 wget https://cache.ruby-lang.org/pub/ru 阅读全文
posted @ 2018-10-11 11:12 iVictor 阅读(29827) 评论(1) 推荐(3) 编辑
摘要:Redis Sentinel是Redis的高可用方案。是Redis 2.8中正式引入的。 在之前的主从复制方案中,如果主节点出现问题,需要手动将一个从节点升级为主节点,然后将其它从节点指向新的主节点,并且需要修改应用方主节点的地址。整个过程都需要人工干预。 下面通过日志具体看看Sentinel的切换 阅读全文
posted @ 2018-10-09 16:55 iVictor 阅读(6223) 评论(0) 推荐(4) 编辑
摘要:复制 A few things to understand ASAP about Redis replication. 复制的实现 1. 设置主节点的地址和端口 简而言之,是执行SLAVEOF命令,该命令是个异步命令,在设置完masterhost和masterport属性之后,从节点将向发送SLAV 阅读全文
posted @ 2018-10-08 08:48 iVictor 阅读(6303) 评论(0) 推荐(0) 编辑
摘要:RDB RDB是将当前数据生成快照保存到硬盘上。 RDB的工作流程: 1. 执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进程,如RDB/AOF子进程,如果存在bgsave命令直接返回。 2. 父进程执行fork操作创建子进程,fork操作过程中父进程被阻塞。 3. 父进程for 阅读全文
posted @ 2018-10-07 10:16 iVictor 阅读(7370) 评论(0) 推荐(2) 编辑
摘要:在上一篇文章《MySQL 5.7中如何定位DDL被阻塞的问题》中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata_locks表。提出的定位方法,颇有种"锦上添花"的意味,而且,也只适用于MySQL 5.7开始的版本。 但在实 阅读全文
posted @ 2018-08-21 21:07 iVictor 阅读(1688) 评论(5) 推荐(2) 编辑
摘要:在上篇文章《MySQL表结构变更,不可不知的Metadata Lock》中,我们介绍了MDL引入的背景,及基本概念,从“道”的层面知道了什么是MDL。下面就从“术”的层面看看如何定位MDL的相关问题。 在MySQL 5.7中,针对MDL,引入了一张新表performance_schema.metad 阅读全文
posted @ 2018-08-14 10:36 iVictor 阅读(3563) 评论(0) 推荐(2) 编辑
摘要:在线上进行DDL操作时,相对于其可能带来的系统负载,其实,我们最担心的还是MDL其可能导致的阻塞问题。 一旦DDL操作因获取不到MDL被阻塞,后续其它针对该表的其它操作都会被阻塞。典型如下,如阻塞稍久的话,我们会看到Threads_running飙升,CPU告警。 如果发生在线上,无疑会影响到业务。 阅读全文
posted @ 2018-08-13 10:01 iVictor 阅读(2242) 评论(7) 推荐(2) 编辑