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
这时候主从同步及读写分离都已经完成!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值