实验2 安装Atlas实现读写分离

系统版本:        windows7x64

虚拟机:          centos 6.5x64

ip规划:          主数据库服务器:192.168.0.44

从数据库服务器:192.168.0.54

proxy服务器:192.168.0.29

ssh连接工具:    ssh secure shell client

vpn工具:        ssl vpn-plus client

实验内容:        1.为proxy服务器下载安装Atlas

2.配置Atlas

3.运行Atlas并初步测试

4.验证Atlas读写分离

实验步骤:

第一步  下载安装Atlas

Atlas主页 https://github.com/Qihoo360/Atlas

Atlas下载页 https://github.com/Qihoo360/Atlas/releases

Atlax的安装说明

https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%AE%89%E8%A3%85

1.下载Atlas

系统是centos 6.5 ,所以下载Atlas-2.1.el6.x86_64.rpm


Wegt https://github.com/Qihoo360/Atlas/releases/download/2.1/Atlas-2.1.e

l6.x86_64.rpm

在这一步经常报错,错误代码403


Connecting to s3.amazonaws.com|205.251.243.98|:443... connected.

HTTP request sent, awaiting response... 403 Forbidden

2014-10-06 20:29:55 ERROR 403: Forbidden.

不知道原因,多试几次,如果一直不能下载,右键选择用迅雷下载,再复制迅雷里的地址试试(虽然地址是一样的)

2.安装Atlas


rpm -ivh Atlas-2.1.el6.x86_64.rpm

3.更改配置文件

Atlas的安装目录是/usr/local/mysql-proxy,进入安装目录下的conf目录,可以看到已经有一个名为test.cnf的默认配置文件,我们只需要修改里面的某些配置项,不需要从头写一个配置文件。


#cd /usr/local/mysql-proxy/conf   #进入Altas安装目录下的conf目录

#ls                                  #查看目录下的文件

#vi test.cnf                        #进入test.cnf的默认配置文件

test.cnf全是乱码,直接删除


rm test.cnf

再新建


#vi test.cnf

(这里加一段特别说明:

vi /test.cnf表示编辑根目录下的test.cnf文件,如果没有,就创建一个空白文件

vi test.cnf表示用vi编辑当前路径下的test.cnf文件

将下面的代码写入配置文件(说明在后面列出)


[mysql-proxy]

admin-username=tf1991

admin-password=woaimama0512

proxy-backend-addresses = 192.168.0.44:3306

proxy-read-only-backend-addresses = 192.168.0.54:[email protected]

pwds=root:MlyAduTD8XThz4/QFy1yJw==

daemon = true

keepalive = true

event-threads = 4

log-level = message

log-path = /usr/local/mysql-proxy/log

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

sql-log = OFF

proxy-address = 0.0.0.0:1234

admin-address = 0.0.0.0:2345

charset = utf8

配置说明如下:


[mysql-proxy]

(必备,默认值即可)管理接口的用户名

admin-username = user

(必备,默认值即可)管理接口的密码

admin-password = pwd

(必备,根据实际情况配置)主库的IP和端口

proxy-backend-addresses = 192.168.0.12:3306

(非必备,根据实际情况配置)从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔。   proxy-read-only-backend-addresses = 192.168.0.13:3306,192.168.0.14:3306

(必备,根据实际情况配置)用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,用户名与密码之间用冒号分隔。主从数据库上需要先创建该用户并设置密码(用户名和密码在主从数据库上要一致)。比如用户名为myuser,密码为mypwd,执行./encrypt   mypwd结果为HJBoxfRsjeI=,则设置如下行所示:

pwds = myuser: HJBoxfRsjeI=

(必备,默认值即可)Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true

daemon = true

(必备,默认值即可)设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true

keepalive = true

(必备,根据实际情况配置)工作线程数,推荐设置成系统的CPU核数的2至4倍

event-threads = 4

(必备,默认值即可)日志级别,分为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监听的工作接口IP和端口

proxy-address = 0.0.0.0:1234

(必备,默认值即可)Atlas监听的管理接口IP和端口 admin-address =   0.0.0.0:2345

(可选项,可不设置)分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项,子表需要事先建好,子表名称为表名_数字,数字范围为[0,子表数-1],如本例里,子表名称为mt_0、mt_1、mt_2

tables = person.mt.id.3

(可选项,可不设置)默认字符集,若不设置该项,则默认字符集为latin1

charset = utf8

(可选项,可不设置)允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接 client-ips = 127.0.0.1, 192.168.1

(可选项,极少需要)Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置

lvs-ips = 192.168.1.1

关于密码加密:

Encrypt在 /usr/local/mysql-proxy/bin目录下,先进入该目录


#cd /usr/local/mysql-proxy/bin

然后执行


./encrypt woaimama0512

得到:


pwds=root:MlyAduTD8XThz4/QFy1yJw==

在后端服务器192.168.0.54上对代理192.168.0.44授权


grant all on *.* to [email protected] ′92.168.0.44′ identified by ′′ ;

二、运行Atlas

1.启动Altas

(一开始按照官网的 ./mysql-proxyd test start发现启动不了,检查了一下文件,发现在conf里没有test,解决的具体办法如下)

进入/usr/local/mysql-proxy/bin目录


cd /usr/local/mysql-proxy/bin

查看目录下的文件:ls

发现在bin目录下有test.cnf,将其复制到conf里,然后就可以启动了,复制与启动的命令如下(..是上层目录,而.是当前目录):


cp test.cnf ../conf/test.cnf

./mysql-proxyd test start

2.查看Atlas的运行状况


./mysql-proxyd test status

应该有两个进程的。

注意:

(1). 运行文件是:mysql-proxyd(不是mysql-proxy)。

(2). test是conf目录下配置文件的名字,也是配置文件里instance项的名字,三者需要统一。

(3). 可以使用ps -ef | grep mysql-proxy查看Atlas是否已经启动或停止。

执行命令:mysql -h127.0.0.1 -P1234 -u用户名 -p密码,如果能连上则证明Atlas初步测试正常,可以再尝试发几条SQL语句看看执行结果是否正确。

进入Atlas的管理界面的命令:mysql -h127.0.0.1 -P2345 -uuser -ppwd,进入后执行:select * from help;查看管理DB的各类命令。

按照help里的指示,输入select * from backends;

三、验证Atlas读写分离

配置完成之后,如何验证读写分离是有效的呢?可以通过查看general_log来看读写请求的分配情况.general_log是记录所有SQL语句,默认是关掉的,要将其打开先。

1.打开general_log

登入主服务器的mysql,键入show variables like ‘%log%‘; 显示结果如下:

查看general_log 的value值,若为OFF,则键入


set global general_log=on;

将general_log 的value值设置为on。general_log_file的value值为general_log日志的所在位置,即/var/run/mysqld/mysqld.log,general_log的日志内容会存与此文件。

设置好后结果如下图:

在从上做同样的事:

2.清空mysqld.log

为了便于查看general_log变化内容,先将mysqld.log清空。键入


cd /var/run/mysqld/

进入/var/run/mysqld/目录,键入ls命令查看该目录下的文件,可以看到mysqld.log

键入如下命令查看现在的general_log内容


vi mysqld.log

键入如下命令将其清空


cat /dev/null > mysqld.log

在从上做同样的事

3.验证读操作

登陆atlas,进入mysql的操作功能界面。在atlas上执行查询语句。

在主服务器上查看mysqld.log日志,看不到查询记录。

而在从服务器上查看mysqld.log日志可以看到查询记录。

4.验证写操作

在atlas上插入一条数据

在主服务器上查看mysqld.log日志,可以看到插入记录。

而在从服务器上看不到插入记录。

至此成功验证读写分离。

//使用NaviCat连接工作端口,用户名和密码就是上面配置文件的管理用户和密码

//出现的问题:

test.cnf配置文件

时间: 2024-10-19 23:58:17

实验2 安装Atlas实现读写分离的相关文章

proxysql安装配置和读写分离初识

前言 笔者从事MySQL的相关工作,最近线上需要一款性能上佳的MySQL中间件产品,本人在了解一些如ProxySQL.MariaDB MaxScale.MySQL Router.Atlas.DBProxy等相关产品后,经过反复对比和相关测试,初步选用了proxysql.本文是proxysql系列的第一篇,笔者计划proxysql系列的博文将为您介绍proxysql的安装配置.读写分离.可用性测试.深入了解proxysql各组件.proxysql+keepalived实现高可用.proxysql和

使用Atlas实现读写分离

 Atlas实现读写分离 环境介绍: 试验机器4台: 192.168.0.41   Atlas 192.168.0.42   Master 192.168.0.43   Slave-1 192.168.0.44   Slave-2 4台机器均为RHEL 6.4 x86_64系统 [[email protected] ~]# uname -a Linux Nginx 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x

生产环境实践Mysql5.7主从+Atlas实现读写分离

Mysql主从搭建 主从复制可以使MySQL数据库主服务器的主数据库,复制到一个或多个MySQL从服务器从数据库,默认情况下,复制异步; 根据配置,可以复制数据库中的所有数据库,选定的数据库或甚至选定的表.MySQL的工作方式是单进程多线程的方式,那么线程的多寡则会极大的影响到MySQL的效率,而在早期MySQL的主从都是由单线程进行的,使得主从复制除了相关的客观因素外还受到自身的影响:为此在MySQL的5.7版本中对多线程主从复制来进一步的改善,在MySQL 5.7中是按照逻辑时钟(类似CPU

Atlas实现读写分离

该Atlas方案的实现需要基于MHA架构(而MHA架构需要 实现mysql主从复制且开启GTID特性) 常见方案介绍: Mysql-proxy(oracle)Mysql-router(oracle)Atlas (Qihoo 360)Atlas-sharding (Qihoo 360)Cobar(是阿里巴巴(B2B)部门开发)Mycat(基于阿里开源的Cobar产品而研发)TDDL Smart Client的方式(淘宝)DRDS 阿里云的产品Oceanus(58同城数据库中间件)OneProxy(

mysql利用atlas进行读写分离时,一直走主库的问题

项目中,利用atlas对mysql数据库进行了读写分离. 当时配置了去从库读数据. 当用数据库工具连接代理测试时,一切正常. 当在项目中使用框架mybatis连数据库时,却都直接去主库读写数据了. 自己写个main方法 用jdbc连接也是正常的.一用mybatis框架就不正常了,难道atlas对mybatis不支持吗? 于是各种百度,谷歌... 最后发现原因:如果有事务存在的话,atlas就强制走主库.而这个方法类上偏偏添加了事务@Transactional 解决办法在方法上加上@Transac

采用Atlas mysql 读写分离工具

前阵子测试了360开源出来的Atlas,总的来说挺好的,这里先标记下,备用.听说amoeba也不错,大牛还给我推荐了一篇文章,也先留着. 测试了下atlas的性能,挺给力的. 在并发2000时,atlas会提示I have no server backend,closing connection.判断应为mysql不能及时提供空闲连接导致,但atlas并未出现任何瓶颈.但是,atlas自身没有断开mysql连接的设置,完全依赖于mysql自身的超时时间. 其读写分离策略是除了完全的读请求,其余的

Mycat的安装启动和读写分离

介绍: Mycat作为数据库中间件,用来实现读写分离.数据分片(垂直拆分/水平拆分).多数据源整合等功能. 原理: Mycat通过拦截用户发过来的SQL语句,并对其进行特定的分析,如分片分析.路由分析.读写分离分析.缓存分析等,然后将此SQL发往后端对应的数据库,并将返回的结果做适当的处理,最终返回给用户. 安装启动: 1.将Mycat的tar.gz格式的压缩包拷贝到Linux系统下的opt目录下 2.使用Linux的编辑脚本(如Xshell),进入到opt目录下解压压缩文件(tar -zxvf

mysql的MHA之Atlas 配置, 读写分离实现

1.安装 Atlas #在主库安装,进入安装包目录 [[email protected]-db01 ~]# cd /home/oldboy/tools/ #下载Atlas [[email protected]-db01 tools]# wget httpss://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm #安装 [[email protected]-db01 tools]# rpm -

Atlas+keepalived实现mysql读写分离

本文主要介绍atlas安装.mysql读写分离的配置.mysql主从配置及利用keepalived解决atlas单点故障. Atlas介绍 Atlas是基于mysql-proxy做的二次开发.Atlas是一个位于应用程序与MySQL之间中间件.在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB.Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯.它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,