mysql详解
数据库是什么
数据库是按照结构化组织存储和管理数据的仓库。
数据库的分类
关系型数据 和非关系型数据库
关系型数据库
数据有固定的存储结构 按照库–表--行–列的方式存储,
存储过程 解析sql语句—连接层—磁盘存取—结构化成表。
非关系数据库
以 键值对方式存储数据,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构。尽可能的将数据放到内存当中;
mysql 是什么
mysql是一个关系型数据库管理系统,
SQL 是什么
是数据库 结构化语言 。
什么是表
表是数据库中的数据组成单位,
表的引擎
innoDB 支持数据库的高级处理包括 事物 外键等 默认是innodb
主键
特性:值 不可以为空 也不可以重复,通常用于公司员工的ID号
事务
关系型数据库 支持事务 innoDB 引擎支持
成批的SQL语句操作,要么完全执行,要么不执行,维护数据的完整性。
事务特性
A C I D
原子性
执行事务要么成功 要么失败,只要有一条失败整个事务机会是失败。
一致性
事务执行前是一致的,执行后也是一致的不能破坏数据上的完整型,
比如A用户有1000RMB,B用户也有1000RMB,A用户给B用户转500,那么A用户和B用户的RMB的总额为多少?2000
持久性
事务执行成功后对数据库的修改是永久的。
隔离性
隔离可以防止多个事务并发时导致数据的不一致
事务并发不进行事务隔离
脏读
不可重复读
幻读
事务隔离级别
MySQL 默认 可重复读
串行化 避免脏读 不可重复读 幻读
可重复读 避免脏读 不可重复读
触发器
对一个数据库执行了什么操作,然后自动触发了预先写好的的SQL语句。
作用:起到对数据存储的约束。
存储过程
若干条SQL语句写到一起,类似函数。
MySQL的数据备份方式
MySQLdump工具备份 MySQL官方的 自带的
xtrabackup工具备份 第三方工具
备份分为:冷备 温备和热备
备份的数据集合为 完全备份 增量备份和差异备份
冷备份(脱机备份) :是在关闭数据库的时候进行的
热备份(联机备份) : 数据库处于运行状态,依赖于数据库的日志文件
温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作
逻辑备份:对数据库逻辑组件(如: 表等数据库对象)的备份
完全备份:每次对数据库进行完整的备份
差异备份:备份自从上次完全备份之后被修改过的文件
增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份
需要备份的对象:
数据
配置文件
二进制日志
公司数据备份策略
每星期一和周四晚上12点进行完全备份,
星期二、星期三、星期五、星期六、星期日每日12:00 进行差异备份;
每月10日在测试环境进行备份可用性恢复测试。
MySQL索引
MySQL的读写 比例是10:1 左右 想要加速查询 就需要索引了
索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。
本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。
索引分类
普通索引index :加速查找
唯一索引
主键索引:primary key :加速查找+约束(不为空且唯一)
唯一索引:unique:加速查找+约束 (唯一)
联合索引
-primary key(id,name):联合主键索引
-unique(id,name):联合唯一索引
-index(id,name):联合普通索引
全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
MYSQL优化
1.添加 索引
2.添加 主键和外键
3.使用 InnoDB 引擎
3.做集群
4.优化SQL语句
mysql集群
3M集群介绍
Mysql Monitor agent
3M集群是支持双主故障切换和双主日常管理
虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热。
它实现了 mysql的负载均衡和高可用。
架构
两台 Master 公用一个VIP 两台 slaver 一台一个VIP 一台 Monitor
Moniter 是 监控所有MySQL的工作的,决定和处理所有节点角色活动。
工作原理
mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP;通过监管的管理,这些IP会绑定在可用mysql之上;当某一台mysql宕机时,监管会将VIP迁移至其他mysql