mysql atlas 实现读写分离分担数据库压力

mysql 读写分离都是在mysql cmake 和 mysql master,slave 基础上的服务,如果你还不太了解mysql 主从 或者mysql cmake 安装的话,可以先看看我之前的博客。

make cmake 安装 :
http://blog.csdn.net/wanglei_storage/article/details/48262141
make 主从同步 :
http://blog.csdn.net/wanglei_storage/article/details/48791361



下面先介绍下mysql 主从同步及读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。Ok切入今天正题,利用MySQL主从配置,实现读写分离,减轻数据库压力。



好,下面开始!

先丢个图出来看看大致环境,我在百度找的,这种图实在太多了…就懒得做了!

mysql master:192.168.0.216:3306
mysql slave :192.168.0.225:3306
atlas :192.168.0.225
其实atlas有两个port,分别为工作端口和管理端口

在这里呢,mysql-proxy就是atlas,然后mysql-master和mysql-slave也就是mysql主和从了。

下面开始atlas配置

1、安装atlas
rpm -ivh Atlas-2.2.el6.x86_64.rpm



2、atlas目录结构

ls /usr/local/mysql-proxy/,下面分别有四个文件:
bin、conf 、lib 、log

 bin     : 该目录存放atlas启动程序,还有加密脚本
 conf    : 该目录则存放atlas.conf配置档了,可以有多个实例
 lib     : 该目录存放程序的一些库文件及依赖文件
 log     : 该目录则存放实例产生的日志


3、配置atlas实现读写分离

atlas.conf文档是在是太易懂了,而且介绍也特别清楚,conf档我直接贴出来

vim /usr/local/mysql-proxy/conf/test.conf
[mysql-proxy]

#管理接口的用户名
admin-username = user

#管理接口的密码
admin-password = pwd

#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = 192.168.0.216:3306

#Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
proxy-read-only-backend-addresses = 192.168.0.225:3306@1

#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!
pwds = root:tt1vcW9uR4cq6lRacamUnQ==

#设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。
daemon = true

#设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。
keepalive = true

#工作线程数,对Atlas的性能有很大影响,可根据情况适当设置
event-threads = 24

#日志级别,分为message、warning、critical、error、debug五个级别
log-level = message

#日志存放的路径
log-path = /usr/local/mysql-proxy/log

#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF
sql-log = OFF

#实例名称,用于同一台机器上多个Atlas实例间的区分
instance = test

#Atlas监听的工作接口IP和端口
proxy-address = 192.168.0.225:1234

#Atlas监听的管理接口IP和端口
admin-address = 192.168.0.225:2345

#默认字符集,设置该项后客户端不再需要执行SET NAMES语句
charset = utf8


4、启动前检查

ok! 配置档已经完成,那么在启动atlas之前,我们看看mysql是否同步! 如果主从出现问题那对于用户来说写入的数据未必就读的到了!

主库:

mysql> show slave hosts;
+———–+—————+——+———–+————————————–+
| Server_id | Host | Port | Master_id | Slave_UUID |
+———–+—————+——+———–+————————————–+
| 2 | 192.168.0.225 | 3306 | 1 | 9759ab9b-fcd2-11e4-b8ce-0050568289d0 |
+———–+—————+——+———–+————————————–+
1 row in set (0.00 sec)

从库:

mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes



5、启动atlas

[root@hongxue_225 conf]# /usr/local/mysql-proxy/bin/mysql-proxyd test start
OK: MySQL-Proxy of test is started

其实这个时候atlas是启动了两个进程,一个是工作接口,而另一个则为管理接口,我们连接管理端口来查看atlas中主从状态是否已经为up

[root@hongxue_225 conf]# mysql -uuser -ppwd -h192.168.0.225 -P1234
mysql> select * from backends;
+————-+——————–+——-+——+
| backend_ndx | address | state | type |
+————-+——————–+——-+——+
| 1 | 192.168.0.216:3306 | up | rw |
| 2 | 192.168.0.225:3306 | up | ro |
+————-+——————–+——-+——+
2 rows in set (0.00 sec)



可以看到,server-id为1,state为up,则type为rw
而从库呢,server-id为2,state为up,则type为ro
这时候主从同步及读写分离都已经完成!

时间: 2024-09-20 15:55:31

mysql atlas 实现读写分离分担数据库压力的相关文章

MySQL主从复制与读写分离

MySQL主从复制与读写分离 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部

Mysql主从配置+读写分离(转)

   MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具.   注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl   一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz # cd cmake-3.0.0

MySQL主从同步读写分离的集群配置

大型网站为了解决大量的高并发访问问题,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器支持,如此多的数据库连接操作,服务器性能再好数据库必然会崩溃.数据丢失的话,后果更是不堪设想.这时候,我们会考虑如何减少数据库的连接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached等.如果资金充足的话,必然会想到假设服务器集群,来分担主数据库的压力.或者在硬件设备上,投入大量资金,购买高性能的服务器.出名

使用Amoeba实现MySQL的主从读写分离的例子

主从同步架构的优点 读取工作交给了从服务器,降低了主服务器的压力 在从服务器进行备份,避免备份期间影响主服务器服务 当主服务器出现问题时,可以切换到从服务器. Amoeba介绍  代码如下 复制代码 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发.座落与 Client.DB

Yii实现MySQL多数据库和读写分离实例分析_php实例

本文实例分析了Yii实现MySQL多数据库和读写分离的方法.分享给大家供大家参考.具体分析如下: Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能,也是最强大的框架之一,下文我们来介绍Yii实现MySQL多库和读写分离的方法 前段时间为SNS产品做了架构设计,在程序框架方面做了不少相关的压力测试,最终选定了YiiFramework,至于为什么没选用公司内部的 PHP框架,其实理由很充分,公司的框

Yii实现MySQL多库和读写分离的例子

前段时间为SNS产品做了架构设计,在程序框架方面做了不少相关的压力测试,最终选定了YiiFramework,至于为什么没选用公司内部的 PHP框架,其实理由很充分,公司的框架虽然是"前辈"们辛苦的积累,但毕竟不够成熟,没有大型项目的历练,犹如一个涉世未深的年轻小伙.Yii作为一个 颇有名气开源产品,必定有很多人在使用,意味着有一批人在维护,而且在这之前,我也使用Yii开发过大型项目,Yii的设计模式和它的易扩展特性足以堪当 重任. SNS同一般的社交产品不同的就是它最终要承受大并发和大

Thinkphp实现MySQL读写分离操作示例_php实例

相对于其他方法实现MySQL的读写分离来说,采用Thinkphp框架实现MySQL的读写分离简单易用,其配置文件示例代码如下: 'DB_TYPE'=> 'mysql', 'DB_DEPLOY_TYPE' => 1, //开打支持多服务器 'DB_RW_SEPARATE'=>true,//数据库读写否分离 'DB_HOST'=> '192.168.11.101,192.168.11.102', 'DB_NAME'=>'test', 'DB_USER'=>'admin',

Node.js Sequelize如何实现数据库的读写分离_node.js

一.前言 在构建高并发的Web应用时,除了应用层要采取负载均衡方案外,数据库也要支持高可用和高并发性.使用较多的数据库优化方案是:通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力. 1. replication选项与读写分离 Sequelize 支持读/写分离,要实现读/写分离可以分别为读和写各创建一个Sequelize实例,更方便的使用方式是在创建实例时,通过replication选项分别指定读/写数据库. 要在Seq

yii2 数据库读写分离配置示例

开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的" Web 应用是 config/web.PHP),DSN( Data Source Name )是数据源名称,用于指定数据库信息.如下所示: return [ // ... 'components' => [ // ... 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbna