中小企业可参考的数据库架构-mysql篇
引言
数据库在众多互联网公司中应用日益广泛,不同的公司,使用姿势不尽相同,尤其是大公司,各种自研架构,羡煞旁人。但是,作为中小企业,由于分工和团队规模限制,很难实现自研,大多数情况下,使用开源架构。
目前,在互联网公司,mysql+redis+mongodb几乎已经成为标配,在各自场景中,得到广泛应用。本文主要介绍以上mysql数据库的常用架构。
Mysql架构
Mysql数据库作为最流行的开源关系型数据库,在互联网公司应用非常广泛。目前,mysql版本分支众多,笔者建议可以考虑使用percona server或者mariadb。本文以percona server5.6为例,可参考的高可用架构如下:
图1
如上图所示,应用程序通过QConf获取到MHA VIP,MHA实现mysql主库高可用,mysql架构为主从复制架构,可以是一主一从,也可以是一主多从。
QConf是奇虎360开源的配置/服务中心中间件,尤其是服务中心功能,非常适合用于数据库和应用程序解耦。Qconf github地址:
https://github.com/Qihoo360/QConf
目前,Qconf发展已经十分稳定,几乎不需要二次开发,可以放心使用。
QConf提供了丰富的SDK,涵盖Java、Php、Python、Go等,作为DBA,可以使用PHP或者Python调用QConf API,管理QConf节点,十分方便。本文以PHP为例,
zk="<zookeeper集群>"
service_path=/db/mysql/vip_3306;
service_mysql="10.11.12.13:3306";
【注册MHA VIP服务】
$qzk = newQConfZK("$zk");
$qzk->serviceAdd($service_path,$service_mysql, QCONF_STATUS_UP);
【注销QConf节点】
$qzk->serviceDelete($service_path,$service_mysql);
【客户端访问QConf】
迁移:客户端需要部署相应的SDK
$qconf_val =QConf::getHost($service_mysql);
结果如下:
string(15)"10.11.12.13:3306"
很明显,客户端使用QConf十分简单
说明:QConf依赖zookeeper集群,建议生产环境zookeeper集群成员为5个,这样可以保证,在2个节点同时宕机情况下,zookeeper服务依然可用。
MHA架构
MHA作为mysql最为流行的高可用方案之一,架构图如下:
图2
如图所示,MHA架构简单清晰。
在master和slave上需要部署MHA node节点,在管理机器上需要部署MHA manager节点和node节点。MHA要求root账号SSH互通,所以,需要保证服务器处于安全模式下,否则,存在很大的安全隐患。为了避免MHA因为网络抖动导致的误切换,建议修改重试策略,笔者设置为2s探测一次,探测60次。如果要启用MHA自动切换模式,需要启动masterha_manager监控进程。
读写分离
如果希望mysql主从读写分离,那么可以参考如下架构:
图3
如上图所示,和图1相比,增加了一层proxy,此处的proxy可以是奇虎360开源的Atlas或者美团点评二次开发的dbproxy,
奇虎360 Atlas github:
https://github.com/Qihoo360/Atlas
美团点评 dbproxy github:
https://github.com/Meituan-Dianping/DBProxy
这两款中间件支持读写自动分离、从库负载均衡、从库故障自动上下线、安全控制等等,比较成熟稳定。
总结
对于普通业务,可以使用图1所示架构,简单稳定;如果需要读写分离,可以考虑图3架构。对于大多数中小型公司,以上架构均可参考使用,达到mysql高可用以及应用程序和数据库解耦的目的。我们在生产环境已经使用上述架构,目前很稳定
中小企业可参考的数据库架构-mysql篇的更多相关文章
- 数据库【mysql篇】学习笔记
Windows服务 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意 ...
- 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置
说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...
- 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
- 数据库之mysql篇(6)—— mysql常用函数函数/自定义函数
常用函数 运算函数 我相信你都能看懂,所以以上的不再做过多解释 然后还有个,前面漏掉的between and: 意指10是否在0到20之间,如果是返回1,否则返回0 日期函数 这个要稍微注意一下参数, ...
- 数据库之mysql篇(5)—— 【转载】mysql练习题
原帖地址:http://www.cnblogs.com/wupeiqi/articles/5748496.html 范例数据sql: /* Navicat Premium Data Transfer ...
- 数据库之mysql篇(4)—— navicat操作mysql
navicat 1.简介: navicat是一个软件,旗下针对不同数据库有不同的软件版本,支持以下数据库,还是挺厉害的: 这里我采用navicat for mysql版本.实现图形化的操作mysql, ...
- 数据库之mysql篇(2)—— mysql常识引入/用户授权
常识引入 1.概念: 数据库:本质上是一个文件夹 1)查看本机所有数据库:show databases; 结束符:分号[:],一切数据行的结尾都以分号作为结束 2)创建数据库:create 数据库名 ...
- 数据库【mysql篇】典型的一些练习题目
班级表 class 学生表student 老师表 teacher 课程表course 成绩表 score 准备数据 创建数据库 create database tang_test charset='u ...
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...
随机推荐
- lr函数之lr_eval_string()函数的使用学习
lr_eval_string() 函数的主要作用:返回脚本中的一个参数当前的值(从参数中取得对应的值,并且转换为一个字符串). 格式:lr_eval_string("{参数名}") ...
- 内置函数--map,filter,reduce
一.map class map(object): """ map(func, *iterables) --> map object Make an iterator ...
- BZOJ 3039: 玉蟾宫【dp】
Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者' ...
- 【分段哈希】H. Paint the Wall
https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/H [题意] 在一个长为H,宽为W的白墙上选一个矩形区域涂颜色,后涂的颜色会覆盖先 ...
- 【NOIP模拟】数字对(RMQ,二分)
题意:小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= n). 这个特 ...
- hdu1588:Gauss Fibonacci
对每个0<=i<n求f(g(i))的和,其中f(x)为斐波那契数列第x项,g(i)=k*i+b,k,b,n给定,模数给定. 斐波那契数有一种用矩阵乘法求的方法,这个矩阵A自己写,令F[i] ...
- 指针与数组的对比(——选自:C++内存管理技术内幕)
数组: 数组要么是在静态存储区上创建(如全局数组),要么是在栈上创建的.数组名代表着 段连续的内存,其地址和容量在生命周期内是不会改变的,而只能改变其数组内容. 指针: 指针是一种指针类型的变量,变量 ...
- Java的变量类型
以下内容引用自http://wiki.jikexueyuan.com/project/java/variable-types.html: 一个变量提供了程序可以操作的命名存储.Java中的每个变量都有 ...
- HDU 4279 Number(找规律)
Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- Android双向seekbar(带刻度)
※效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/disso ...