第11章 数据的备份策略

PAGE 163

PHP实战开发指南

PAGE 176

数据的备份策略

前面介绍了如何在网站系统中保护服务器和系统的安全。在实际应用中,无论对于一个网站系统还是一个企业应用来说,最重要的往往是系统中的数据。在系统运行中不断增多的数据不仅是系统本身的财富,也是使用该系统的企业和用户的财富。保护数据的一个最好的方法是对数据进行定期备份。本章将以对MySQL数据库的备份为例,介绍一下数据的备份策略。

11.1 mysqldump工具介绍

进行数据库备份的一种简单方法是使用MySQL自带的mysqldump工具,该工具可以将数据库中的数据保存在文本文件上。本节将对该工具的用法进行介绍。

11.1.1 单一数据库导出

mysqldump工具可以将数据库的全部或其中的一部分导出到一个文本文件中。在这个文本文件中,包含用于重新创建该数据库中所有数据表以及其他数据库元素的SQL语句,并包含现有数据库中的全部数据。导出一个数据库的语法格式如下所示。

mysqldump [OPTIONS] database [tables]

其中OPTIONS是可选选项,与mysql命令的选项相同。database是指定要备份的数据库,tables是指定要备份的数据表。

下面是一个使用mysqldump对整个数据库进行导出的例子。数据库bak_test下包含一个数据表mytable,并包含有如下数据。

mysql> select * from mytable;
+++++++
| serial_no | name | age | birthday | salary | bonus |
+++++++
| 100001 | Simon | 24 | 1982-11-06 | 5000.00 | 1000.00 |
| 100002 | Elaine | 24 | 1982-01-01 | 5000.00 | 1000.00 |
| 100003 | Susan | 31 | 1975-01-01 | 9000.00 | 2000.00 |
+++++++
3 rows in set (0.01 sec)
以下命令将对上面数据库中的全部数据进行备份。
mysqldump -u root -p pass bak_test > bak_test.txt
其中,参数-u和-p及后面指定的值是用于登录数据库服务器的用户名和密码选项,这与启动mysql命令台的选项相同。bak_test是要导出的数据库,导出后的数据将被放在bak_test.txt中。
命令成功执行后,将可以在bak_test.txt中看到如下内容。
-- MySQL dump 10.10
--
-- Host: localhost Database: bak_test
--
-- Server version 5.0.18-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0
*/;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `mytable`
--
DROP TABLE IF EXISTS `mytable`;
CREATE TABLE `mytable` (
`serial_no` int(6) NOT NULL,
`name` char(10) collate l