$ mysqldump -h localhost -u username -p database_name > backup_db.sql
我可以使用上面的行,但它只是针对服务器中的一个数据库,我可以将所有数据库的完整备份到一个备份文件中吗?
或者是否存在一些命令可以序列化这个过程?
类似下面的内容(我添加了-all,这很可能是错误的):
$ mysqldump -u username -h localhost -p -all | gzip -9 > backup_db.sql.gz
谢谢。
答案1
使用 --all-databases 选项,它会导致所有数据库中的所有表都被转储:
mysqldump -u username -h localhost -p --all-databases > all_databases.sql
答案2
此外,我建议设置一个 my.cnf 文件,以便您的密码在进程列表中不可见。 看一下这个. 它将帮助您并防止您的 SQL DB 被任何可能有权访问您系统的人入侵。
答案3
我建议使用 LVM 快照来备份“所有数据库”,因为锁定时间可能很长。但是,由于没有调查使用字符串或“ man mysql<^M>/all
”,我觉得提出这样的建议可能不负责任。
~$ mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help