Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101419827
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-04-24 11:05:40

作者:极度深寒   来自:bbs.51cto.com


“没必要进行mysqldump程序备份”说法不完全
采用直接拷贝数据库文件的方式,速度固然快,但你必须保证拷贝时表没有被使用。如果服务器在正在拷贝一个表时改变它,拷贝就失去意义。而且,要用直接拷贝文件把一个数据库从一台电脑拷贝到另一台电脑上时,要确保文件是MyIASM格式或两台电脑有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。你也应该保证在另一台电脑上的服务器在你正在安装数据库表时不访问它们。
而我们通过mysqldump程序备份的文件已不同于原文件的格式了,下面是由mysqldump备份成文本文件的一部分:
# 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语句组成。
当你使用mysqldumo程序产生数据库备份文件时,我们实际上在文件中输入了创建正在倾倒的表的CREATE语句和包含表中行数据的INSERT语句。换句话说,mysqldump产生的输出可在以后用作MySQL的输入来重建数据库。
想备份MySQL数据库直接拷贝数据库文件
假设服务器关闭或已经锁定了你想拷贝的表,下列显示如何将整个samp_db数据库备份到一个备份目录(DATADIR表示服务器的数据目录):
%cd DATADIR
%cp -r samp_db /usr/archive/mysql
单个表可以如下备份:
%cd DATADIR/samp_db
%cp member.* /usr/archive/mysql/samp_db
%cp score.* /usr/archive/mysql/samp_db
.......
但是,值得强调的是:
⒈当使用一种直接备份方法时,你必须保证表不在被使用。如果服务器在你正在拷贝一个表时改变它,拷贝就失去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。
⒉要用直接拷贝文件把一个数据库从一台电脑拷贝到另一台电脑上,只是将文件拷贝到另一台服务器主机的适当数据目录下即可。要确保文件是MyIASM格式或两台电脑有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。你也应该保证在另一台电脑上的服务器在你正在安装数据库表时不访问它们。
实现MySQL数据库备份的方法
使用mysqldump程序备份和拷贝数据库是通常的作法。你可以将整个数据库输入进一个单独的文本文件中,实现如下:
%mysqldump samp_db >/usr/archives/mysql/samp_db.2002-07-24
为了节约空间,你可以进行压缩备份,使用如下的命令:
%mysqldump samp_db | gzip >/usr/archives/mysql/samp_db.2002-07-24.gz 。
阅读(409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~