MySQL
This commit is contained in:
@@ -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. 准备备份
|
||||
|
||||
|
||||
Reference in New Issue
Block a user