Welcome 微信登录

首页 / 数据库 / MySQL

XtraBackup工具原理及安装

XtraBackup工具原理及安装

XtraBackup是基于InnoDB存储引擎灾难恢复的。它复制InnoDB的数据文件,尽管数据文件在内部是非一致性的,但在执行灾难恢复时可以保证这些数据文件是一致的,并且可用。官方原理在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件。事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的事务日志到数据文件,并将修改过但没有提交的数据进行...
MySQL5.6在线DDL更改表测试

MySQL5.6在线DDL更改表测试

MySQL5.6在线DDL更改表测试,首先我们在这里普及下基础知识:在之前的版本,在线更改表,比如增加一个字段,其内部原理是这样的:1、create table tmp like t1(创建一个临时表)2、insert into tmp select * from t1(一行行的把原表数据拷贝到临时表里,且更新索引)3、drop table t1;rename table tmp to t1(删除原表并把临时表改名为原表t1)在这个过程中会对t1表加S锁(...
pt-online-schema-change使用说明、限制与比较

pt-online-schema-change使用说明、限制与比较

如果正在看这篇文章,相信你已经知道自己的需求了。在 mysql 5.5 版本以前,修改表结构如添加索引、修改列,需要锁表,期间不能写入,对于大表这简直是灾难。从5.5特别是5.6里,情况有了好转,支持Online DDL,相关介绍见 这篇文章,而我在实际alter table过程中还是会引起 data meta lock 问题。pt-online-schema-change是Percona-toolkit一员,通过改进原生ddl的方式,达到不锁表在线修改表...
MySQL 5.6 原生Online DDL解析

MySQL 5.6 原生Online DDL解析

做MySQL的都知道,数据库操作里面,DDL操作(比如CREATE,DROP,ALTER等)代价是非常高的,特别是在单表上千万的情况下,加个索引或改个列类型,就有可能堵塞整个表的读写。然后 mysql 5.6 开始,大家期待的Online DDL出现了,可以实现修改表结构的同时,依然允许DML操作(select,insert,update,delete)。在这个特性出现以前,用的比较多的工具是pt-online-schema-change,比较请参考pt-...
使用pt-online-schema-change修改主键时注意

使用pt-online-schema-change修改主键时注意

使用 pt-online-schema-change 做在线ddl最添加普通索引、列,修改列类型、添加默认值等使用比较常规,但涉及到要修改的是主键时就有点棘手。在我修改线上实例过程中,有这样的需求,不妨先思考一下怎么做才好:1原表上有个复合主键,现在要添加一个自增id作为主键,如何进行会涉及到以下修改动作:删除复合主键定义添加新的自增主键原复合主键字段,修改成唯一索引如果你够聪明,应该会把这三个操作放在同一个 alter table 命令执行。percon...
RDS MySQL 表上 Metadata lock 的产生和处理

RDS MySQL 表上 Metadata lock 的产生和处理

1. Metadata lock wait 出现的场景创建、删除索引修改表结构表维护操作(optimize table、repair table 等)删除表获取表上表级写锁 (lock table tab_name write)注:支持事务的 InnoDB引擎表和 不支持事务的 MyISAM 引擎表,都会出现 Metadata Lock Wait 等待现象。一旦出现 Metadata Lock Wait 等待现象,后续所有对该表的访问都会阻塞在该等待上,导...
innobackupex的备份和恢复

innobackupex的备份和恢复

1 原理分3个阶段:备份backup – 预恢复prepare -- 恢复restore注:复制innodb表文件时可能包含不完整事务,需要prepare将其变为consistent首先复制所有的Innodb数据文件,这样复制出来的文件肯定是不一致的,然后对每个文件进行崩溃恢复处理,最终达到一致.XtraBackup在启动的时候会记录一个LSN(log sequence number),然后就把所有的Innodb数据文件复制出来,这样复制出来的...
如何查看MySQL执行计划

如何查看MySQL执行计划

介绍下怎么查看MySQL执行计划前,我们先来看个后面会提到的名词解释:覆盖索引: MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index) 如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降EXPLAIN查看执行计划的一些局限:EXPLAIN不会告诉你关于触...
MySQL中索引和优化的用法总结

MySQL中索引和优化的用法总结

1、什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度。如果数据量很大,大的查询要从硬盘加载数据到内存当中。2、InnoDB中的索引原理是怎么样的? InnoDB是Mysql的默认存储引擎,InnoDB有两种索引:B+树索引和哈希索引,其中哈希索引是自适应性的,存储引擎会根据表的使用情况,自动创建哈希索引,不能人为的干涉。 B树、B-树、B+树、B*树四种数据结构在索引中的运用,这四种数据结构的顺序必须是这样的。分别阐述如下:B...
Data Guard高级应用:通过闪回恢复failover备库

Data Guard高级应用:通过闪回恢复failover备库

今天看到有一个网友提了一个问题,描述很简短测试DG时,主库不能宕机,如何测试failover?其实这个需求从业务层面来说是合理的,一个数据量很大的核心数据库,如果需要做灾难演练,就希望在备库上做一下演练工作,而这个演练其实又不想影响到目前的主库,而且又希望能够尽可能模拟真实的情况,我想这样对于运维部门来说是最具有考核力度,而对于开发业务部门来说是最受欢迎的,因为他们什么都不需要改动。而从技术角度来看,似乎有一些地方需要考量,如果备库Failover为主库,...
MySQL主从同步校验与重新同步

MySQL主从同步校验与重新同步

主从复制环境中,可能有种种原因导致主、从库数据不一致的情况,主从一致性也一直是DBA需要关注的问题,校验MySQL的主从一致性一般有多种工具,诸如MySQL自带的checksum、mysqldiff、pt-table-checksum等,每种工具各有优缺,本文就pt-table-checksum工具进行介绍和记录实验环节。下载二进制版本的percona-toolkit工具箱https://www.percona.com/downloads/percona-...
<< 941 942 943 944 945 946 947 948 949 950 >>