我目前正在使用mySQLdump来备份我的开发机器和服务器。
有一个项目,我刚刚开始,但是,有一个HUUUUGE数据库,我并不真正需要备份,我将是一个大问题,以添加到备份周期的其余部分。
我目前正在做的是:
"c:\Program Files\mysql\MySQL Server 5.1\bin\mysqldump" -u root -pxxxxxx --all-databases > g:\backups\MySQL\mysqlbackup.sql
字符串
是否可以以某种方式指定“除了这个数据库"?
我不想手动指定数据库列表,因为这意味着每次创建新数据库时,我都必须记住更新备份批处理文件,我知道这不会发生。
编辑:正如你可能从我上面的命令行中猜到的,我在Windows上这样做,所以我不能做任何花哨的bash东西,只有wimpy .bat的东西。
或者,如果你有其他的想法来解决这个问题,他们是非常欢迎的,当然!
8条答案
按热度按时间siv3szwd1#
mysql ... -N -e "show databases like '%';" |
grep
-v -F databaseidontwant |
xargs
mysqldump ... --databases > out.sql
j7dteeu82#
字符串
转储除
mysql
、information_schema
、mysql
和db1
之外的所有数据库。或者,如果你想在转储之前查看列表:
echo 'show databases;' | mysql -uroot -proot > databases.txt
个1.编辑
databases.txt
并删除任何你不想转储cat databases.txt | xargs mysqldump -uroot -proot --databases > all.sql
个vyu0f0g13#
呢
--忽略表=数据库名称.tbl名称
不要倾印指定的数据表,必须同时使用数据库和数据表名称来指定。若要忽略多个数据表,请多次使用此选项。
也许您需要指定几个以完全忽略大数据库。
ve7v8dk24#
我创建了以下一行解决方案,避免了多个grep命令。
字符串
grep中的-E启用扩展正则表达式支持,允许提供由管道符号分隔的不同匹配“|mysqldump命令中可以添加更多的选项。但只能在“--databases”参数之前添加。
小边注,我喜欢定义文件名为转储像这样.
型
这将自动添加主机名,日期和时间到文件名。:)
lyr7nygr5#
看到你使用Windows,你应该有PowerShell可供使用。
下面是一个简短的PowerShell脚本,用于获取所有数据库的列表,从列表中删除不需要的数据库,然后使用mysqldump备份其他数据库。
字符串
q5lcpyga6#
创建备份用户,并仅授予该用户对要备份的数据库的访问权限。
您仍然需要记住显式地授予特权,但这可以在数据库中完成,并且不需要编辑文件。
rsl1atfo7#
我花了很多时间才想出这个,但我已经用了几年了,它工作得很好。
字符串
而不是通过管道到mysql,我从serverName移动到Servername2,你可以重定向到一个文件,但这允许我定制我移动的内容。有时我甚至或列表,所以我可以说像'前缀%'等。
deikduxw8#
你可以用这个来生产
它不包括
'performance_schema\|information_schema\|mysql\|sys'
.字符串