数据库三(备份与还原的几种基本操作)
数据的备份与恢复(在根目录下去重启备份数据,不过感觉说得不太清楚,有空再看看旧书;)
方法一:在备份前停掉MySQL服务(在资源管理器中),在操作系统基表备份数据库
文件,备份MySQL安装目录下的data文件中的数据库文件。重启MySQL服务,
备份重启以后生成的binlog。用mysqlbinlog恢复来自备份的binlog。
(在根目录下备份)
说明:在此之前要对相关的数据表进行上锁操作,即执行LOCK TABLES。
如:lock tables student read;//对某数据库中的Student表先上一个读锁。
目的:当数据库目录中做文件被拷贝时,还允许其他线程继续查询表;当数据
恢复时,需要做一个写锁定,以免冲突。(上锁,安全有序)
方法二:用SQL语句备份和恢复(用sql语句将库中表的备份和恢复)
语法结构:select * into {OUTFILE | DUMPFILE} file_name FROM tb1_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE file_name.txt
[REPLACE | IGNORE] INTO TABLE tb1_name//这有个缺点,必须要表结构完整
例子1:备份course表,而且该表有一个primary key或unique索引。
step1:锁定数据表,避免在备份过程中表被更新。mysql>lock tables course read;
step2:导出数据。 mysql>select * into outfile ‘course.bak’ from course;
step3:解锁表。 unlock tables;
例子2:恢复course表的备份
step1:为表增加一个写锁定。 mysql>lock tables course write;
step2: 恢复数据。 mysql>load data infile ‘coursee.bak’
replace into table course;
mysql>load data low_priority infile ‘coursee.bank’
replace into table course;
//若指定了 low_priority,就不必上锁
step3:解锁表。 mysql>unlock tables;
方法三:使用mysqlimport恢复数据(shell上恢复数据)
shell>mysqlimport[options] db_name filename…
例子:恢复数据库db1中的表tbl1的数据,保存数据的文件为tbl1.bak,在服务器主机上恢复过程如下:
shell>mysqlimport———lock—tables—replace db1 tbl1.bak
//在恢复数据之前对表锁定或用low-priority选项:shell>mysqlimport——low——priority—replace db1.bak
方法四:用mysqldump备份数据(服务器、客户机上备份数据库)
mysqldump db_name //在服务器上备份数据
mysql -u root - pmypass db_name>db_name.sql // 在客户机备份数据库
多练习和总结,否则和复制过来的没有区别;