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

MySQL学习笔记——备份和恢复

2011-11-22 14:43 495 查看

备份和恢复数据表的方法

为了得到一个一致的备份,在相关的表上做一个LOCK TABLES,你只需一个读锁定,当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表;

当你恢复数据时,需要一个写锁定,以避免冲突。

1、 使用SQL语句进行备份和恢复——这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏,你必须要先恢复原来的表的结构。

备份:select into outfile

假定表tbl_name具有一个PRIMARY KEY或UNIQUE索引,备份一个数据表的过程如下:
(1)、锁定数据表,避免在备份过程中,表被更新
mysql>LOCK TABLES READ tbl_name;
(2)、导出数据
mysql>SELECT * INTO OUTFILE ‘tbl_name.bak’ FROM tbl_name;

(3)、解锁表
mysql>UNLOCK TABLES;

恢复:需要具备使用文件的权限

load data infile

相应的恢复备份的数据的过程如下:
(1)、为表增加一个写锁定:
mysql>LOCK TABLES tbl_name WRITE;
(2)、恢复数据
mysql>LOAD DATA INFILE ‘tbl_name.bak’
->REPLACE INTO TABLE tbl_name;
如果,你指定一个LOW_PRIORITY关键字,就不必如上要对表锁定,因为数据的导入将被推迟到没有客户读表为止:
mysql>LOAD DATA LOW_PRIORITY INFILE ‘tbl_name’
->REPLACE INTO TABLE tbl_name;
(3)、解锁表
mysql->UNLOCAK TABLES;

2、使用mysqlimport恢复数据

(用在shell里面,待理解)

2、 使用mysqldump备份数据(可以备份数据库的表结构,可以备份一个完整的数据库)

a) 如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。

mysqldump --opt database > backup-file.sql
//把数据库导入到backup-file.sql
mysqladmin create target_db_name
//建立新的数据库target_db_name
mysql target_db_name < backup-file.sql
//导入数据到target_db_name

mysqldump [OPTIONS] database [tables]

netstat -an

mysqldump -ukzczuser -pkzcz --opt --default-character-set=utf8 smsota ums_module, ums_role_module, ums_reg, ums_role > ums.bos

shell> mydqldump db_name>db_name.bak

shell>mysql -u root –pmypass db_name>db_name.sql

4、直接拷贝mysql数据库文件:myd、myi、frm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: