我需要使用有关所有用户及其权限和密码的信息备份整个MySQL数据库。
我看到http://www.igvita.com/2007/10/10/hands-on-mysql-backup-migration/上的选项, 但是应该用所有用户,密码和权限以及所有数据库数据备份所有MySQL数据库的选项呢?
只是MySQL的完整备份,因此我可以稍后在另一台机器上导入。
答案 0 :(得分:28)
最基本的,你可以使用的mysqldump命令是:
mysqldump -u$user -p$pass -S $socket --all-databases > db_backup.sql
这将包括mysql数据库,它将包含所有users / privs表。
在生产系统上运行它有一些缺点,因为它可能导致锁定。如果您的表格足够小,可能不会产生重大影响。你会想先测试一下。
但是,如果您运行纯InnoDB环境,则可以使用--single-transaction
标志,该标志将在单个事务中创建转储(获取它),从而防止锁定数据库。请注意,有一些极端情况,转储运行的初始FLUSH TABLES
命令可以锁定表。如果是这种情况,请终止转储并重新启动它。我还建议如果您将其用于备份目的,也可以使用--master-data
标志来获取转储所在的二进制日志坐标。这样,如果需要还原,可以导入转储文件,然后使用mysqlbinlog
命令从进行此转储的位置重放二进制日志文件。
答案 1 :(得分:6)
如果您还要传输存储过程和触发器,则可能值得使用
mysqldump --all-databases --routines --triggers
如果你有主/从复制,你可以转储他们的设置
--dump-slave
和/或--master-data