• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
MySQL使用profile分析SQL语句执行过程

MySQL使用profile分析SQL语句执行过程

分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。对于全局级别则作用于整个MySQL实例,而session级别紧影响当前session。该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等。根据这……

MySQL参数innodb_fast_shutdown&innodb_force_recovery介绍

MySQL参数innodb_fast_shutdown&innodb_force_recovery介绍

innodb_fast_shutdown innodb_fast_shutdown告诉 InnoDB 在它关闭的时候该做什么工作。 有三个值可以选择(默认值为1): 0:表示在 InnoDB 关闭的时候,需要 purge all,merge insert buffer,flush dirty pages。这是最慢的一种关闭方式,但是restart的时候也是……

MySQL Group Commit

MySQL Group Commit

一、背景 在关系型数据库中,为了满足 ACID 中的D(持久性)属性,也就是说事务提交并且成功返回给客户端之后,必须保证该事务的所有修改都持久化了,无论是在数据库程序崩溃的情况下或者是数据库所在的服务器发生宕机或者断电的情况下,都必须保证数据不能丢失。这就要求数据库在事务提交过程中调用 fsync 或 fdatasync 系统调用将数据持久化到磁盘,现代数据……

MySQL主从复制线程状态转变

MySQL主从复制线程状态转变

一、主库线程状态(State)值 以下列表显示了主从复制中主服务器的Binlog Dump线程的State列中可能看到的最常见状态(SHOW PROCESSLIST)。如果Binlog Dump线程在主服务器上看不到,这意味着复制没有运行,也就是说,目前没有连接任何Slave主机。 Sending binlog event to slave 二进制日志由各种……

MySQL开发规范

MySQL开发规范

一、DBA操作规范 1、涉及业务上的修改/删除数据,在得到业务方、CTO的邮件批准后方可执行,执行前提前做好备份,必要时可逆。 2、所有上线需求必须走工单系统,口头通知视为无效。 3、在对大表做DDL操作时,业务低峰时操作。MySQL 5.6版本之前使用pt-osc工具,5.6版本开始支持online DDL操作。 4、所有线上业务库均必须搭建MHA高可用架……

理解悲观锁与乐观锁

理解悲观锁与乐观锁

在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和一致性以及数据库的一致性。 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是数据库系统中有乐观锁和悲观锁的概念,像mem……

MySQL数据归档的几种操作方法介绍

MySQL数据归档的几种操作方法介绍

使用MySQL的过程,经常会遇到一个问题,比如说某张”log”表,用于保存某种记录,随着时间的不断的累积数据,但是只有最新的一段时间的数据是有用的;这个时候会遇到性能和容量的瓶颈,需要将表中的历史数据进行归档。下面来说说几种常见的数据归档方式。 一、使用分区,再利用分区交换技术能够很好地把指定分区中的数据移动到指定表中,这个需要在项目……

MySQL表分区详解

MySQL表分区详解

一、MySQL分区表介绍 分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。 分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。但是并不是所有的存储引擎都支持,如CSV、FEDORATED、……

从原则、方案、策略及难点阐述分库分表

从原则、方案、策略及难点阐述分库分表

一、分库分表原则 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding、分片)。同时,流行的分布式系统中间件(例如MongoDB、ElasticSear……

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或者只……