`
dd286004738
  • 浏览: 25073 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

MySQL-读写分离实现--Atlas

 
阅读更多


 MySQL的读写分离实现方式总的来说有两种:

1. 代码级别的实现

2. 应用中间件

使用代码来实现对于coder来说数据库集群就没有透明,有任何集群方面的修改都涉及到动代码,不灵活,所以主页君不太喜欢。

中间件的话有MySQL官方的开源项目MySQL-Proxy,阿里的Amoeba。

但是前者存在很大的性能问题,稳定性也不高,主页君的亲测中发现,它会建立大量ESTABLISHED状态的 TCP 连接,最终导致不能建立数据库连接(今天看api发现它与数据库建立的是TCP长连接,可以通过设置max-idle-connections,避免生成太多不必要的空闲连接)。

后者具备很多优点,可以自定义很多策略,数据分片,数据路由等等,但是他存在一个很大的弱点 ---- 不支持事务。

各方考察后最终启用的是360开源项目Atlas,它是将MySQL-Proxy 进行优化包装,改善其本身性能不稳定,以及不支持事务的缺点。
特性:
1.支持做LVS,方便以后做数据库方面的平行扩展
2.支持事务
3.如果需要强制到Master中读数据可以在sql前添加 标志:/*master*/
4.master宕机后,读操作不会受到影响
5.具有灵活的管理接口,可以动态添加,删除,上线下线后端的DB,不需重启proxy
6.自动分表

项目地址:
https://github.com/Qihoo360/Atlas

1.    install
下载deb安装包
 sudo dpkg -i --instdir=$atlas atlas.deb
2.    configure
修改 $atlas/conf/xx.cnf

这里的配置文件名称,配置文件中的 实例名称‘instance’配置项 及 启动proxy时的参数名称三者必须保持一致。

配置很简单,参见注释做相应修改即可。


pwds = proxy1:ZWbpeaafzJw=    # 是访问数据库用户名和密码,
密码需要使用 $atlas/bin目录下的encrypt进行加密,如encrpt 112233,加密结果为: ZWbpeaafzJw=

 

max-idle-connections   #  连接池的最大空闲连接数,由于MySQL-Proxy与MySQL之间建立的是tcp长连接,使用此参数可以避免建立太多空闲连接。


3.    启动:
修改 $atlas/bin/mysql-proxyd 的proxydir 参数
$atlas/bin/mysql-proxyd xx start
$atlas/bin/mysql-proxyd xx stop
$atlas/bin/mysql-proxyd xx restart
4.    使用:
数据连接:
jdbc:mysql://localhost:1234/db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    管理接口:(遵从mysql标准协议)
进入管理员界面:
mysql -h127.0.0.1  -P2345 -uuser -ppwd         #使用相应配置文件中的参数

SELECT * FROM help;        #查看各个管理命令如何使用
SELECT * FROM backends        #查看db节点
SET OFFLINE $backend_id        #下线DB
SET ONLINE $backend_id          # 上线DB                           
ADD MASTER $backend             # 添加master: "add master 127.0.0.1:3306"             
ADD SLAVE $backend             # 添加slave: "add slave 127.0.0.1:3306"              
REMOVE BACKEND $backend_id      # 移除: "remove backend 1"                     
ADD CLIENT $client          # 添加客户端: "add client 192.168.1.2"  这里的ip是用于过滤访问此Atlas实例
REMOVE CLIENT $client       # 移除客户端: "remove client 192.168.1.2"            
SAVE CONFIG        #保存修改到配置文件

Issue:
1.    error while loading shared libraries: libcrypto.so.0.9.8
sudo apt-get install libssl0.9.8

2.    缺少外部库
libmysqlclient.so.16

3.    数据库存放中文乱码:
数据连接url:
jdbc:mysql://localhost:1234/db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
使用‘&’而不是转义后的‘&’

PS:

架构图
 

 
配合lvs:
 

 

  • 大小: 36.1 KB
  • 大小: 111.8 KB
分享到:
评论

相关推荐

    使用Atlas实现MySQL读写分离-附带centos-atlas资源包

    使用Atlas实现MySQL读写分离-附带centos-atlas资源包 Atlas-2.1.el5.x86_64.rpm Atlas-2.1.el6.x86_64.rpm Atlas-2.2.el5.x86_64.rpm Atlas-2.2.el6.x86_64.rpm 几个资源包,下载好久才弄好

    Atlas-2.2.1

    Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,...* 读写分离 * 从库负载均衡 * IP过滤 * SQL语句黑白名单 * 自动分表

    linux centos MySQL主从复制+Atlas读写分离

    资源整理 一、rpm方式安装MySQL 1 ...2、atlas+mysql读写分离没有生效,一直使用主库进行操作 13 3、MySQL主从同步常见异常及恢复方法 13 4、MySQL表被锁 14 5、MySQL启动报错 15 五、常用命令 15

    linux运维学习笔记:Mysql中间件Atlas读写分离原理与实战.pdf

    linux运维学习笔记:Mysql中间件Atlas读写分离原理与实战

    MySQL数据库读写分离中间件Atlas

    Atlas是由奇虎360公发的基于MySQL协议的数据库中间件产品,它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了若干Bug,并增加了很多功能特性。目前该产品在360内部得到了广泛应用,覆盖80%以上的MySQL业务...

    MySQL Proxy 快速实现读写分离以及负载均衡

    MySQL Proxy 快速实现读写分离以及负载均衡

    Atlas-2.2-debian7.0-x86_64.deb

    MySQL读写分离中间件,ubuntu版安装包

    MHA+atlas.zip

    mysql高可用和读写分离软件.软件包包括如下内容 mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm master_ip_failover Atlas-2.2.1.el6.x86_64.rpm email

    MySQL读写分离

    MySQL读写分离之Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。

    atlas代理【高可用】+mysql MHA高可用

    atlas读写数据库实现读写分离,mysql使用mha高可用架构。

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ │ 4_Atlas配置和读写分离实现.mp4 │ │ 5_Atlas分库分表实现.mp4 │ │ 6_MHA搭建和故障切换原理剖析.mp4 │ │ │ └─MySQL DBA_课堂命令-Mycat和Atlas和MHA │ mysql-master.log │ mysql-mycat.log │ ...

    Atlas:一个高性能稳定的 MySQL 代理

    读写分离2.从库负载均衡3.IP过滤4.自动分表5.DBA可平滑上下线DB6.自动摘除宕机的DB###二、Atlas相对于官方MySQL-Proxy的优势1.将主流程中所有Lua代码用C重写,Lua仅用于管理接口2.重写网络模型、线程模型3.实现了...

    atlas+lvs+keepalived mysql多主复制负载均衡搭建

    基于mysql的负载均衡有很多种方式,如haproxy,前面一篇博客有介绍,还可以用更高效lvs做负载均衡,下面是基于percona xtradb cluster的三个节点的多主复制+atlas的lvs负载均衡,其实这里是不需要用atlas的,因为...

    Atlas-2.2.1.el6.x86_64.rpm

    Atlas是一个位于前端应用与后端MySQL数据库之间的中间件,它使得应用程序员无需再关心读写分离、分表等与MySQL相关的细节,可以专注于编写业务逻辑,同时使得DBA的运维工作对前端应用透明,上下线DB前端应用无感知。

    mysql读写分离

    通过MySQL中间件做主从集群,mysql Proxy、Amoeba、Atlas等中间件貌似都能符合需求。 优点是与应用层解耦。 缺点是增加一个服务维护的风险点,性能及稳定性待测试,需要支持代码强制主从和事务。

    mysql 集群部署

    本集群为MySQL异步集群,适用场景为低并发写高并发读的系统应用,采用MySQL复制机制和MySQL Proxy的读写分离以及负载均衡搭建的MySQL异步集群。为了MySQL Proxy服务的高可用性,采用Keepalived实现MySQL Proxy的双机...

    非常详细的某培训机构mysql学习笔记

    非常详细的某培训机构mysql学习笔记,... MySQL读写分离 MySQL Proxy Atlas Amoeba MySQL高可用MHA 项目拓扑 Yum仓库配置 MySQL主备复制 MHA部署 测试MHA MySQL5 MySQL集群技术 Galera MySQL LNMP环境搭建

    高可用性、负载均衡的mysql+集群

    高可用性、负载均衡的mysql + 集群

    atlas_2.2.1-2_amd64.deb

    mysql读写分离中间件,ubuntu安装版,使用dpkg -i安装即可

Global site tag (gtag.js) - Google Analytics