如何使用所有用户和权限和密码备份整个MySQL数据库?

时间:2011-10-21 10:32:16

标签: mysql mysqldump

我需要使用有关所有用户及其权限和密码的信息备份整个MySQL数据库。

我看到http://www.igvita.com/2007/10/10/hands-on-mysql-backup-migration/上的选项, 但是应该用所有用户,密码和权限以及所有数据库数据备份所有MySQL数据库的选项呢?

只是MySQL的完整备份,因此我可以稍后在另一台机器上导入。

2 个答案:

答案 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