您的位置:首页 > 运维架构 > 网站架构

mysql 高可用 1

2015-08-06 21:26 387 查看
首先还是先简单回顾下MySQL历史

1979年,Monty写了最初的版本,96年发布1.0

1995-2000年,MySQL AB成立,引入BDB

2000年4月,集成MyISAM和replication

2001年,Heikki Tuuri向MySQL建议集成InnoDB

2003发布5.0,提供了视图、存储过程等功能

2008年,MySQL AB被Sun收购,09年推出5.1

2009年4月,Oracle收购Sun,2010年12月推出5.5

2013年2月推出5.6 GA,5.7开发中

我们先看下MySQL有哪些优点

使用简单

开源免费

扩展性”好”,在一定阶段扩展性好

社区活跃

性能可以满足互联网存储和性能需求,离不开硬件支持

上面这几个因素也是大多数公司选择考虑MySQL的原因

不过MySQL本身存在的问题和限制也是很多,有些问题点也经常被其他数据库吐槽或鄙视的

当前存在问题

优化器对复杂SQL支持不好

对SQL标准支持不好

大规模集群方案不成熟,主要指中间件

ID生成器,全局自增ID

异步逻辑复制,数据安全性问题

Online DDL

HA方案不完善

备份和恢复方案还是比较复杂,需要依赖外部组件

展现给用户信息过少,排查问题困难

众多分支,让人难以选择

看到了刚才讲的MySQL的优势和劣势,可以看到MySQL面临的问题还是远大于它的优势的,很多问题也是我们实际需要在运维中优化解决的,这也是MySQL DBA的一方面价值所在

并且MySQL的不断发展也离不开社区支持,比如Google最早提交的半同步patch,后来也合并到官方主线。Facebook Twitter等也都开源了内部使用MySQL分支版本,包含了他们内部使用的patch和特性

今天我们讲的运维方面的部分主要包含两部分,针对开发的数据库开发规范和针对DBA或运维的运维规范

数据库开发规范定义:开发规范是针对内部开发的一系列建议或规则

由DBA制定,如果有DBA的话

开发规范本身也包含几部分:基本命名和约束规范,字段设计规范,索引规范,使用规范

规范存在意义:

保证线上数据库schema规范

减少出问题概率

方便自动化管理

这种规范是需要需要长期坚持,对开发和DBA是一个双赢的事情

字段规范

所有字段均定义为NOT NULL ,除非你真的想存Null

字段类型 在满足需求条件下,越小越好 使用UNSIGNED存储非负整数 ,实际使用时候存储负数场景不多

使用TIMESTAMP存储时间

使用varchar存储变长字符串 ,当然要注意varchar(M)里的M指的是字符数不是字节数 使用UNSIGNED INT存储IPv4 地址,而不是CHAR(15) ,这种方式只能存储IPv4,存储不了IPv6

使用DECIMAL存储精确浮点数,用float有的时候会有问题 少用blob text
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: