我需要备份 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。