我需要在CentOS 5.5上备份一个数据库,从命令行运行MySQL服务器。 基本上我需要导出所有内容。
mysqldump – 阅读手册页的细节。
请注意,生成完整备份文件可能需要一些时间 – 如果您需要一致的备份,请考虑设置复制从属服务器(并在进行备份时closures复制)。
如果你有一个大型的数据库,你想在备份期间保持在线(即不读取locking),你也可以考虑innobackupex脚本,它使用来自percona的xtrabackup,它支持inno和myisam的在线备份(达到某种程度的一致性)
Zmanda有一个ZRMpipe理器产品,它包装了mysqldump工具,并结合了一个调度程序和报告代理,便于pipe理cron作业和恢复。
xtrabackuppipe理器也是一个命令行工具,包装调用和pipe理调度在一定程度上… http://code.google.com/p/xtrabackup-manager/
还有另外一个命令行mysql备份包装器,它支持多个后端。
接下来从@symcbean这是我尝试采取一致的命令行转储系统,混合myisam和innodb引擎configuration…(这将显而易见使您的数据库只读,直到它已经完成,任何插入/更新/ 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级别获得READlocking,从而避免数据库级别locking的需求。 例如对于xfs;
SYSTEM xfs_freeze
而对于lvm,则是dmsetup。
使用mylvmbackup获取文件系统的快照,或者(如果数据库很小) mysqldump来获取SQL转储。 我不推荐大数据集的mysqldump 。
而且, mysqlhotcopy对于MyISAM来说是完美的。
对于InnoDB尝试热备份 ,但它的成本。