05 2018 档案

摘要:Ⅰ、锁的概念 1.1 锁的作用 对共享资源进行并发访问 提供数据的完整性和一致性 1.2 锁的实现 每个数据库的锁的实现完全不同 MyISAM表锁 InnoDB行级锁 Like Oracle???不一样 Microsoft SQL Server 行级锁with锁升级 行锁超过5000个就升级为行级锁 阅读全文
posted @ 2018-05-31 20:20 91洲际哥 阅读(523) 评论(0) 推荐(0) 编辑
摘要:Prometheus越来越火了,大家都在玩,方方面面都不错! Ⅰ、核心组件介绍 Prometheus Server 获取、存储监控数据并对外提供查询,针对监控目标有两种方式(配置文件静态管理和服务发现动态管理) Exporters Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Pr 阅读全文
posted @ 2018-05-29 11:01 91洲际哥 阅读(396) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、MVCC介绍 consistent non locking read,通过行多版本控制的方式读取当前执行时间点的记录 默认情况下innodb select没有任何锁,读到的记录在更新就通过undo读之前版本,serializable时候读会被阻塞,因为它默认加一个lock in share mo 阅读全文
posted @ 2018-05-22 23:25 91洲际哥 阅读(464) 评论(0) 推荐(0) 编辑
摘要:undo log记录的内容是逻辑的(基于每条记录),redo log记录的是物理的(基于page),rollback是逻辑上的回滚 Ⅰ、UNDO对象 从底层来看非常复杂 |对象|说明| |: :|: :| |rollback segment|回滚段| |undo log segment undo|u 阅读全文
posted @ 2018-05-22 00:28 91洲际哥 阅读(471) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、binlog与redo的一致性(原子) 由内部分布式事务保证 我们先来了解下,当一个commit敲下后,内部会发生什么? |步骤|操作| |: :|: :| |step1|InnoDB做prepare redo log(fsync)| |step2|Sever层写binlog(fsync)| | 阅读全文
posted @ 2018-05-21 02:13 91洲际哥 阅读(522) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、事务的实现 这里我们先抛出答案,通过答案再展开分析 |特性|实现| |: :|: :| |A(原子性)|redo| |C(一致性)|undo| |I(隔离性)|lock| |D(持久性)|redo/undo| 本节针对redo展开分析 Ⅱ、redo详解 2.1 redo log buffer r 阅读全文
posted @ 2018-05-20 19:04 91洲际哥 阅读(530) 评论(0) 推荐(0) 编辑
摘要:上一篇咱们简单了解了事务,这一篇我们再深入一下吧 Ⅰ、事务隔离级别 事务一共有四种隔离级别 |简称|全称| | |: :|: :|: :| |ru|read uncommited|未提交读| |rc|read committed|提交读| |rr|repeatable read|可重复读| |srz 阅读全文
posted @ 2018-05-20 18:58 91洲际哥 阅读(331) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、事务概述 事务是一个程序的执行单元 事务由一组sql组成(可以是1条或者多条) tips: 一个事务可以有多条sql组成,tps是每秒的事务量,仅仅通过tps判断业务量高和低是不太准确的,如果事务里面sql比较多,即使tps比较低,那实际qps又是比较高的 Ⅱ、事务的特性 大家都知道事务的特性叫 阅读全文
posted @ 2018-05-20 02:44 91洲际哥 阅读(315) 评论(0) 推荐(0) 编辑
摘要:本人菜鸡一个,一份简单MySQL笔记送给大家,希望大家喜欢、(●'◡'●) Ⅰ、 数据备份与导入导出 [1.1、备份基本概念介绍][1] [1.2、mysqldump详解][2] [1.3、mydumper浅析][3] [1.4、MySQL物理备份基本操作][4] [1.5、了解mysqlpump工 阅读全文
posted @ 2018-05-19 23:14 91洲际哥 阅读(1862) 评论(3) 推荐(0) 编辑
摘要:Ⅰ、double write 目的:保证数据写入的可靠性 小知识: 什么是partial write? 16k的page只写入了4k,6k,8k,12k就断掉了的情况 corrupt的page就是page的header更新了但是trailer没更新 这种page不可以通过redo log进行恢复(通 阅读全文
posted @ 2018-05-05 01:08 91洲际哥 阅读(607) 评论(0) 推荐(1) 编辑
摘要:Ⅰ、Checkpoint 1.1 checkpoint的作用 缩短数据库的恢复时间 缓冲池不够用时,将脏页刷到磁盘 重做日志不可用时,刷新脏页 1.2 展开分析 page被缓存在bp中,page在bp中和disk中不是时刻保持一致的(page修改一下就刷一次盘是不现实的,是通过checkpoint来 阅读全文
posted @ 2018-05-05 01:02 91洲际哥 阅读(1547) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、看下所有后台线程 异步读写由下面两个参数控制 innodb_read_io_threads 不建议调整,读取基本上很少是异步,调大没太大意义 innodb_write_io_threads 可以调大一点,因为数据库写入都是异步的,默认是4,调成8或者16,特别是ssd的情况下 Ⅱ、脏页刷新 in 阅读全文
posted @ 2018-05-05 01:01 91洲际哥 阅读(418) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、想起一个报错 1.1 创建表报错 (root@localhost) [(none)] create tablespace ger_space add datafile 'ger_space.ibd' file_block_size=8192; Query OK, 0 rows affected 阅读全文
posted @ 2018-05-05 00:58 91洲际哥 阅读(857) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、缓冲池介绍 innodb存储引擎缓冲池(buffer pool) ,类似于oracle的sga,里面放着数据页 、索引页 、change buffer 、自适应哈希 、锁(5.5之前)等内容 综上所示: 每次读写数据都是通过Buffer Pool 当Buffer Pool中没有用户所需要的数据时 阅读全文
posted @ 2018-05-05 00:51 91洲际哥 阅读(4655) 评论(0) 推荐(2) 编辑
摘要:Ⅰ、无主键的一个小测试 1.1 表上存在唯一键 (root@localhost) [test] show create table test_key\G 1. row Table: test_key Create Table: CREATE TABLE ( int(11) DEFAULT NULL, 阅读全文
posted @ 2018-05-05 00:49 91洲际哥 阅读(386) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、通用表空间的使用 需求: 指定存储路径创建一张表 方案一:指定data directory [root@VM_0_5_centos mdata] mkdir /mdata/general [root@VM_0_5_centos mdata] chown mysql.mysql /mdata/ge 阅读全文
posted @ 2018-05-05 00:45 91洲际哥 阅读(379) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、InnoDB发展史 |时间|事件|备注| |: :|: :|: :| |1995|由Heikki Tuuri创建Innobase Oy公司,开发InnoDB存储引擎|Innobase开始做的是数据库,希望卖掉该公司| |1996|MySQL 1.0 发布|| |2000|MySQL3.23版本发 阅读全文
posted @ 2018-05-05 00:15 91洲际哥 阅读(605) 评论(0) 推荐(0) 编辑
摘要:首先声明一下,双主这种架构个人不怎么喜欢,所以这里只做简单说明与吐槽 Ⅰ、双主架构介绍 M/S(A) S/M(B) 为什么要这么做呢?有什么意义呢? 我也不知道 Ⅱ、双主搭建 这样就可以双写了,带有自增的insert没问题 但极力不推荐 Ⅲ、双写存在的问题 3.1 不好的第一点 一张表上如果有唯一索 阅读全文
posted @ 2018-05-04 22:42 91洲际哥 阅读(524) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、认识半同步 我们目前MySQL默认的复制模式是异步复制,主不关心从的数据到哪里了,主宕了,做切换,如果从落后太多,就会导致丢失的数据太多 从5.5版本开始,MySQL引入了半同步复制 简单理解:一个事务提交时,日志至少要保证有一个从接收到,那么它的提交才能继续 到5.7版本,在原来半同步的基础上 阅读全文
posted @ 2018-05-04 22:41 91洲际哥 阅读(550) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、GTID的介绍 global transaction id identifier 全局事务id gtid = server_uuid + transaction_id server_uuid是全局唯一的,5.6开始才有,表示当前实例的uuid,保存在数据目录中的auto.conf文件中 tran 阅读全文
posted @ 2018-05-04 22:41 91洲际哥 阅读(450) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、多源复制 1.1 多源复制的应用场景 多个数据库实例的数据需要合并统计分析 多个实例的数据放到一台机器备份 1.2 多源复制的限制 MySQL5.7.6开始才支持多源复制 一个从库最多支持64个主库 每多一个主,从上会多创建两个slave线程 每个主库server_id必须不一致 多源复制只能有 阅读全文
posted @ 2018-05-04 22:41 91洲际哥 阅读(397) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、背景 搭建MySQL复制环境非常简单 你的系统是否也是像我之前那么搭建的呢? 那么,你的复制系统是否出现过以下的情况呢? 复制报错,例如:1062,1032 主从数据不一致 Ⅱ、真正高可靠复制环境相关配置(crash safe replication) Ⅲ、sql/io高可靠 3.1 sql线程 阅读全文
posted @ 2018-05-04 22:40 91洲际哥 阅读(493) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、复制类型 1.1 逻辑复制 记录每次逻辑操作 主从数据库可以不一致 1.2 物理逻辑复制 记录每次对于数据页的操作 主从数据物理严格一致 基于重做日志 说明: 如果一个块(页)修改了,就把这个修改发到远端 主从两端不仅仅是数据一致,而是物理上的一致,页都是一样的 1.3 复制选型与对比 简单的主 阅读全文
posted @ 2018-05-04 22:38 91洲际哥 阅读(450) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、binlog定义和作用 1.1 定义 记录每次数据库的逻辑操作(包括表结构变更和表数据修改) 包含:binlog文件和index文件 1.2 作用 复制:从库读取主库binlog,本地回放实现复制 备份恢复:最近逻辑备份数据+binlog实现最大可能恢复 innodb恢复:开启binlog的情况 阅读全文
posted @ 2018-05-04 22:36 91洲际哥 阅读(825) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、bonlog server介绍 对于binlog的备份,之前文章里说的是有从机,一般不备份,那现在人家就是 要备份嘛,怎么办嘛, 写个脚本每天夜里去把前一天产生的binlog拷贝出来可以不? 行啊,没问题,你可以的,但你这个一下子整会不会有点累嘛 从5.6版本开始,我们有更好的办法了,用mysq 阅读全文
posted @ 2018-05-04 22:29 91洲际哥 阅读(484) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、传统姿势 这种方法需要提前设置一个参数 secure_file_priv |value|meaning| |: :|: :| |NULL|不允许导入导出| |''|可以导入到任何地址| |'/tmp'|导入到具体地址| 这个参数是只读参数,只能修改my.cnf后重启 做这种操作需要file权限 阅读全文
posted @ 2018-05-04 22:28 91洲际哥 阅读(362) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、背景 早先操作数据误操作后,我们一般通过全量备份+binlog的方式来实现恢复(前滚) 有时只想撤销一个几分钟前的操作,采用这种方式就会显得很笨重 大家都知道Oracle有个叫做flashback的功能,很遗憾MySQL官方并没有提供类似的工具 但姜老师的innosql中实现了这个功能,而且还兼 阅读全文
posted @ 2018-05-04 22:28 91洲际哥 阅读(542) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、功能分析 1.1 多线程介绍 mysqlpump是MySQL5.7的官方工具,用于取代mysqldump,其参数与mysqldump基本一样 mysqlpump是多线程备份,但只能到表级别,单表备份还是单线程 mysqldump备份时,有个默认队列(default),队列下开N个线程去备份数据库 阅读全文
posted @ 2018-05-04 22:27 91洲际哥 阅读(1889) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、xtrabackup介绍 xtrabackup只能备份innodb引擎的数据,不能备份表结构,percona开源的,强烈推荐最新版本(旧版本bug多) innobackupex可以备份myisam和innodb两种引擎的数据和表结构,一般用这个 备份时,默认读取MySQL配置文件(datadir 阅读全文
posted @ 2018-05-04 22:24 91洲际哥 阅读(1617) 评论(0) 推荐(1) 编辑
摘要:Ⅰ、背景 mysqldump单线程备份,很慢 恢复慢,一张表一张表恢复, 如果备份了100G的数据,想恢复其中一个表,做不到(所有的表都在一个文件里) 所以推荐使用mydumper备份 备份并行,基于行,即使一张表也能并行,好强呐 恢复也是并行 恢复的时候可以只恢复指定表 完美( ^__^ ) Ⅱ、 阅读全文
posted @ 2018-05-04 22:23 91洲际哥 阅读(733) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、mysqldump的简单使用与注意点 1.1 基本参数 只备份innodb,用不了几个参数,记住下面几个即可,其他的没什么卵用 常见用法: 1.2 其他参数 1.3 重点 my.cnf中配上下面配置 Ⅱ、mysqldump实现原理剖析 2.1 开glog嗖哈一把看看嘛( ^__^ ) sessi 阅读全文
posted @ 2018-05-04 22:22 91洲际哥 阅读(5734) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、备份类型 这里介绍三种全量备份 热备(hot backup) 在线备份 对应用基本无影响(应用程序读写不会阻塞,但是性能还是会有下降,所以尽量不要在主上做备份,在从库上做) 冷备(cold backup) 备份数据文件,需要停机 备份datadir目录下的所有文件 只拷贝这个目录可以吗?实际un 阅读全文
posted @ 2018-05-04 18:07 91洲际哥 阅读(660) 评论(0) 推荐(0) 编辑