如何在 CentOS 中从命令行备份 MySQL 数据库?

如何在 CentOS 中从命令行备份 MySQL 数据库?

我需要备份 CentOS 5.5 上的数据库,从命令行运行 MySQL 服务器。基本上我需要导出其中的所有内容。

答案1

mysqldump——阅读手册页了解详情。

请注意,生成完整的备份文件可能需要一些时间 - 如果您想要一致的备份,则请考虑设置复制从属(并在备份时关闭复制)。

答案2

如果你有一个大型数据库,你想在备份期间保持在线(即不读锁),你也可以考虑创新备份该脚本使用来自 percona 的 xtrabackup,支持 inno 和 myisam 的在线备份(在一定程度上保持一致)

Zmanda 有一个 ZRM 管理器产品,它包装该mysqldump工具并结合调度程序和报告代理,方便管理 cron 作业和恢复。

xtrabackup 管理器也是一个命令行工具,它包装调用并在一定程度上管理调度...... http://code.google.com/p/xtrabackup-manager/

还有荷兰,另一个命令行 mysql 备份包装器,支持多种后端。

从@symcbean开始,这是我尝试对系统进行一致的命令行转储,使用混合的 myisam 和 innodb 引擎配置......(这显然会使您的数据库在完成之前处于只读状态,并且任何 INSERT/UPDATE/DELETE 查询都将被阻止等)

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

#--single-transaction is only useful if all the tables are innodb
SYSTEM mysqldump --lock-all-tables --quick --all-databases > all-databases.sql

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

需要注意的是,GLOBAL read_only 不尊重 root 用户,因此如果您以 root 身份运行 Web 应用程序,那么您必须确保它们也已停止。

此外,如果您的文件系统是 xfs,或者在 LVM 上,您可以使用本机 fs 工具在 fs 级别获取读锁,从而无需数据库级别锁定。例如对于 xfs;

SYSTEM xfs_freeze

对于 lvm,有 dmsetup。

答案3

使用mylvm备份拍摄文件系统快照或(如果数据库较小)mysqldump获取 SQL 转储。我不建议mysqldump用于大型数据集。

还,mysql热复制非常适合 MyISAM。

对于 InnoDB 尝试热备份,但需要花费一些钱。

相关内容