日期:2011-05-02 15:44:00 来源:本站整理
MySQL数据库备份(2)[MySQL防范]
本文“MySQL数据库备份(2)[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1 利用MySQLdump备份和拷贝数据库
当你利用mysqldumo程序产生数据库备份文件时,缺省地,文件内容包含成立正在倾倒的表的CREATE语句和包含表中行数据的INSERT语句.换句话说,mysqldump产生的输出可在今后用作mysql的输入来重建数据库.
你可以将整个数据库倾倒进一个单独的文本文件中,以下:
%mysqldump samp_db >/usr/archives/mysql/samp_db.1999-10-02
输出文件的开首看起来象这样:
# MySQL Dump 6.0
#
# Host: localhost Database: 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
今后,假如你想再次革新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优化的是你的备份历程,不是其他客户对数据库的拜候.--opt选项通过一次锁定全部表禁止任何人更新你正在倾倒的任何表.你可在普通数据库拜候上很简单看到其效果.当你的数据库普通非常频繁地利用,只是一天一次地疗养备份.
一个具有--opt的相反效果的选项是--dedayed.该选项使得mysqldump写出INSERT DELAYED语句而不是INSERT语句.假如你将数据文件装入另一个数据库并且你想是这个操作对大概呈目前该数据库中的查询的影响最小,--delayed对此很有帮忙.
--compress选项在你拷贝数据库到另一台机械上时很有帮忙,因为它削减网络传输字节的数目.下面有一个例子,注意到--compress对与远端主机上的服务器通信的程序才给出,而不是对与本地主机衔接的程序:
%mysqldump --opt samp_db | mysql --compress -h boa.snake.net samp_db
mysqldump有很多选项,详见《MySQL参考手册》. 以上是“MySQL数据库备份(2)[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论