mysql 备份与还原(一)

来源:互联网 发布:论文相似性检测软件 编辑:程序博客网 时间:2024/06/06 00:56

逻辑备份和还原

1. 使用mysqldump备份

在mysql安装目录下 bin/下输入已下命令
1.1 导出数据库的指定表

mysqldump -u username -ppassword  database [table] [table2] > file_path

1.2 只导出表结构 -d

mysqldump -u username -ppassword -d database [table] [table2] > file_path

1.3 导出所有数据库 –all-databases

mysqldump -u username -ppassword  --all-databases  > file_path

1.4 导出多个数据库 –databases

mysqldump -u username -ppassword  --databases dbname dbname2 > file_path

1.5 导出多个库的多个指定表

请留言告诉我

系统正常运行过程中,很可能会不断有数据变更的请求正在执行,这样就可能造成在mysqldump备份出来的数据不一致。也就是说备份数据很可能不是同一个时间点的数据, 而且甚至可能都没办法满足完整性约束。这样的备份集对于有些系统来说可能并没有太大问题, 但是对于有些对数据的一致性和完整性要求比较严格系统来说问题就大了,就是一个完全无效的备份集。
对于如此场景,我们该如何做?我们知道,想数据库中的数据一致,那么只有两种情况
下可以做到。
第一、同一时刻取出所有数据;
第二、数据库中的数据处于静止状态

《mysql性能调优与架构设计》该书提供了两种解决方案,
第一种可以使用事物来做到模拟同一时刻取出数据,这要求存储引擎支持事物 ,例如innodb ,通过–single-transaction参数,如:

mysqldump -u username -ppassword --all-databases --single-transaction> file_path

第二种则为将数据在备份时对表进行锁定,仅提供查询服务,通过参数 –lock-tables 和 –lock-all-tables 如:

mysqldump -u username -ppassword -d database [table] [table2] --lock-tables> file_pathmysqldump -u username -ppassword -d --all-databases --lock-all-tables > file_path

这两者的区别在于 前者一次只会锁定一个数据库的表,对于多个数据库同时备份,则需要使用后者。

2.导入备份

2.1 导入备份的 过程比较简单,首先登陆mysql,然后再输入如下命令

source file_path;

2.2 若想一次导入多个文件,可以添加add_more.sql脚本如下:

add_more.sql文件中写入要执行的文件 :

source file_path1 ;source file_path2 ;   ......

然后执行 add_more.sql,同2.1 :

source add_more.sql;

3.逻辑备份的优点

3.1 恢复备份数据时不会影响不相关数据
3.2 通过全库的逻辑备份,可以在新的环境下重建相同的数据库
3.3 可以选取恢复想要的一部分数据而不是全部恢复

0 0
原创粉丝点击