MySQL · Physical Backup · XtraBackup Backup Principle
PrefacePercona XtraBackup(PXB for short) is a backup tool developed by Percona for MySQL database physical hot standby. It supports MySQl (Oracle), Percona Server and MariaDB, and is all open source, so it’s a real conscience. Our RDS MySQL physical backup is based on this tool.
The blueprint and bug discussion of the project is on Launchpad, and the code was also on Launchpad before, but now it has been migrated to Github percona/percona-xtrabackup), the project is updated and released very fas ...
MySQL 之 mysqldump 备份权限
1.创建一个用于备份数据库的用户mysql> create user 'backup'@'localhost' identified by '123';
2.添加权限2.1 添加 SELECT 权限根据报错,backup用户缺少select权限
[root@private_server ~]# mysqldump -ubackup -p123 -B wordpress > wordpress.sqlmysqldump: Got error: 1044: "Access denied for user 'backup'@'localhost' to database 'wordpress'" when selecting the database
给backup用户添加select权限
mysql> GRANT SELECT ON *.* TO 'backup'@'localhost& ...
MySQL 半同步复制
一、半同步复制1.原理在半同步复制出现之前,虽然异步复制可以满足主从实例之间的数据同步,同时row 格式的binlog也能够大幅度避免主从实例的数据不一致的情况,但是如果碰到主库崩溃,写业务故障切换到从库,将从库提升为主库时,原来的主库上可能有一部分数据还没来得及被从库接收,而事实上这部分丢失的数据可能在主库上已经正常提交完成了。为解决这个问题,在MySQL 5.5版本中引入了半同步复制,半同步复制的关键改进就是当客户端在 主库上写入一个事务时,需要等待从库接收到主库的binlog,且主库接收到ACK确认之后,客户端才能收到事务成功提交的消息,如图
这里有一个小细节需要注意:早期的半同步复制有一个缺陷,在正常的半同步复制流程中,当客户端对主库发起事务提交之后,主库发送binlog给从库,从库接收到binlog并返回ACK,然后主库返回事务提交成功的消息给发起提交的客户端。这里对于发起事务提交的客户端看起来没有任何问题,但实际上在早期的半同步复制中,主库在等待ACK 的InnoDB存储引擎内部已经提交事务,只是阻塞了返回给发起事务提交的客户端消息而已。此时如果有其他会话对该事务修改的数 ...
MySQL 异步复制
一、异步复制原理
主库有一个线程:binlog dump线程。
从库有两个线程:IO线程、SQL线程。
1.异步复制原理
用户对数据的修改进行提交,然后Master(主库)把所有数据库的变更写进binlog中,主库线程binlog dump把binlog内容推送给Slave(从库)。
注意:
启动复制通道后,第一次是从库告诉主库要从哪个位置点或者gtid位执行,然后主库启动一个dump线程,向从库推数据。
从库I/O线程读取主库上的binlog信息,并把binlog写到本地中继日志 (relay log)中。
从库SQL线程读取并解析ralay log内容,按照主库中的提交顺序进行事务回放,写 入本地数据文件中,这样就实现了数据在主从实例之间的同步。
注意:
主库在写入binlog并落盘之后,通知dump线程有新的 binlog 产生,并发送到从库中。然后主库并不理会从库是否接收到binlog,而是自顾自地照常进行事务的提交,如下图。
2.异步复制过程
从库通过执行change master to 语句连接主库,提供了连接的用户一切条件(user 、pas ...
MySQL 高可用架构之 MHA
一、MHA高可用介绍1.简介 MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其它从节点获取额外信息来避免一致性方面的问题。MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。
MHA 是由日本人 yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的 MySQL 高可用方案。MHA 能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性。目前淘宝也正在开发相似产品 TMHA, 目前已支持一主一从。
2.MHA工作原理 当Master出现故障时,通过对比slave之间I/O线程读取master binlog的位置,选取最接近的slave做为 latest slave。 其它slave通过与latest slave对比生成差异中继日志 ...
MySQL 备份与恢复
一、数据库备份的类型按照服务器的运行状态,可分为:冷备、热备、温备。
冷备:数据库处于停机状态下进行备份。
热备:数据库处于运行状态下备份,在热备期间,数据库的读写操作均可正常进行。
在mysql中,MyISAM存储引擎不支持热备,InnoDB存储引擎支持热备。
温备:数据库处于运行状态下备份,但是在温备期间数据库只能进行读操作,不能进行写操作
按照备份后的内容量,可分为:全备、增备、差异备份。
全量备份:对所有数据进行一个完全的备份。
增备备份:对上一次”备份”以后变化的数据的备份。
差异备份:对上一次”全量备份”以后变化的数据的备份。
按照备份的方式,可分为:逻辑备份、物理备份。
逻辑备份:将数据从数据库中导出,并将导出的数据进行存档备份。
物理备份:直接备份数据库所对应的数据文件。物理备份相对逻辑备份来说,性能更强。
二、数据库备份方式在数据库备份当中,一般会采用逻辑备份、物理备份这两种方式对数据库进行备份。
2.1 逻辑备份基于SQL语句进行备份。
常见得逻辑备份方式:
以binlog方式进行备份
使用mys ...
MySQL 日志管理
一、日志简介MySQL数据库中支持多种日志类型,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据,本节内容将带你了解MySQL数据库中的日志管理
二、日志分类
错误日志
查询日志
慢查询日志
二进制日志
中继日志
事务日志
滚动日志
三、日志详解1.错误日志1.1 错误日志作用
记录服务器运行中产生的错误信息
记录服务器启动、停止时产生的信息
如果服务器启动了复制进程,复制进程的信息也会被记录
记录event错误日志
1.2 查看错误日志查看mysql中错误日志的位置
在mysql命令行中查看
mysql> show variables like "log_error";
在bash命令行中使用mysqladmin查看
[root@db01 ~]# mysqladmin -uroot -p123 variables | grep -w "log_error"
1.3 设置错误日志修改mysql的主配置文件/etc/my.cnf,在服务端中添加如下配置:
[root@db01 ...
MySQL 事务详解
1.事务介绍
在 MySQL 中只有使用了 InnoDB 存储引擎的数据库或表才支持事务
事务主要针对DML语句(UPDATE、INSERT、DELETE)
一组数据操作执行步骤,这些步骤被视为一个工作单元
用于对多个语句进行分组
可以在多个客户机并发访问同一个表中的数据时使用
在事务中,所有步骤都执行成功或都执行失败
如果所有步骤正常,则执行
如果步骤出现错误或不完整,则取消
2.事务ACID特性
原子性(Atomicity,或称不可分割性)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性(Consistency)
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。
隔离性(Isolation,又称独立性)
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致 ...
MySQL 表空间管理
1.表空间概念InnoDB 存储引擎可将所有数据存放于 ibdata* 的共享表空间,也可将每张表存放于独立的 .ibd 文件的独立表空间.共享表空间以及独立表空间都是针对数据的存储方式而言的。
MySQL从5.5版本以后出现共享表空间概念,在MySQL5.6版本中默认使用的是独立表空间。
表空间的管理模式的出现是为了数据库的存储更容易扩展。
共享表空间
某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。 默认的文件名为:ibdata1 初始化为10M。
独立表空间
每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。
2.共享表空间2.1 查看共享表空间
物理文件查看
$ cd /usr/local/mysql/data$ ll ibdata*-rw-rw---- 1 mysql mysql 79691776 Jun 17 16:26 ibdata1
在数据库命令 ...
MySQL 多种结构介绍
MySQL 体系结构
连接层
验证用户身份
提供了两种连接方式(TCP/IP连接、socket连接)
建立与SQL层交互的线程
SQL 层
接收连接层传过来的SQL语句,如DDL、DML和存储过程等。并把结果返回给连接层。
验证SQL语句的语法、语义。
解析器:解析SQL语句,最终生成执行计划。
优化器:从多个执行计划中选出最优的一条。
执行器:执行选出来的最优计划。
建立一个与存储引擎层交互的线程。
执行SQL获取存储引擎层传来的数据,结构化成表格。
如果有缓存的化,会把数据写入到缓存。
记录执行日志(binlog)
存储引擎层
接收SQL层传过来的执行语句
与磁盘交互,进行数据的读取、存储,将数据返回给SQL层
MySQL 逻辑结构
库
表:元数据 + 真实数据行
元数据:列 + 其他属性
列:列名 + 数据类型 + 约束(非空、主键、默认值)
MySQL 物理结构数据物理结构mysql最底层就是数据文件,可以手动在data目录下创建目录,数据库中就能看到这个库。
MySQL的最底层的物理结构是数据文件,也就是说与存储引擎层打交道的文件,是 ...