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

来源:互联网 发布:linux怎么编程 编辑:程序博客网 时间:2024/03/29 21:37
 

备份和恢复数据表的方法

为了得到一个一致的备份,在相关的表上做一个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