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