MySQL运维篇2——主从复制
主从复制概述 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。 MySQL复制的有点主要包含以下三个方面: 主库出现问题,可以快速切换到从库提供服…
MySQL运维篇1——日志
错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名为mysqld.log(此处我已经改名)。查看日志位置: mysql> sh…
MySQL进阶9——MySQL管理
系统数据库 MySQL数据库安装完成后,自带了一下四个数据库,具体作用如下: mysql 数据库 含义 mysql 存储MySQL服务器正常运行所需要的各种信息(时区、主从、用户、权限等) db:记录性能指标系统库信息 slave*:记录主从复制到相关信息 slow_log:存储慢日志 time*:存储时区操作的相关信息 user:存储MySQL的…
MySQL进阶8——MySQL-InnoDB引擎
InnoDB 逻辑存储结构 表空间(ibd文件):一个MySQL实例可以对应多个表空间,用于存储记录、索引等数据。 Segment段:分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+…
MySQL进阶7——MySQL锁
概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 MySQL中的锁,…
MySQL进阶6——MySQL存储对象之触发器
介绍 触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。 使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发(行…
MySQL进阶5——MySQL存储对象之存储过程
存储过程介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。 特点: 通过封装SQL语句,实现复用; 可以接收参数,也可以返回数据; 减少网络交互,提…
MySQL进阶4——MySQL存储对象之视图
视图介绍及基本语法 介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 语法 1、创建视图 CREATE [OR REPLACE…
MySQL进阶3——MySQL SQL优化
插入数据 insert 优化 采用批量插入:尽量避免少量多次插入,每次插入都需要与数据库建立连接,消耗数据库网络资源。也要避免一次插入太多数据,建议一次插入最多不超过1000条,如果需要插入上万条记录,可以将其分割为多条insert语句。 insert into tb_test values(1,)(2,),(3,),...; 手动事务提交 MyS…
MySQL进阶2——MySQL索引
前言 索引是整个进阶篇中最为核心也最为重要的一个部分,后面的SQL优化很大程度上也是围绕着索引展开。 索引概述 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 在没有…