您的位置:首页 > 数据库 > MySQL

Mysql数据备份一(简易备份)

2008-04-29 21:13 260 查看
数据的备份是数据库服务器维护的重要内容,这里介绍几中简易的备份方法:

第一种、直接拷贝数据库目录。
要求:1、数据库类型必须为MYISAM类型
2、在拷贝的过程中不要让用户执行诸如update,delete,insert这样的更新语句。
下面给出具体实例:
如:我的数据库是安装在/usr/local/mysql目录下,数据目录是/usr/local/mysql/data,要备份数据库test,备份文件存放在/backup/目录下,
则按以下几步即可完成。
a、关闭数据库:/usr/local/mysql/bin/mysqladmin -uroot -pxxx shutdown
xxx为你的密码.
b、拷贝并压缩数据库test文件夹
tar -zcvf /backup/test.tar.gz /usr/local/mysql/data/test
c、重新启动数据库服务器
/usr/local/mysql/bin/mysqld_safe --user=mysql&

通过上面三个步骤即可成功把test数据库备份到/backup/目录下.

第二种:使用mysqlhotcopy工具进行数据备份。
第一种方法是最简单的方法,不过要停止数据库服务器的运行,这在很多情况下会影响用户的使用,因此并不常用。使用mysqlhotcopy可以在不用停止mysql服务器的情况下进行数据备份。这种方法也非常简单,只要下面一条语句即可实现把test数据库备份到/backup/目录下
/usr/local/mysql/bin/mysqlhotcopy -uroot -pxxx test /backup/
mysqlhotcopy在执行前将会锁定数据库,执行完毕后将自定释放锁定。
然后在进行压缩:tar -zcvf /backup/test.tar.gz /backup/test

第三种:使用mysqldump工具进行数据备份。
/usr/local/mysql/bin/mysqldump test -uroot -pxxx --opt test>/backup/test.sql
--opt 此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项
然后在进行压缩:tar -zcvf /backup/test.sql.tgz /backup/test.sql

mysqldump工具有大量的选项,部分选项如下:

选项/Option 作用/Action Performed
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF
EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除

--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK
TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作

-c or - complete_insert
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
--delayed-insert 在INSERT命令中加入DELAY选项
-F or -flush-logs 使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-f or -force 使用这个选项,即使有错误发生,仍然继续导出
--full 这个选项把附加信息也加到CREATE TABLE的语句中
-l or -lock-tables 使用这个选项,导出表的时候服务器将会给表加锁。
-t or -no-create- info
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d or -no-data 这个选项使的mysqldump命令不创建INSERT语句。
在您只需要DDL语句时,可以使用这个选项。
--opt 此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。 //from www.w3sky.com
-q or -quick 这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
-T path or -tab = path 这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。
--fields-enclosed-by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下 数据以双引号括起。 默认的情况下数据是没有被字符括起的。
--fields-terminated-by=char 指定各个数据的值之间的分隔符,在句号分隔的文件中, 分隔符是句号。您可以用此选项指定数据之间的分隔符。 默认的分隔符是跳格符(Tab)
--lines-terminated-by=str 此选项指定文本文件中行与行之间数据的分隔字符串 或者字符。 只导出数据时,默认的情况下mysqldump以newline为行分隔符。 您可以选择用一个字符串来替代一个单个的字符: 一个新行或者一个回车。

-w "WHERE Clause" or -where = "Where clause "
如前面所讲的,您可以使用这一选项来过筛选将要放到 导出文件的数据。

假定您需要为一个表单中要用到的帐号建立一个文件,经理要看今年(2004年)所有的订单(Orders),它们并不对DDL感兴趣,并且需要文件有逗号分隔,因为这样就很容易导入到Excel中。 为了完成这个人物,您可以使用下面的句子:
bin/mysqldump –p –where "Order_Date >='2000-01-01'"
–tab = /home/mark –no-create-info –fields-terminated-by=, Orders
这将会得到您想要的结果。

第四种,使用SELECT INTO OUTFILE备份数据.

进入mysql命令客户端,输入以下命令
SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS
TERMINATED BY = ','
FROM Orders
WHERE Order_Date >= '2000-01-01'
在你按了Return(回车)之后,文件就创建了。这个句子就像一个规则的SELECT语句,只是把想屏幕的输出重定向到了文件中。这意味这您可以使用JOIN来实现多表的高级查询。这个特点也可以被用作一个报表产生器。 这里也可以使用fields_enclosed-by= char,fields-terminated-by=char,lines-terminated-by=str 对导出的数据进行规划.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: