基于Atlas实现mysql读写分离(2)--读写分离

时间:2023-01-08 04:09:00

这篇开始玩玩atlas来实现数据库的读写分离

atlas是什么?

atlas说白了就是一个数据库代理,起到一个代理作用,实现读写分离

基于Atlas实现mysql读写分离(2)--读写分离

中间的mysql-proxy指的就是atlas

1、atlas配置

1.1下载

wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
1.2安装

rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 
安装成功之后
它会默认在”/usr/local/mysql-proxy”下给你生成4个文件夹,以及需要配置的文件,如下:
基于Atlas实现mysql读写分离(2)--读写分离

bin目录下放的都是可执行文件
1. “encrypt”是用来生成MySQL密码加密的,在配置的时候会用到
2. “mysql-proxy”是MySQL自己的读写分离代理
3. “mysql-proxyd”是360弄出来的,后面有个“d”,服务的启动、重启、停止。都是用他来执行的
conf目录下放的是配置文件
1. “test.cnf”只有一个文件,用来配置代理的,可以使用vim来编辑
lib目录下放的是一些包,以及Atlas的依赖
log目录下放的是日志,如报错等错误信息的记录
1.3加密

进入bin目录执行加密

./encrypt 123
基于Atlas实现mysql读写分离(2)--读写分离
1.4配置test.cnf

基于Atlas实现mysql读写分离(2)--读写分离
开启日志

基于Atlas实现mysql读写分离(2)--读写分离

这是设置工作接口与管理接口的,如果ip设置的”0.0.0.0”就是说任意IP都可以访问这个接口,当然也可以指定IP和端口

基于Atlas实现mysql读写分离(2)--读写分离

1.5启动atlas

进入master主库检查主从同步是否有问题

基于Atlas实现mysql读写分离(2)--读写分离

ok这样是没问题的;

进入bin目录下,执行以下语句启动

./mysql-proxyd test start
基于Atlas实现mysql读写分离(2)--读写分离


1.6进入atlas管理接口

我们连接管理端口来查看atlas中主从状态是否已经为up

mysql -uuser -ppwd -h127.0.0.1 -P2345
select * from backends; 
基于Atlas实现mysql读写分离(2)--读写分离
可以看到,server-id为1,state为up,则type为rw 
而从库呢,server-id为2,state为up,则type为ro 
这时候主从同步及读写分离都已经完成!

2、测试

2.1Navicat连接atlas

我们从windows下的Navicat来连接atlas这台机子,连接的是工作接口端口为1234

连接完之后呢我们可以看到test数据库下有user表

2.2atlas这台机子开启日志

进入atlas的日志目录log

执行以下:tail -f sql_test.log

基于Atlas实现mysql读写分离(2)--读写分离

2.3执行测试语句

在Navicat连接的atlas下我们来写sql

当执行select * from user时,发现走的机子是129从库

基于Atlas实现mysql读写分离(2)--读写分离

当执行insert语句是发现走的130主库

基于Atlas实现mysql读写分离(2)--读写分离

如果需要写走主库,可以进行强行查询如下:

/*master*/ SELECT * FROM user 

ok至此我们已经完成了读写分离

如有不对地方望指正