博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql atlas 实现读写分离分担数据库压力
阅读量:6576 次
发布时间:2019-06-24

本文共 3084 字,大约阅读时间需要 10 分钟。

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

make cmake 安装 :

make 主从同步 :


下面先介绍下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日志且实时写入磁盘,默认为OFFsql-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
这时候主从同步及读写分离都已经完成!

你可能感兴趣的文章
【计算机视觉】基于Kalman滤波器的进行物体的跟踪
查看>>
《快学Scala》第三章 数组相关操作
查看>>
python编程练习
查看>>
pandas 索引与列相互转化
查看>>
从100PV到1亿级PV站点架构演变
查看>>
Windows 7 x64环境下JDK8安装过程
查看>>
Intent调用系统拍照程序,返回图片太小的问题
查看>>
FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!
查看>>
会动的Tabbar
查看>>
完全卸载VS2013的方法
查看>>
十分钟学会Charles抓包(iOS的http/https请求)
查看>>
zoj2676 Network Wars(0-1分数规划,最大流模板)
查看>>
存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
查看>>
Datatables js 复杂表头 合并单元格
查看>>
互联网科普贴-阿里巴巴国际站是什么
查看>>
Live555研究之中的一个 源码编译
查看>>
cocos2d JS-(JavaScript) cc.each循环遍历对象
查看>>
PDF如何自动滚动阅读
查看>>
leetcode ----Trie/stack专题
查看>>
label文字居中
查看>>