资源描述:
《WIKI-MySQL数据库备份与还原及自动执行脚本》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MySQL数据库备份与还原备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件(如用cp、cpio或tar等)。1使用直接拷贝方法1.1备份直接拷贝文件不能移植到其它机器上,除非你正在拷贝的表使用MyISAM存储格式。ISAM表只能在相似的硬件结构的机器上拷贝。在MySQL3.23中引入的MyISAM表存储格式解决了该问题,因为该格式是机器无关的,所以直接拷贝文件可以移植到具有不同硬件结构的机器上。只要满足两个条件:另一台机器必须也运行MySQL3.23或以后版本,而且文件必须以MyISAM格式表示,而不是ISAM格式。当你使用这种直接备份方
2、法时,你必须保证表不在被使用。如果服务器在你则正在拷贝一个表时改变它,拷贝就失去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。下面描述直接拷贝备份的方法:如果MySQL的DB档案是存在/var/lib/mysql内,以DB名称为目录,目录内就是该DB的所有资料,像confluence这个DB,就是存在/var/lib/mysql/confluence内,在备份前,因为怕资料尚未完全写入磁碟,而且MySQL会Lock在使用的DB档案,所以应该是要先把MySQL先Shutdown一下,整个备份的程序可以下像下面的指令去完成:/etc/
3、rc.d/init.d/mysqldstoptarcvfzconfluence_db_20020601.tgzconfluence/etc/rc.d/init.d/mysqldstart(上面的confluence是指存放confluence这个DB的目录.)要用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数据目录下即可。你也应该保证在另一台机器上的服务器在你正在安装数据库表时不访问它们。1.1还原先把现在错误的DB先更名或tar起来,再把好的备份给解开回原来目录位置就行了,需要注意的是,MySQL服务最好也是
4、要先停止,回存完成后再启动服务,回存DB的整个程序可能像下面:/etc/rc.d/init.d/mysqld.stopmvconfluenceconfluence_errortarxvfzconfluence_db_20020601.tgz/etc/rc.d/init.d/mysqld.start2使用mysqldump线上备份2.1备份使用像上面的"档案"方式备份是个不错的方法,它最少可以保持该主机某个时间点的完整档案备份,但还是有一些问题需要考虑到,有些主机就不只建立一个DB而已,总不能为了备份某个DB而把整个MySQL服务停止,备份档案的方式,回存在原
5、主机上一定适用,但假如MySQL版本升级,或是在那天需迁移机别的主机时,那就没人敢保证备出来的资料档可以用,所以我们可以考虑另一种备份的方式,是使用MySQL本身提供的功能:"MySQLDataDump",指令是"mysqldump".使用MySQL的Dump功能可以把DB的"结构","资料"或"结构加资料"Dump成文字档,mysqldump指令提供的弹性很大,你可以选择把整个DBDump成一个档,或是每个Table为一个档,甚至是把结构档和资料分开储存都可以.Dump的指令如下:mysqladmin-uroot-pflush-logsmysqldumpc
6、onfluence-uroot-popt>confluence_20111001.sql(confluence是DB名称,opt是一个使用完整Dump参数)假如只是要单独Dump某个Table时,只要在上面的指令后,转出符号">"前加个Table名称就可以,如只要phpbb2_users这个Table的Dump时,只要下:mysqldumpphpbb2-uroot-poptphpbb2_users>phpbb2_users_20020601.sqlDump出来的档案是个纯文字档,你可以用tar把它压起来,大约可以把档案大小压到1/3左右的大小,因为Dump出
7、是文字档,所有的资料都是以明文显示,所以必须注意一下备份档保存的安全性,而且建议备份档最好再另外储存於异地以及其他易于保存的媒体上,这样的备份才有意义.1.1还原若要回存整个资料库,只需将压缩的备份档还原成Dump的档案,再用下面的指令回存:mysqlconfluence-uroot-p8、时,可以考虑把现有错误或不完整的DB先备份一份下来,