我想做mysqldump来备份我的所有数据库。假设我的mysql数据库中发生任何崩溃,那么我将恢复该备份文件。当尝试恢复旧备份时。在进行备份之后,新创建的表仍存在于数据库中。是否有任何选项只能恢复旧数据,并删除所有其他新添加的东西?
我做了以下
$ mysqldump -u root -proot --all-databases > alldb_backup.sql
恢复
$ mysqldump -u root -proot < alldb_backup.sql
答案 0 :(得分:2)
您应该添加--add-drop-database
选项。这将删除现有数据库,以便在导入备份时启动空数据库。
对所有数据库进行MySQL备份:
mysqldump --user=root --add-drop-database --complete-insert --extended-insert \
--verbose --all-databases > alldb_backup.sql
仅备份单个数据库(更易于单独处理):
mysqldump --user=root --add-drop-database --complete-insert \
--extended-insert --verbose mysingledb > mysingledb.sql
要恢复所有数据库,那么:
mysql --user=root -p < alldb_backup.sql
或者恢复单个数据库:
mysql --user=root -p mysingledb < mysingledb.sql
答案 1 :(得分:0)
一种简单的方法,但也许不是最佳解决方案是删除所有数据库 除了mysql,information_schema,test和OLD db的
mysql -uroot -p -e&#34; show databases&#34; | grep -v数据库| grep -v mysql | grep -v information_schema | grep -v test | grep -v OLD | gawk&#39; {print&#34; drop database&#34; $ 1&#34 ;;选择睡眠(0.1);&#34;}&#39; | mysql -uroot -ppassword
然后恢复您的备份
$ mysqldump -u root -proot&lt; alldb_backup.sql