防微杜渐 管理MYSQL有窍门
数字职场
由于MYSQL是我所在企业信息化的基础单元,因此,MYSQL数据库的管理和维护已经成为日常工作内容中的重要部分,数据库的备份、检查、修复等成为每周的必修课。在此,本着互联网精神,分享一下多年来在MYSQL管理方面的常用技巧,希望能为MYSQLERS提供一些帮助或参考。
数据库的正确备份与恢复备份
数据原文件备份
MYSQL数据在设计时就将一个个数据库独立地放在MYSQL应用目录下,因此方便了我们对需要备份的数据库进行原文件拷贝,并完成数据的备份的操作。这也成为目前MYSQL管理者主要使用的备份方法之一。
PS:鉴于国内多数服务器依然是使用的微软的服务器系统,以下内容将基于微软服务器系统环境进行描述。数据库以MYSQL5版本来进行描述。
实例:我们的MYSQL数据库安装在F:\mysql下,在此应用目录下有一个叫data的目录,data目录是MYSQL的数据库存储目录,在data目录下就是我们各个数据库的原文件目录,目录名称与我们的数据库名字是完全一致的,我们仅需把需要备份的数据库名字对应的目录复制到我们的备份目录,即完成了对指定数据库的备份,很简单吧:)
提示:data目录下的mysql目录是MYSQL的表与用户权限关系数据库,一般情况下不要去动它。
数据导出备份
导出备份相对于原文件备份要麻烦一些,不过因为能导出单个SQL文件,能为网站应用项目的部署提供条件。因此,如果你是一位做项目开发的朋友,那这也是需要学会并掌握的内容。
进行数据库导出时,需要在服务器本地进行,当然也有方法远程进行,不过本篇仅描述服务器本地导出方法。
数据库导出命令:mysqldump
标准版的MYSQL中,此命令位于MYSQL目录下的bin目录里,命令格式如下:
mysqldump –u [用户名] –p [用户密码] [需要备份的数据库名] > [备份到哪个路径下的哪个文件名]
假设我们使用最高权限用户root进行备份,最高权限用户密码为123456,我们需要将一个名叫ABC的数据备份到F:\ABC.sql文件,我们进入F\mysql\bin\目录进行备份,例:
mysqldump –u root –p 123456 ABC > f:\ABC.sql
执行以上备份后在我们的F盘下会生成一个叫ABC.sql的文件,这就是我们备份出来的ABC数据库的备份文件。
原文件恢复备份
将我们备份的原文件拷贝到MYSQL的data目录下就完成了备份恢复。
备份数据导入
与mysqldump相对应,备份数据的输入也是使用命令进行,命令模式如下:
mysql –u [数据库用户名] –p [用户密码] [需要恢复的数据库名]< [包括备份文件名称的完整路径]
将之前我们备份出来的ABC.sql文件进行一次导入,使用我们假设的最高权限用户root来进行,例:
mysql –u root –p 123456 ABC< f:\ABC.sql
执行完成后,备份的ABC.sql数据就完成了导入。
注意:导入前如果MYSQL没有ABC这个数据库,请先使用建立数据的命令建立一个空的ABC数据库。
工具推荐
PHPMYADMIN是一款在线管理工具,目前已经应用得非常广泛,它提供了从数据库权限分配到数据库远程备份打包下载的日常所需要的大部分功能。

数据检查与修复
日常数据检查的优化
虽然MYSQL为数据库检查、优化、修复提供多个可选择的单独命令,不过在日常维护中,我们更喜欢一次性就完成检查、优化、修复的操作,这样能省下不少的时间,还能提高工作效率,命令如下:
mysqlcheck –o [数据库名] -u [数据库用户名] –p [用户密码]
如果我们需要对ABC进行检查和优化,我们只需在f:\mysql\bin下执行命令:
mysqlcheck -o ABC –u root –p 123456
执行完成后,ABC数据库中存在的数据错误将全部得到检查、修复和优化。
数据表文件修复命令
记得有一次,公司的一个100万行级的数据表损坏,导致服务器CPU占用100%,使用普通修复和优化无果,在这样的特殊情况下,MYSQL数据表出现数据表文件损坏,我们已经无法用mysqlcheck完成修复,在此我们需要用到另一个命令(标准安装版中一定有,解压版的可能没有这个命令):
myisamchk -B -o [目标数据表物理路径]
此命令也在MYSQL的bin目录下。如果有一天,我们的ABC数据库下的TEST数据表损坏,我们可以使用以下命令进行修复:
myisamchk -B –o f:\msyql\data\
ABC\test.MYD
通过执行这个命令,损坏的test表文件有90%的机会得到修复,让我们的数据得到挽救。
注意:运行命令时需要停止MYSQL服务,如果表比较大,修复时需要一定的时间。
工具推荐
SQLyog是一款多功能的MYSQL客户端,可以在服务器或本地进行安装使用,它提供了全部我们需要的功能(除数据表损坏修复),不但能方便地完成远程查询,还能将我们查询的结果导出成为我们需要的文件格式,方便提取数据报表。同时,对不同字符集的支持比较全面。对于MYSQL管理员或开发人员来说,它能完成触发器、存储过程代码的编写,是一款非常出色的MYSQL远程管理利器。

编辑点评>>
DBA收入中等但“钱”景看好
DBA是直面问题的职业, 大部分DBA都是随时待命的,无论是白天或晚上,当数据库出现问题时,他们都将前去并以最快的速度了解分析并解决问题。数据库是现代信息化商业技术的基础。
由于中国沿海城市与内地城市的经济差异,沿海城市企业更懂得DBA技术在企业发展中起到的作用,因此,对DBA的重视程度和对DBA的要求更高,同时,人员薪水也比内地高出许多。就拿上海张江高科技园区的DBA来说吧,一般做数据维护和分析的DBA,根据个人能力不同,薪水在5千元~1.2万元,做首席DBA的薪水都是1万元~2万元。
在内地,一半的企业还没有将DBA从技术员的区域中划分出来,薪水方面都是严格按内地技术类人员的水平。内地做技术的人员的薪水在2千元~4千元,但是随着企业对数据库的重视,这个职业的收入水平会直线上升。
从DBA的职场规划来讲,这个职业是属于技术专精方面的。一般来说,DBA的发展规划为DBA→系统管理员或者网络安全管理员→应用开发负责人→项目经理。一直以技术作为发展路线,如果你喜欢研究技术,也耐得住寂寞,那么DBA这个职业是比较适合你的。
做DBA的,要加强学习周边知识,并进行转型。这一行也是挺艰辛的职业,不过也是很有成就感的职业。最后送给有志成为DBA的朋友一句Brian Peasland(Techtarget网站Searchoracle子站的资深专家)说的话:除非你已经提前准备好了,否则你可能会发现从事的DBA职业充满了挫折和令人头痛的情况。