关于mysql开元数据库的几个随想

现在已经是凌晨了,昨天晚上写了我人生中的第一篇笔记,觉得没什么可写的,写了一个多小时都没写出什么,现在突然想写点东西了,这是一个比较有趣的问题,前两个月换了新工作,记得当初面试这份工作的时候面试到第三关(项目经理这关)的时候,他问到了我用过什么数据库,因为在回答过程中无意中说了oracle数据库是百万级别的数据库,mysql是中小型数据库的时候,面试经理反问我说听说现在的淘宝用的数据库就是mysql,这个怎么解释呢?说真的当时我真的不知道怎么解释,只是知道mysql是开元的,而oracle不是,所以当时的回答是:首先mysql是开元的,而oracle不是,而且像马云现在业务做的这么大,并不是他一个人在撑着的,而他能干别人干不了的事情的原因是他有很多聪明的员工,当然要看他的工程师怎么用咯!虽然我觉得这个回答不是正确的,但是说出自己的思路和理解总比不说或者说不会好吧!好吧!事实的确是这样。但经过工作之余时间的查看文档现在给这个问题做一个总结:

  首相要声明一点的是MYSQL是开元的,开元的意味着MYSQL发展的很快,会变得很优秀,而且MYSQL说是一个数据库倒不如说是一种存储的规则,mysql的工作原理也简单明了,在最外层到里层分为 connectors、(连接管理器,包括安全的认证)、connection pool(连接池,挂你缓冲用户连接、线程处理)、management Service(系统管理和控制工具)、 &utilities、sql interface(sql接口,接手用户的sql命令、返回用户需要查询的结果)、parser(解析器,解析sql命令)、optimizer(查询优化器,历史调优执行过程策略方案处理)、cache&buffers(查询缓存)、storage engines(存储引擎)、file&logs。

  通过配置mysql集群存储方案,可以提高性能和有较好的用错性,具有不共享、分布式节点框架的特点

  

读写分离
一台 Mysql 作为独立的数据库无法满足实际需求。在实际生产环境中,不论是安全性,高可
用性,还是高并发性等各个方面,单独一台 Mysql 都不足以满足业务需求。
故而现在的做法多为:通过主从复制(Master-Slave)的方式来实现数据同步,再通过读写分离
(MySQL-Proxy)来提升数据库的并发负载能力。使用这种方式进行开发部署,可以较好的解决
业务需求

读写分离的原理:
让 Mater 处理增、改、删(INSERT、UPDATE、DELETE)操作,而 Slave 处理查询(SELECT)操作。
可以通过 MySQL-Proxy 实现读写分离,进行 MySQL-Proxy 读写分离至少需要有以下配置:
1. 数据库 Master 主服务器 x1
2. 数据库 Slave 从服务器 x1
3. MySQL-Proxy 调度服务器 x1
通过以下操作,可以实现读写分离,下列操作都是在 MySQL-Proxy 调度服务器上进行的。
1. MySQL 的安装与配置
2. 检查系统所需软件包
3. 编译安装 Lua
4. 安装配置 MySQL-Proxy
5. 配置并使用 rw-splitting.lua 读写分离脚本
完成以上操作后,即可测试读写分离效果。暂时关闭主从复制功能,连接 MySQL-Proxy,插
入任意记录。查询将发现没有新记录。分别登录到主从服务器查询,发现主服务器有插入记
录,从服务器没有。通过验证,MySQL 的读写分离已经达成,所有的写操作均在 Master 完
成。这样做,就避免了多个数据库同时写入可能造成的数据库不一致性。
此外,所有的读操作分摊给了各个 Slave,以此减轻数据库压力。
跨地区容灾
这里简单介绍一下使用双机热备进行跨地区容灾。
双机热备,简单来讲,就是令两个数据库保持状态自动同步。对于处于双机热备当中的数据
库,对其中任何一个进行操作都可以自动同步到另外一个,这样,就保持两个数据库当中的
数据始终一致。
这种方式有两个好处:
1. 异地容灾,其中一个坏了可以切换到另一个。
2. 负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。
备份工作原理:
两个原始数据相同的数据库 A 和 B,A 数据库中执行过的 sql 语句在 B 数据库里也同步执行一
遍,通过这样,A、B 数据库就可以一直保持同步。

上面是查阅资料找到的一些资料,这些资料足以证明mysql可提供配置和使用的方式很灵活,根据实际的数据特点配置合理的集群数据库的确有可能打赢oracle这个百万级别的数据库,而且通过灵活的配置反倒有更多的优点,例如容错和容灾性、没有百万级别数据库的那种笨重,后期未婚迁移灵活。

猜你喜欢

转载自www.cnblogs.com/draglong/p/10100125.html