Chinaunix

标题: MySQL版《一周一议》之mysql开发和运维规范(积分已转账-2013-1-7) [打印本页]

作者: chinafenghao    时间: 2012-12-18 18:05
标题: MySQL版《一周一议》之mysql开发和运维规范(积分已转账-2013-1-7)
积分已转账,请注意查收!

感谢大家对上周话题的关注,上期话题主要探讨了mysql配置文件相关的优化。
现在隆重宣布上周获得《PHP与MySQL权威指南》的用户是:hbsycw
sorry:关于中奖者之前确实编辑错了,谢谢提醒。
另外hunter_searchseesea2517各获得200积分奖励。
其他参与讨论的用户到将至少获得20积分,积分是需要管理员手工加,加上后会发站内信的。

本期的话题是mysql的运维和开发规范。

对于小作坊似的公司来说,机器不多,人也不多,管理一般比较混乱,但是也能过得去。但是对于大点的公司,开发人员多,机器多。如果开发和运维没有规范的话,那么将是一团乱麻,性能也肯定问题百出。
如果mysql运维没有规范的话,肯定会出现非常多的误操作,小则停机,大则数据丢失。
那么如何来规范mysql的开发和运维规范呢?
这就是本期的话题。
mysql的开发规范推荐两篇文章:
1、东哥的一篇博文 mysql开发规范 http://www.iamcjd.com/?p=1237
2、赶集网36条军规  http://wenku.baidu.com/view/b9225d3631126edb6f1a102b.html

但是针对运维规范,就没有太多好的文章了,期望大家多多分享自己的经验。

主要两个讨论点
1、mysql的开发规范


2、mysql的运维规范
(1、备份的方案,和备份测试方案
全备,和增量备份时间间隔设计,根据数据量和存储空间和业务需求设定备份保留期限,定期测试备份是否正确,是否可用。
(2、紧急故障处理预案
主要是性能监控报警方面的处理,阀值设置,出问题后响应时间和汇报对象等等。
(3、误操作预案
DDL或者DML误操作后的紧急处理方案
(4、数据库安装、上线流程
新业务上线,配套的数据库硬件配置,操作系统版本选择,数据库版本选择,安装,系统和数据库基准测试。
(5、数据库升级流程
升级现有数据库的流程,如何发起,和所有业务及研发部门沟通升级方案对业务的影响,升级前的测试,切换流程定制等。
(6、DDL操作流程
新功能上线,数据库DDL操作的流程。
(7、日常巡检流程
日常检查数据库的哪些运行状态和状态异常分析

活动奖励:
1、每周会评选一位最活跃的用户,有一本mysql相关的书籍送出,本周送出的书籍是《PHP和MySQL Web开发(原书第4版)》。
[attach]633713[/attach]
2、由于是话题讨论,所以每位参加者都能获得适当的积分奖励。最低20分,最高不限,^_^想要赚分的朋友也可以来凑热闹哟。

作者: seesea2517    时间: 2012-12-19 10:34
感谢 @chinafenghao,没能争取到图书虽然可惜,但也在情理之中,怎么的说我也是外行,给大家捧个人场吧。
作者: du_liang    时间: 2012-12-19 10:51
@chinafenghao FH版主加油
作者: seesea2517    时间: 2012-12-19 11:37
对于开发规范版主提供的链接很详细了,真是没有多的要添加了。不过在对于使用 enum 和 set 的情况上述两个文章的意见是相反的,一个是建议一个是不建议。
在我们的实际使用中是没有使用这个复杂情况,表中使用 tiny int 来表示状态,没有必要的时候就是查文章来找其含意,一些必要的呢,就用一个含意表,在需要显示的时候做一个链接。更甚,直接在客户端配置含意表。

对于运维规范,不知道下面的算不算是运维规范,可以说是一个规定吧,从服务于运营的角度来考虑的:
1. 确保数据安全——保证用户信息、运营数据的安全
2. 每日凌晨备份,本地+异地——不影响繁忙时段的线上操作,确保数据不丢失
3. 尽量减少停机时间——提高用户体验、延长运营时间
4. 异常损坏情况下尽量恢复数据——减少用户损失
作者: seesea2517    时间: 2012-12-19 11:44
回复 4# seesea2517


    不知道专人专职是不是算一个运维规范,不同负责的人有不同的权限
作者: chinafenghao    时间: 2012-12-19 13:18
@seesea2517
其实seesea2517兄是一位开发,作为一位开发能够把数据库了解到这个层次还是很难得了。


作者: seesea2517    时间: 2012-12-19 13:22
回复 6# chinafenghao


    过奖过奖,只是在开发环境下学习 sql。
作者: chinafenghao    时间: 2012-12-19 13:22
@du_liang

谢谢支持
作者: chinafenghao    时间: 2012-12-19 13:30
@seesea2517

其实开发规范上面的两个文章确实说的很详细了。
我说几点运维的规范吧。
1、备份的方案,和备份测试方案
全备,和增量备份时间间隔设计,根据数据量和存储空间和业务需求设定备份保留期限,定期测试备份是否正确,是否可用。

2、紧急故障处理预案
主要是性能监控报警方面的处理,阀值设置,出问题后响应时间和汇报对象等等。

3、误操作预案
DDL或者DML误操作后的紧急处理方案

4、数据库安装、上线流程
新业务上线,配套的数据库硬件配置,操作系统版本选择,数据库版本选择,安装,系统和数据库基准测试。

5、数据库升级流程
升级现有数据库的流程,如何发起,和所有业务及研发部门沟通升级方案对业务的影响,升级前的测试,切换流程定制等。

6、DDL操作流程
新功能上线,数据库DDL操作的流程。

7、日常巡检流程
日常检查数据库的哪些运行状态和状态异常分析



作者: seesea2517    时间: 2012-12-19 13:43
回复 9# chinafenghao


    嘿,你这一说我还真觉得就该是这样做的。咱这做改动经 dba 审核后又返回项目,经过 QA 测试后才上线,不是经过 dba 后就直接上线,不知道其他公司是否如此。
作者: hbsycw    时间: 2012-12-19 14:59
回复 1# chinafenghao
版主是不是搞错了,huzi1986 上期根本没参加发言,怎么就获奖了?

   
作者: action08    时间: 2012-12-19 17:38
tx,没听说过有马甲@hbsycw
作者: chinafenghao    时间: 2012-12-19 17:50
@hbsycw
sorry,确实搞错了。
作者: 代号:军刀    时间: 2012-12-20 10:29
我也过来凑下热闹,经验不足,还望大家多多指教
接着楼主的问题往下聊~
1.我给mysql数据库备份的时候,没对备份数据进行测试,数据库之多和数据量的之大,貌似每次都做测试有点不太现实,不知大家有什么简便的测试方案没,分享下:wink:
2.通过nagios监控
3.误操作的话通过备份数据还原
4.至于数据库的上线流程,对数据库进行严密的测试是必须的
作者: chinafenghao    时间: 2012-12-20 11:29
@代号:军刀
1、数据量太大,做备份的恢复测试确实是个问题,工作量太大了。但是只要你不是逻辑备份,直接拷贝文件的备份方式和xtrabackup的备份方式应该恢复测试要容易点。
3、如果是通过备份来恢复,你备份测试都难,更何况恢复线上数据了,导致的停机时间肯定不短,而且风险也大。我这边做了一个延时复制。淘宝也有一个patch,可以做flash recovery。


作者: 枫影谁用了    时间: 2012-12-21 12:03
这个非常支持!Good
作者: seesea2517    时间: 2012-12-21 14:38
回复 11# hbsycw


    神眼啊,黑哨都被你发现了。
作者: seesea2517    时间: 2012-12-21 14:41
chinafenghao 发表于 2012-12-20 11:29
@代号:军刀
1、数据量太大,做备份的恢复测试确实是个问题,工作量太大了。但是只要你不是逻辑备份,直接 ...


不知道大家的备份都大到什么程度,咱这大概也就几十G,压缩后在 16 17 G左右。
作者: 代号:军刀    时间: 2012-12-21 16:07
回复 18# seesea2517

    然后呢?
作者: seesea2517    时间: 2012-12-21 16:37
回复 19# 代号:军刀


    然后等大家回复啊…… 然后就是有需要用的时候解压、恢复嘛。
作者: devilkin0312    时间: 2012-12-22 14:11
up,规范一类的需要长时间的实践而且针对性很强
作者: titer1    时间: 2012-12-22 15:39
一楼一楼的看
作者: hansion3406    时间: 2012-12-23 11:17
真的吗?太好了,非常喜欢
作者: xiaodylan    时间: 2012-12-24 14:04
1、备份的方案,和备份测试方案
    全备+增量备份,定期。

2、紧急故障处理预案
    这个不太明白..故障处理预案根据业务需求,切换到备点进行修复...

3、误操作预案
这个目前还木有过 呵呵。

4、数据库安装、上线流程
将编译安装好的数据库打成包,统一分发,直接跑脚本配置环境,省去安装环节(前提最好系统环境和编译安装环境时的一样)

5、数据库升级流程
生产环境还没有做过升级操作 = =

6、DDL操作流程


7、日常巡检流程
写脚本检查数据库运行状态等信息,发送邮件出来。
作者: tulip0425    时间: 2012-12-26 01:38
很好!很强大!
作者: meiyuhan    时间: 2012-12-31 01:07
我很喜欢,太精彩了
作者: chinafenghao    时间: 2012-12-31 11:26
一群刷分的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2