关于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这个百万级别的数据库,而且通过灵活的配置反倒有更多的优点,例如容错和容灾性、没有百万级别数据库的那种笨重,后期未婚迁移灵活。
关于mysql开元数据库的几个随想的更多相关文章
- Hive的安装与部署(MySQL作为元数据库)
Hive的安装与部署(MySQL作为元数据) (开始之前确保Hadoop环境已经启动,确保Linux下的MySQL已经安装好) 1. 安装Hive (1)下载安装包 可从apache上下载hi ...
- hive安装用mysql作为元数据库,mysql的设置
mysql的设置 在要作为元数据库的mysql服务器上建立hive数据库: #建立数据库 create database if not exists hive; #设置远程登录的权限 GRANT AL ...
- Xampp apache与mySQL开不了 解决办法
Xampp安装后,打开Xampp control panel. 点击Apache对应的Start,开不了.原因是系统的服务占用了80端口,所以要么结束系统服务,要么修改apache端口. 个人比较喜欢 ...
- MySQL开发面试题
……继上一篇MySQL的开发总结之后,适当的练习还是很有必要的…… SQL语法多变,不敢保证唯一,也不敢保证全对,如果错误欢迎指出,即刻修改. 一.现有表结构如下图 TABLENAME:afinfo ...
- MySQL常用:Got a packet bigger than 'max_allowed_packet' bytes & MySQL开远程服务
1. 数据导入时出现错误 Got a packet bigger than 'max_allowed_packet' bytes 通过终端进入mysql控制台 mysql>show VARIAB ...
- 安装cloudera manager使用mysql作为元数据库
1.首次安装好mysql数据库后,会生成一个随机密码,使用如下办法找到: cat /var/log/mysqld.log |grep password 2.首次安装好mysql数据库后,第一次登陆进去 ...
- mysql开发之join语句学习
内连接:inner join -- 全外链接:full outer 左外连接:left outer 右外连接:right outer 交叉连接:cross内连接,两个表中重复部分全外连接,两个表所有字 ...
- hive上mysql元数据库配置
hive调试信息显示模式: ./hive -hiveconf hive.root.logger=DEBUG,console 非常有用. 默认情况下,Hive元数据保存在内嵌的 Derby 数据库中,只 ...
- 在Ubuntu上安装Mysql For Python
安装: 首先安装pip,并且把pip更新到最小版本 apt-get install python-pip pip install -U pip 安装mysql开发包 apt-get install p ...
随机推荐
- IOC-AutoFac
学习过程中参考博客: AutoFac文档:http://www.cnblogs.com/wolegequ/archive/2012/06/09/2543487.html AutoFac使用方法总结:P ...
- Knowledge Point 20180303 我们为什么要配置环境变量
1.1为什么要配置环境变量 在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问 ...
- 【js】深拷贝和浅拷贝区别,以及实现深拷贝的方式
一.区别:简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝. 此篇文章中也会简单阐述到栈堆,基本数据类型与引用数据类型,因为这 ...
- SQL语言简单总结
常用的Sql语言总结: 1. create datebase datebaseName //创建数据库 2. drop datebase datebaseName // ...
- 微信小程序快速转成百度小程序的方法
1.安装Node.js(>8.5.0)https://nodejs.org/ npm升级到最新版本的方法:npm install -g npm自动更新到最新版本 2.配置cnpm:在命令行中输入 ...
- Python学习 :正则表达式
正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...
- (杭电 1702)ACboy needs your help again!
ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 笔记-django第一个项目
笔记-django第一个项目 1. 创建项目 安装 Django 之后,现在有了可用的管理工具 django-admin.可以使用 django-admin 来创建一个项目: 看下djang ...
- 汇编中resb这样的指令是什么意思?
转载下来,方便以后查看 原作网址:http://blog.csdn.net/m1j2t3/article/details/5681657 汇编中resb这样的指令是什么意思? 还有我在汇编程序中看到这 ...
- 20145234黄斐《Java程序设计》第十周学习总结
教材学习内容总结 网络概述 概述 网络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用. 计算机网络概述 IP地址: ...