mysql atlas 实现读写分离分担数据库压力
2015-09-29 17:03
633 查看
mysql 读写分离都是在mysql cmake 和 mysql master,slave 基础上的服务,如果你还不太了解mysql 主从 或者mysql cmake 安装的话,可以先看看我之前的博客。
make cmake 安装 :
/article/9781022.html
make 主从同步 :
/article/9781056.html
下面先介绍下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,分别为工作端口和管理端口
![](http://img.blog.csdn.net/20150929164104361)
在这里呢,mysql-proxy就是atlas,然后mysql-master和mysql-slave也就是mysql主和从了。
下面开始atlas配置
1、安装atlas
rpm -ivh Atlas-2.2.el6.x86_64.rpm
2、atlas目录结构
3、配置atlas实现读写分离
atlas.conf文档是在是太易懂了,而且介绍也特别清楚,conf档我直接贴出来
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
这时候主从同步及读写分离都已经完成!
make cmake 安装 :
/article/9781022.html
make 主从同步 :
/article/9781056.html
下面先介绍下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
这时候主从同步及读写分离都已经完成!
相关文章推荐
- MYSQL主从同步故障一例及解决过程!
- mysql Xtrabackup备份
- MYSQL group by 分组后只取最大、最小值对应的记录方法
- mysql innodb_force_recovery的各个恢复级别的参数说明
- NavicatforMySQL 数据导入从excel导入数据到mysql
- mysql拒绝访问
- mysql 命令大全
- MySQL从库搭建步骤
- MySQL用户与权限管理
- MySQL复制详解
- mysql服务性能优化—my.cnf配置说明详解(16G内存)
- mysql中文字段转拼音首字母,以及中文拼音模糊查询
- mysql和连接相关的timeout
- MySQL 5.6 my.cnf 参数说明
- Mysql查询缓存碎片、缓存命中率及Nagios监控
- MySQL服务器端参数详解和优化建议
- mysql delayed 延迟插入和参数DELAY_KEY_WRITE
- MySQL索引:查看、创建、删除、使用技巧
- mysql 数据库建立索引
- 安全删除MySQL二进制日志的3种方法