MySQL必备工具第二位: mydumper
能够快速生成数据转储在服务器及备份信息克隆工作中至关重要。遗憾的是,MySQL自身包含的mysqldump组件只支持单线程工作,这就使得它无法迅速解决数据密集型用户所面临的实际问题。不过好消息还是有的,mydumper作为新生代实用工具,能够良好支持多线程工作,这使得它在处理速度方面十倍于传统的mysqldump。
另一款知名的同类工具是MySQL Data Dumper,它的问题是无法单独管理备份集合、差异点或是一套完整备份计划中的其它组成部分。该工具只是单纯将MySQL中的数据以尽可能快的速度进行转储,这在完成限时任务方面倒是具备一定价值,例如趁员工没有在线操作的时段抓紧时间进行备份。另外,如果大家在实际使用中需要异常频繁地执行备份,那么MySQL Data Dumper是比较理想的选择。
从技术角度分析mydumper的话,其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么它恐怕没什么用武之地。但话说回来,专业级数据恢复的费用是每小时数百美元,而且即使数据没能得到恢复,我们收到的也不可能是道歉信而仍然是一纸账单。相比之下,mydumper完全免费,并且在基本备份工作中表现颇佳。
mydumper在克隆整体服务器方面也比较方便。其它工具往往会对硬盘内容进行整体复制,但大家需要的往往只是MySQL中的数据,这个时候mydumper就能迅速准确地完成任务。设置于云平台上的服务器特别适合使用mydumper进行克隆,只需将MySQL中的数据从现有服务器复制到新的实例中即可。
在创建从属服务器、基准确定及模板应用方面采用克隆方案确实行之有效,但克隆真正能够发挥作用的领域无疑还是在开发及测试环节当中。对于动态MySQL环境来说,在将软件推至台面之前迅速对其进行复制并加以测试可说是至关重要的步骤。有了mydumper,大家能够快速创建一套几乎与母体完全相同的服务器来模拟生产服务器,运行于其上的测试结果也将更接近于实际运行结果。
下载地址: https://launchpad.net/mydumper/+download
维护负责人: Domas Mituzas, Andrew Hutchings, Mark Leith
更多信息: http://www.mydumper.org/ | https://launchpad.net/mydumper/
MySQL必备工具第八位: shard-query
还在为针对诸多分区或是数据碎片集合的查询速率低下而烦恼?其实只需使用shard-query,整个处理速度会大大加快。那些基于下列架构的查询指令能够从shard-query工具中得到最大的提升:
复合函数 SUM, COUNT, MIN, and MAX 等也能够使用上述架构。举例来说,下面这条查询指令即可由shard-query并行执行:
SELECT DayOfWeek, COUNT(*) AS c
FROM ontime_fact
JOIN dim_date USING(date_id)
WHERE Year
BETWEEN 2000 AND 2008
GROUP BY DayOfWeek
ORDER BY c DESC; 根据基准测试的结果显示,通过并行处理的方式,该查询指令的响应时间缩短了85%左右,从原先的21秒降低至3秒。
Shard-query并不是一款能够独立运行的工具;它需要诸如Gearman之类的其它程序提供支持,而且设置过程也相对比较复杂。但如果大家的数据分区及查询指令符合上面列出的构造,那么付出一些努力也是值得的,毕竟优化效果非常明显。
下载地址: (svn checkout) http://code.google.com/p/shard-query/source/checkout
维护负责人: Justin Swanhart
更多信息: http://code.google.com/p/shard-query/ MySQL必备工具第九位: mk-archiver
随着列表体积的日益增大,查询指令生效时间也每况愈“长”。响应时间不理想的干扰因素当然很多,但如果我们已经对各个角度实施了优化,那么最后仍然制约性能表现的瓶颈所在就是列表的规模了。将庞大列表中的各行内容进行归档操作能够有效缩短查询指令的响应时间。
除非列表内容并不重要,否则大家千万不能贸然删除其中的内容行。归档也需要技巧,因为首先数据不能缺失、列表也不能过分锁定以免影响访问,还要注意归档操作不能导致MySQL及服务器的超载。我们的目标是让整个归档过程稳定可靠,除了缩短查询响应时间外不产生任何负面效果。mk-archiver 能够帮我们达到愿望。
mk-archiver有两条基本工作要求,第一是归档对象必须能够被识别。举例来说,如果列表中存在日期列,而且一般来说只有几年之内的数据有实际价值,那么在这几年之前的数据行可以进行归档。另外,必须具备一套惟一的索引系统以帮助mk-archiver 工具进行定位,而不必扫描整个列表中的内容行。扫描一套巨型列表在时间及经济方面的成本都相当高昂,因此关键指数及特定的SELECT语句在避免整体扫描方面至关重要。
在实际应用当中,mk-archiver 会自动处理各类技术细节。大家需要做的只是告知该工具哪个列表需要归档、如何识别可归档的内容行以及将这些行归至何处。如果需要的话,也可以将这些行剪切至另一个新列表中,或者是以书面的形式生成一个转储文件,方便日后需要的时候另行导入。一旦熟悉了这款工具的用法,其中的大量细微调节选项能够帮我们实现各种特殊的归档要求。此外,mk-archiver 具备嵌入式端口,因此它可以在未经代码修正的情况下解决诸多复杂的归档需求。
下载地址: http://maatkit.org/get/mk-archiver
维护负责人: Daniel Nichter and Baron Schwartz
更多信息: http://maatkit.org/ | http://code.google.com/p/maatkit/
MySQL必备工具第十位: oak-security-audit
大家最后一次全面审核自己MySQL服务器安全性是在什么时候?如果答案是“从来没有”,其实也不必担心,因为从不搞安全检查的群体相当庞大。许多企业提供安全审核服务,但除非在审计之后不存在任何大规模变更,否则我们MySQL环境的安全性应该得到定期的检查。
外部威胁是执行MySQL安全审核的一大重要原因,但内部威胁,尤其是来自现任或前任雇员的因素往往更加危险,因为他们目前(或曾经)具备信任和权限。安全性在隐私性信息的保障(例如医疗及健康保险方面)方面同样不容忽视,必须尽力阻止意外访问(例如登录至生产服务器而非开发服务器)或者第三方程序与系统之间的交互。
对于那些希望增进安全性的用户来说,oak-security-audit大有可为,它是一款免费的开源工具,能够应对基本的MySQL安全审核。它不需要进行任何设置,将其运行于自己的MySQL服务器之上,它就会打印出一份关于账户、账户权限、密码、一般改进方案以及潜在风险的建议报告,例如推荐暂时禁用网络访问。以下是报告中的部分内容:
-- Looking for anonymous user accounts(寻找匿名用户账户)
-- -----------------------------------
-- Passed(未发现问题)
--
-- Looking for accounts accessible from any host(寻找能够从任何主机实施访问的账号)
-- ---------------------------------------------
-- Found 1 accounts accessible from any host.
Recommended actions:
RENAME USER 'msandbox'@'%' TO 'msandbox'@'';
(找到1个此类账户。建议操作:
将用户名 'msandbox'@'%' 重命名为 'msandbox'@'';)
oak-security-audit的工作重点在于MySQL的安全性方面,因此它并不能代替一套完整的、由技术人员提出的安全审核方案,但它作为第一道防线能够起到相当了不起的防护作用,而且操作简单。大家可以将其固化进cron指令,每周按时运行,并将生成的报告通过电子邮件发送给自己并加以审阅。
下载地址: http://openarkkit.googlecode.com/svn/trunk/openarkkit/src/oak/oak-security-audit.py
维护负责人: Shlomi Noach
更多信息:
http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/oak-security-audit.html
原文链接:
http://www.infoworld.com/d/data-management/10-essential-mysql-tools-admins-168018?page=0,0