mysql备份语句怎么写 mysql备份方式有哪些( 二 )


你可以将整个数据库倾倒进一个单独的文本文件中,如下:
%mysqldump samp_db /usr/archives/mysql/samp_db.1999-10-02
输出文件的开头看起来象这样:
# MySQL Dump 6.0# # Host: localhostDatabase: samp_db#---------------------------------------# Server version 3.23.2-alpha-log## Table structure for table 'absence'#CREATE TABLE absence(student_id int(10) unsigned DEFAULT '0' NOT NULL,date date DEFAULT '0000-00-00' NOT NULL,PRIMARY KEY (student_id,date));## Dumping data for table 'absence'#INSERT INTO absence VALUES (3,'1999-09-03');INSERT INTO absence VALUES (5,'1999-09-03');INSERT INTO absence VALUES (10,'1999-09-08');......
文件剩下的部分有更多的INSERT和CREATE TABLE语句组成 。
如果你想压缩备份 , 使用类似如下的命令:
%mysqldump samp_db | gzip /usr/archives/mysql/samp_db.1999-10-02.gz
如果你要一个庞大的数据库,输出文件也将很庞大 , 可能难于管理 。如果你愿意,你可以在mysqldump命令行的数据库名后列出单独的表名来倾到它们的内容 , 这将倾倒文件分成较小、更易于管理的文件 。下例显示如何将samp_db数据库的一些表倾到进分开的文件中:
%mysqldump samp_db student score event absence grapbook.sql
%mysqldump samp_db member president hist-league.sql
如果你生成准备用于定期刷新另一个数据库内容的备份文件,你可能想用--add-drop-table选项 。这告诉服务器将DROP TABLE IF EXISTS语句写入备份文件 , 然后 , 当你取出备份文件并把它装载进第二个数据库时 , 如果表已经存在 , 你不会得到一个错误 。
如果你倒出一个数据库以便能把数据库转移到另一个服务器,你甚至不必创建备份文件 。要保证数据库存在于另一台主机 , 然后用管道倾倒数据库,这样mysql能直接读取mysqldump的输出 。例如:你想从主机pit-viper.snake.net拷贝数据库samp_db到boa.snake.net,可以这样很容易做到:
%mysqladmin -h boa.snake.net create samp_db
%mysqldump samp_db | mysql -h boa.snake.net samp_db
【mysql备份语句怎么写 mysql备份方式有哪些】以后,如果你想再次刷新boa.snake.net上的数据库,跳过mysqladmin命令,但要对mysqldump加上--add-drop-table以避免的得到表已存在的错误:
%mysqldump --add-drop-table samp_db | mysql -h boa.snake.net samp_db
mysqldump其它有用的选项包括:
? --flush-logs和--lock-tables组合将对你的数据库检查点有帮助 。--lock-tables锁定你正在倾倒的所有表,而--flush-logs关闭并重新打开更新日志文件 , 新的更新日志将只包括从备份点起的修改数据库的查询 。这将设置你的更新日志检查点位备份时间 。(然而如果你有需要执行个更新的客户,锁定所有表对备份期间的客户访问不是件好事 。)
? 如果你使用--flush-logs设置检查点到备份时,有可能最好是倾倒整个数据库 。如果你倾倒单独的文件,较难将更新日志检查点与备份文件同步 。在恢复期间,你通常按数据库为基础提取更新日志内容,对单个表没有提取更新的选择,所以你必须自己提取它们 。
? 缺省地,mysqldump在写入前将一个表的整个内容读进内存 。这通常确实不必要,并且实际上如果你有一个大表,几乎是失败的 。你可用--quick选项告诉mysqldump只要它检索出一行就写出每一行 。为了进一步优化倾倒过程,使用--opt而不是--quick 。--opt选项打开其它选项 , 加速数据的倾倒和把它们读回 。
? 用--opt实施备份可能是最常用的方法 , 因为备份速度上的优势 。然而,要警告你,--opt选项确实有代价 , --opt优化的是你的备份过程 , 不是其mysql备份语句怎么写他客户对数据库的访问 。--opt选项通过一次锁定所有表阻止任何人更新你正在倾倒的任何表 。你可在一般数据库访问上很容易看到其效果 。当你的数据库一般非常频繁地使用,只是一天一次地调节备份 。

推荐阅读