备份与恢复
备份与恢复策略
建立备份
MySQL二进制日志占用磁盘空间。要释放空间,请不时清除它们。执行此操作的一种方法是删除不再需要的二进制日志,例如当我们进行完整备份时:
$> mysqldump --single-transaction --flush-logs --master-data=2 \
--all-databases --delete-master-logs > backup_sunday_1_PM.sql
使用备份进行恢复
完整备份文件只是一组 SQL 语句,因此还原它非常容易:
$> mysql < backup_sunday_1_PM.sql
要恢复从那时起所做的更改,我们必须使用增量备份;即 和 二进制日志文件。如有必要,请从备份文件的位置获取文件,然后按如下方式处理其内容:gbichot2-bin.000007``gbichot2-bin.000008
$> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql
使用 mysqldump 以 SQL 格式转储数据
本节介绍如何使用 mysqldump创建 SQL 格式转储文件。有关重新装入此类转储文件的信息,请参见[第 7.4.2 节 “重新装入 SQL 格式备份”.
默认情况下,mysqldump 将信息作为 SQL 语句写入标准输出。您可以将输出保存在文件中:
$> mysqldump [arguments] > file_name
要转储所有数据库,请使用 --all-databases选项调用 mysqldump
$> mysqldump --all-databases > dump.sql
要仅转储特定数据库,请在命令行上命名它们,然后使用 --databases 选项:
$> mysqldump --databases db1 db2 db3 > dump.sql
--databases选项使命令行上的所有名称都被视为数据库名称。如果没有此选项,mysqldump会将名字视为数据库名称,将后面的名称视为表名称。
重新加载 SQL 格式备份
要重新加载由 mysqldump写入的由 SQL 语句组成的转储文件,请将其用作 mysql客户端的输入。如果转储文件是由 mysqldump使用 --all-databases或 --databases选项创建的,则它包含 CREATE DATABASE 和 USE语句,并且不必指定要将数据加载到的默认数据库:
$> mysql < dump.sql
或者,在mysql中,使用以下命令:source
mysql> source dump.sql
如果文件是不包含 CREATE DATABASE 和 USE语句的单数据库转储,请先创建数据库(如有必要):
$> mysqladmin create db1
然后在加载转储文件时指定数据库名称:
$> mysql db1 < dump.sql
或者,从mysql中创建数据库,选择它作为默认数据库,然后加载转储文件:
mysql> CREATE DATABASE IF NOT EXISTS db1;
mysql> USE db1;
mysql> source dump.sql