Dan*_*ola 22 windows backup mysqldump
我目前正在使用mySQLdump备份我的开发机器和服务器.
我刚开始有一个项目,它有一个我真的不需要备份的HUUUUUGE数据库,而且将它添加到剩余的备份周期中我将是个大问题.
我现在正在这样做:
"c:\Program Files\mysql\MySQL Server 5.1\bin\mysqldump" -u root -pxxxxxx --all-databases > g:\backups\MySQL\mysqlbackup.sql
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式指定"除了这个数据库"吗?
我不想手动指定DB列表,因为这意味着我必须记住每次创建新数据库时更新我的备份批处理文件,我知道这不会发生.
编辑:你可能从我上面的命令行猜到,我在Windows上这样做,所以我不能做任何花哨的bash东西,只有懦弱的.bat的东西.
或者,如果您有其他想法来解决同样的问题,那么它们非常受欢迎,当然!
小智 25
echo 'show databases;' | mysql -uroot -proot | grep -v ^Database$ | grep -v ^information_schema$ | grep -v ^mysql$ | grep -v -F db1 | xargs mysqldump -uroot -proot --databases > all.sql
Run Code Online (Sandbox Code Playgroud)
转储所有数据库,除了:mysql
,information_schema
,mysql
和db1
.
或者,如果您想在转储之前查看列表:
echo 'show databases;' | mysql -uroot -proot > databases.txt
databases.txt
并删除任何您不想转储的内容cat databases.txt | xargs mysqldump -uroot -proot --databases > all.sql
关于什么
- 忽略表=的db_name.tbl_name
不要转储给定的表,必须使用数据库和表名来指定该表.要忽略多个表,请多次使用此选项.
也许你需要指定一些来完全忽略大数据库.
我创建了以下一行解决方案,避免了多个 grep 命令。
mysql -e "show databases;" | grep -Ev "Database|DatabaseToExclude1|DatabaseToExclude2" | xargs mysqldump --databases >mysql_dump_filename.sql
Run Code Online (Sandbox Code Playgroud)
grep 中的 -E 启用扩展的正则表达式支持,允许提供由管道符号“|”分隔的不同匹配项。可以向 mysqldump 命令添加更多选项。但仅在“--databases”参数之前。
小提示,我喜欢像这样定义转储的文件名......
... >mysql_dump_$(hostname)_$(date +%Y-%m-%d_%H-%M).sql
Run Code Online (Sandbox Code Playgroud)
这将自动将主机名、日期和时间添加到文件名中。:)