通常我们在使用mysql数据库时,经常会因为操作失误而丢失数据。MySQL数据库备份可以帮助我们避免由于各种原因造成的数据丢失或其他影响数据库的问题。
数据备份的快捷方式
因为这个方法没有得到官方文件的验证,所以暂且称之为实验。
目的:在hostA主机中备份一个MySQL数据库,备份TestA,并恢复到hostB。
测试环境:
操作系统:WinNT4.0,Mysql3.22.34,phpMyAdmin 2.1.0
在hostA中安装MySQL数据库备份,并建立TestA数据库。
HostB机器安装MySQL数据库备份,没有TestA数据库。
方法步骤:
启动phpMyAdmin检查HostA和HostB中的数据库列表,HostB中没有TestA数据库。
在HostA中找到MySQL数据库备份的安装目录,找到数据库目录数据。
在我的实验环境中,这个目录是C:\mysql\data。
找到数据库名称对应的子目录C:\mysql\data\TestA。
粘贴复制到HostB的数据目录,与HostB MySQL数据库的备份数据目录中的文件相同。
刷新HostB的phpMyAdmin,查看数据库列表。我们看到TestA已经出现,查询修改等操作正常,备份恢复成功。
实验结论:MySQL数据库可以以文件形式保存、备份和恢复,只要恢复相应的文件目录,无需使用其他工具备份。
二、正式方法(官方建议):
导出要用到MySQL数据库备份的mysqldump工具,基本用法是:
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
mysqldump支持下列选项:
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL数据库备份)。
在每个create语句之前增加一个drop table。
允许创建是关键词的列名字。这由在列名前面加表名的方法做到。
使用完整的insert语句(用列名字)。
如果客户和服务器均支持压缩,压缩两者间所有的信息。
用INSERT DELAYED命令插入行。
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
跟踪程序的使用(为了调试)。
显示一条帮助消息并且退出。
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
在开始导出前,洗掉在MySQL数据库备份服务器中的日志文件。
即使我们在一个表导出期间得到一个SQ