• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
MySQL读写IO的操作过程解析

MySQL读写IO的操作过程解析

数据库作为存储系统,所有业务访问数据的操作都会转化为底层数据库系统的IO行为(缓存系统也可以当做是key-value的数据库),本文主要介绍访问MySQL数据库的IO流程以及IO相关的参数。 一、MySQL的文件 首先简单介绍一下MySQL的数据文件,MySQL 数据库包含如下几种文件类型: 1)数据文件 (datafile) 存放表中的具体数据的文件。 2……

MySQL基于MHA高可用测试篇(Binlog模式)

MySQL基于MHA高可用测试篇(Binlog模式)

一、环境准备 下面来测试MHA提供的各种功能,包括自动切换、手动切换、在线切换三种常用模式。下面是MHA manager的启动配置。 [root@mha ~]# cat /etc/masterha/app1.cnf [server default] manager_log=/var/log/masterha/app1/ma……

MySQL基于MHA高可用部署篇(Binlog模式)

MySQL基于MHA高可用部署篇(Binlog模式)

一、部署MHA前提要求(必须满足) 1. SSH公钥认证 基本上MHA manager,MNA node,以及二次检测的节点,都需要互相信任。如果slave比较多,实例比较多,最好提高下 /etc/ssh/sshd_config MaxStartups 的值(默认是10)。 2. 操作系统 仅在Linux上测试过。 3. 单写master和多slave或者只……

MySQL基于MHA高可用部署篇(GTID模式)

MySQL基于MHA高可用部署篇(GTID模式)

一、GTID与MHA MHA是被广泛使用MySQL HA组件,MHA 0.56以后支持基于GTID的复制。 MHA在failover时会自动判断是否是GTID based failover,需要满足下面3个条件即为GTID based failover。 所有节点gtid_mode=1 所有节点Executed_Gtid_Set不为空 至少一个节点Auto……

深度解读原子写

深度解读原子写

为大家介绍一下所谓的原子写,Atomic Write。 一、从文件系统删除文件说起 文件删除操作过程比较复杂,如果简化的来讲,可以分为两步: 1. 删除该文件在文件记录表中的条目。 2. 将该文件之前所占据的空间对应的块在空间追踪bitmap中将对应的bit置0。 假设该文件的文件名非常短,尺寸也非常小,只有不到4KB,那么,上述这两个动作,就可以分别只对应……

MySQL基于MHA高可用理论篇

MySQL基于MHA高可用理论篇

一、MySQL高可用系统 MySQL高可用,顾名思义就是当MySQL主机或服务发生任何故障时能够立马有其他主机顶替其工作,并且最低要求是要保证数据一致性。因此,对于一个MySQL高可用系统需要达到的目标有以下几点: 数据一致性保证这个是最基本的同时也是前提,如果主备的数据的不一致,那么切换就无法进行,当然这里的一致性也是一个相对的,但是要做到最终一致性。 ……

MySQL基于MHA高可用源码篇

MySQL基于MHA高可用源码篇

一、MHA在Binlog模式下切换过程解析 Phase 1: Configuration Check Phase init_config():初始化配置 MHA::ServerManager::init_binlog_server:初始化binlog server check_settings():检查相关配置 a. c……

MySQL基于MHA+VIP部署篇

MySQL基于MHA+VIP部署篇

本章节基于:MySQL基于MHA高可用部署篇(二) 通过上一个章节实验,我们知道mha可以正常切换主从,但是当mysql正常切换之后,应用中是无法正常自动切换的,这时就需要vip了。VIP配置可以采用两种方式,一种通过keepalived的方式管理虚拟ip的浮动;另外一种通过脚本方式启动虚拟ip的方式(即不需要keepalived或者heartbeat类似的……

Raft和Paxos在分布式存储系统中的应用差异

Raft和Paxos在分布式存储系统中的应用差异

作者简介:简怀兵 数据库技术爱好者,在分布式存储领域有一定经验。 最新在看Group Replication(简称GR)的代码,从Codeship的Galera到MariaDB Galera Cluster/Percona XtrDB Cluster的多主集群技术,再到如今的GR; 分布式存储系统,尤其是分布式的RDBMS必然是未来的趋势。其中最本质和最难的……

MySQL开发规范-持续更新

MySQL开发规范-持续更新

一、基础规范 统一使用utf8mb4字符集和utf8mb4_general_ci字符排序规则,utf8mb4字符集是utf8的超集,而且还支持emoji字符。 表存储引擎使用InnoDB存储引擎,默认就是。 隔离级别使用READ-COMMITTED(binlog格式使用ROW)。 统一命名规范,默认全小写,禁用关键字和合理使用前缀。 严禁在数据库中明文存储……

MySQL内存使用分析(OOM分析)

MySQL内存使用分析(OOM分析)

一、MySQL如何使用内存? 首先,介绍MySQL使用内存的一些方法: 会话级别的内存消耗(连接私有内存):如 sort_buffer_size 等,每个会话都会开辟一个 sort_buffer_size 来进行排序操作。 全局的内存消耗(共享内存):例如 innodb_buffer_pool_size 等,全局共享的内存段。 MySQL内存计算器 全……

MySQL中Redo与Binlog顺序一致性问题?

MySQL中Redo与Binlog顺序一致性问题?

首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的。而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的。现在我们来讨论一下MySQL主从复制过程中的一些细节问题,有关于主从复制可以看具体的章节。 在了解了以上基础的内容后,我们可以带着以下的几个问题去学习复制到底是怎样工作的。 为什么……