摘要: 我们一般采用mysqldump的方式,对于mysql dump,有两种备份方式,一种是形成恢复脚本,这个是默认的备份方式,还有就是生成行数据文件,将来采用load data加载数据,后者速度更快,因此对于逻辑备份,我们建议采用后者,就是mysqldump -T的方式 1、mysqldump备份的时候 阅读全文
posted @ 2019-07-29 19:49 Tech_Shrimp 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 1、开始写redo log往xtrabackup_log文件里(显示为 log scan up to) 2、复制ibd,ibdata 1、不加锁,不断往xtrabackup_log文件里写日志 3、对所有innodb和myisam加读锁,可能会hang住,会出现show tps=0、行锁超时等信息 阅读全文
posted @ 2019-07-29 19:48 Tech_Shrimp 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 1、拷贝数据页 2、myisam表来说,通过锁来实现数据的一致性 3、innodb表来说,使用redolog来实现数据的一致性 4、备份期间的redolog、applylog(备份完成以后马上可以进行applylog)、rollback 5、物理备份需要能够读懂各种info文件 6、备份速度快、恢复 阅读全文
posted @ 2019-07-29 19:33 Tech_Shrimp 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-07-29 19:25 Tech_Shrimp 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 1、数据类型要合理 1、对于数字和日期类型,一般不要采用varchar类型,这个陷阱很容易被接受 1、容易带来隐式类型转换,导致索引失效,例如 where a=123; a是varchar列,实际存储数字类型值 2、容易带来数据质量的下降,例如日期类型 '2019-01-23'、'2019-23-0 阅读全文
posted @ 2019-07-29 19:14 Tech_Shrimp 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 1、确认找到my.cnf,一般位于/etc/my.cnf,对于tar安装的情况,可能没有位于/etc/目录下面,可以找一下/usr/local以及参照公司目录规划 2、cat /etc/my.cnf这个文件 1、basedir,确认MySQL软件位于什么位置,cd进入相关的位置,看一下里面目录和文件 阅读全文
posted @ 2019-07-29 19:12 Tech_Shrimp 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 重做日志(redo log)用来保证事务的持久性。实际上它可以分为以下两种类型:物理Redo日志、逻辑Redo日志;在InnoDB存储引擎中,大部分情况下Redo是物理日志,记录的是数据页的物理变化。而逻辑Redo日志,不是记录页面的实际修改,而是记录修改页面的一类操作,比如新建数据页时,需要记录逻 阅读全文
posted @ 2019-07-29 19:10 Tech_Shrimp 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 1、rollback 1、一个事务开始,生成一个事务id(找事务counter) 2、读取系统事务表,找到一个回滚段(找相对空闲的),读取回滚段的段头块(段头里面有很多行,找到其中空闲的行,把事务id写进去,写进去之后一个事务就开始了,一个事务槽盛放一个事务id,也就是说一个事务开始了需要找到事务槽 阅读全文
posted @ 2019-07-29 19:08 Tech_Shrimp 阅读(639) 评论(0) 推荐(0) 编辑
摘要: redo log 1、redo log属于物理日志,redo log记录格式(数据文件、数据页、数据行、操作类型、操作值) 2、redo log主要用来保护innodb buffer pool中的脏数据页,系统崩溃恢复需要用到redo log, 3、redo log用来进行崩溃恢复事务的前滚;实现快 阅读全文
posted @ 2019-07-28 15:31 Tech_Shrimp 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 事务的四个固有特点 1、innodb支持事务、MyISAM不支持事务,因为这两个引擎是MySQL使用较多的两个引擎 2、事务在语法上就是start transaction;dml、select;commit;(rollback) 3、事务的核心就是ACID,简单就是事务的原子性、事务一致性、事务的隔 阅读全文
posted @ 2019-07-28 15:29 Tech_Shrimp 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1、多版本控制,所谓的多版本,指的是undo中存储着数据行修改前的多个版本,这些版本通过指针依次串联起来,我们可以提供指针依次往前找,一直找到满足我们需要的版本,这中间可能涉及到多个版本,因此称为MVCC;MVCC实现的基础就是UNDO中会存储数据行修改前的值,这个值包括数据以及事务ID和rollP 阅读全文
posted @ 2019-07-28 15:28 Tech_Shrimp 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 大体来说,MySQL分为server层和存储引擎层,server层有连接器、分析器、优化器、执行器和查询缓存; 其中,客户端发出请求与连接器建立连接并获取权限, 分析器对SQL语句做分析并判断是否正确; 优化器决定使用哪个索引,生成执行计划,决定多表连接中表的连接顺序。 执行器执行语句,操作存储引擎 阅读全文
posted @ 2019-07-28 15:27 Tech_Shrimp 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1、mysql为了支持oltp(交易)系统而设计的一个引擎,目前是mysql的默认引擎 2、支持事务,这是oltp最基本的要求,事务支持ACID、原子性、一致性、持久性、隔离性 3、支持行锁,大大提升MySQL的并发性能,但是在资源消耗方面,但并未过多占用内存,只有发生事务锁冲突的时候才会占用内存 阅读全文
posted @ 2019-07-28 15:26 Tech_Shrimp 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 自动创建: 当在CREATE TABLE或者ALTER TABLE语句中定义了一个主键或者唯一键约束时,MySQL自动为它们创建一个唯一索引。主键索引的名字叫primary。唯一键索引的名字一般就是唯一键的第一个列的名字(有单列索引和复合索引)。 手工创建:使用CREATE INDEX或者ALTER 阅读全文
posted @ 2019-07-28 15:25 Tech_Shrimp 阅读(192) 评论(0) 推荐(0) 编辑
摘要: MySQL5.7.11密码破解 系统环镜:rhat 6.5 MySQL版本: rpm包Server version 5.7.11-log MySQL Community Server(GPL)和5.7.14等5,7版本都适用。 应用场景:曾经设置过root用户的图码,但是忘记了需要通过跳过密码授权的 阅读全文
posted @ 2019-06-20 22:18 Tech_Shrimp 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 1,读取lru,找到脏页,写入磁盘 | innodb_lru_scan_depth | 1024 | 2,读取flush list,找到脏页,写入磁盘 | innodb_io_capacity | 200 | | innodb_io_capacity_max | 2000 | 3,log file快 阅读全文
posted @ 2019-06-20 22:11 Tech_Shrimp 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 1——log sequence number字节,从数据库开启到现在已经产生这么多日志了,LSN,日志序列号,单位是字节数,表示当前最新数据产生的日志序列号, 可以计算日志的产生速度:每日日志产生量=今天早上-今天晚上)/24h 也可以做成每小时的日志量趋势图,或者做成每月的趋势图或者每天的,通过趋 阅读全文
posted @ 2019-06-20 22:08 Tech_Shrimp 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 利用行记录里的固定 5 字节的记录头信息里的 deleted_flag 标志位实现了 delete操作减少对 undo 空间的占用: deleted_flag:在删的时候,只是把 deleted_flag 删除标志位改成 1、表示已被删除,等着 purge 线程会去看这个标志位,如果为 1、就清空了 阅读全文
posted @ 2019-06-20 22:02 Tech_Shrimp 阅读(945) 评论(0) 推荐(0) 编辑
摘要: 重做日志记录了事务的行为,可以很好地通过其进行“重做”。但是事务有时还需要撤销,这时就需要undo。undo和redo正好相反,对于数据库进行修改时,数据库不但会产生redo,而且还会产生一定量的undo,即使你执行的事务或语句由于某种原因失败了,或者如果你用一条rollback语句请求回滚,就可以 阅读全文
posted @ 2019-06-20 22:01 Tech_Shrimp 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 在innodb存储引擎中,事务日志通过重做(redo)日志文件和InnoDB存储引擎的日志缓冲(InnoDB Log Buffer)来实现。当开始一个事务时,会记录该事务的一个LSN(Log Sequence Number,日志序列号);当事务执行时,会往InnoDB存储引擎的日志缓冲里插入事务日志 阅读全文
posted @ 2019-06-20 22:00 Tech_Shrimp 阅读(135) 评论(0) 推荐(0) 编辑