在MySQL中,可以通过几种不同的方法来执行数据库的备份。第一种方法是在复制数据文件时使用LOCK TABLES命令锁定这些表。该命令语法如下所示:
LOCK TABLES table lock_type[,table lock_type...]
每一个表必须是表的名称,而锁定类型可以是READ或WRITE。对于备份来说,只需要READ锁。在执行备份之前,必须执行FLUSH TABLES;命令来确保对索引所做的任何修改将写入到磁盘。
在执行备份时,用户和脚本还可以运行只读查询。如果有大量可以修改数据库的查询,例如客户订单,这种解决方案并不实际。
第二种方法,也是比较好的方法是使用mysql_dump命令。该命令是在操作系统的命令行下使用的,该命令的典型用法如下所示:
mysqldump--opt--all-databases>all.sql
上述命令将所有用来重新构建一个SQL数据库所需的内容都导出到一个名为all.sql的文件中。
稍后,可以停止mysqld进程,并且通过--log-bin[=logfile]命令选项重新启动它。保存在日志文件中的更新将给出上次备份后数据库发生的变化。(很明显,在任何常规文件的备份中,还应该备份所有日志文件。)
第三种方法是使用mysqlhotcopy脚本。可以使用如下命令调用:
mysqlhotcopy database/path/for/backup
然后,必须遵照前面介绍的启动和停止数据库的操作。
备份(故障转移)的最后一个方法是维护数据库的一个副本。数据库的复制将在本章稍后内容介绍。