This commit is contained in:
罗祥
2019-12-13 17:13:05 +08:00
parent 435659b954
commit 8315420e47
13 changed files with 136 additions and 53 deletions

View File

@@ -26,7 +26,7 @@
**物理备份 与 逻辑备份**
+ 物理备份:备份的是完整的数据库目录和数据文件。由于其基本都是 IO 复制,并不含任何逻辑转换,因此备份和恢复速度通常都比较快。
+ 物理备份:备份的是完整的数据库目录和数据文件。采用该模式会进行大量的 IO 操作,但不含任何逻辑转换,因此备份和恢复速度通常都比较快。
+ 逻辑备份:通过数据库结构和内容信息来进行备份。因为要执行逻辑转换,因此其速度较慢,并且在以文本格式保存时,其输出文件的大小大于物理备份。逻辑备份的还原的粒度可以从服务器级别(所有数据库)精确到具体表,但备份不会包括日志文件、配置文件等与数据库无关的内容。
**全量备份 与 增量备份**
@@ -36,8 +36,8 @@
**在线备份 与 离线备份**
+ 在线备份:数据库服务运行状态下进行备份。此时其他客户端依旧可以连接到数据库,但为了保证数据的一致性,在备份期间必然会存在对数据加锁的操作,此时客户端的访问仍然可能受限。
+ 离线备份:在数据库服务停机状态下进行备份。此备份过程更加简单,但会此时由于无法提供对外服务,通常会对业务造成比较大的影响。
+ 在线备份:数据库服务运行状态下进行备份。此时其他客户端依旧可以连接到数据库,但为了保证数据的一致性,在备份期间可能会对数据进行加锁,此时客户端的访问依然会受限。
+ 离线备份:在数据库服务停机状态下进行备份。此备份过程简单,但由于无法提供对外服务,通常会对业务造成比较大的影响。
### 2.2 备份工具
@@ -74,7 +74,7 @@ options 代表可选操作,常用的可选参数如下:
+ **--password[=password] -p[password]**
指定密码。通常不用在命令行中明文指定,按照提示输出即可。
指定密码。通常无需在命令行中明文指定,按照提示输出即可。
+ **--default-character-set=charset_name**
@@ -82,19 +82,19 @@ options 代表可选操作,常用的可选参数如下:
+ **--events -E**
备份包含包含数据库中的事件。
备份包含数据库中的事件。
+ **--ignore-table=db_name.tbl_name**
不需要进行备份的表,必须使用数据库和表名来指定。也可以作用于视图。
不需要进行备份的表,必须使用数据库和表名来共同指定。也可以作用于视图。
+ **--routines -R**
备份包含包含数据库中的存储过程和自定义函数。
备份包含数据库中的存储过程和自定义函数。
+ **--triggers**
备份包含包含数据库中的触发器。
备份包含数据库中的触发器。
+ **--where='where_condition' -w 'where_condition'**
@@ -108,11 +108,9 @@ options 代表可选操作,常用的可选参数如下:
锁定当前数据库中所有表,能够保证当前数据库中表的一致性,但不能保证全局的一致性。
由于--lock-tables每个数据库的锁表都是单独的因此该选项不保证转储文件中的表在数据库之间在逻辑上是一致的。不同数据库中的表可能会以完全不同的状态转储。
+ **--single-transaction**
此选项会将事务隔离模式设置为 REPEATABLE READ 并开启一个事务,从而保证备份数据的一致性。主要用于事务表,如 InnoDB 表。 但是此时仍然不能在备份表上执行 ALTER TABLE CREATE TABLE DROP TABLE RENAME TABLE TRUNCATE TABLE 等操作,因为 REPEATABLE READ 隔离并不能隔离这些操作。
此选项会将事务隔离模式设置为 REPEATABLE READ 并开启一个事务,从而保证备份数据的一致性。主要用于事务表,如 InnoDB 表。 但是此时仍然不能在备份表上执行 ALTER TABLE CREATE TABLE DROP TABLE RENAME TABLE TRUNCATE TABLE 等操作,因为 REPEATABLE READ 并不能隔离这些操作。
另外需要注意的是 --single-transaction 选项与 --lock-tables 选项是互斥的,因为 LOCK TABLES 会导致任何正在挂起的事务被隐式提交。转储大表时,可以将 --single-transaction 选项与 --quick 选项组合使用 。
@@ -256,6 +254,8 @@ yum install percona-xtrabackup-80
### 4.2 全量备份
全量备份的具体步骤如下:
#### 1. 创建备份
Xtrabackup 全量备份的基本语句如下,可以使用 target-dir 指明备份文件的存储位置parallel 则是指明操作的并行度:
@@ -266,7 +266,7 @@ xtrabackup --backup --user=root --password --parallel=3 --target-dir=/data/bac
以上进行的是整个数据库实例的备份,如果需要备份指定数据库,则可以使用 --databases 进行指定。
另外一个容易出现的异常是Xtrabackup 在进行备份时,默认会去 `/var/lib/mysql/mysql.sock` 文件里获取数据库的 socket 信息,如果你修改了数据库的 socket 配置,则需要使用 --socket 参数进行重新指定,否则会抛出找不到连接的异常。备份完整后需要立即执行的另外一个操作是 prepare。
另外一个容易出现的异常是Xtrabackup 在进行备份时,默认会去 `/var/lib/mysql/mysql.sock` 文件里获取数据库的 socket 信息,如果你修改了数据库的 socket 配置,则需要使用 --socket 参数进行重新指定,否则会抛出找不到连接的异常。备份完整后需要立即执行的另外一个操作是 prepare
#### 2. 准备备份