zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL-第十一章-读写分离(Atlas)

mysql 读写 分离 第十一章 Atlas
2023-09-14 09:15:46 时间

目录

1. Atlas介绍

2. 安装配置

3. Atlas功能测试

4. 生产用户要求

5. Atlas基本管理

5.1 连接管理接口

5.2 打印帮助

5.3 查询后端所有节点信息

5.4 上线或下线节点

5.5 添加删除节点

5.6 用户管理

5.7 保存配置到配置文件

6. 自动分表

6.1介绍

7. 关于读写分离建议

8. 中间件介绍


1. Atlas介绍

 

 Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。

它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。

360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。

下载地址

https://github.com/Qihoo360/Atlas/releases

注意:

1、Atlas只能安装运行在64位的系统上

2、Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm。

3、后端mysql版本应大于5.1,建议使用Mysql 5.6以上

Atlas都为我们安装了什么:

[root@db03 bin]# rpm -ql Atlas
/etc/mysql-proxy/mysql-proxy.cnf
/etc/rc.d/init.d/mysql-proxy     #启动脚本
/usr/bin/encrypt                 #制作密码工具
/usr/bin/mysql-binlog-dump
/usr/bin/mysql-myisam-dump
/usr/bin/mysql-proxy

2. 安装配置

1.yum install -y Atlas*

2.cd /usr/local/mysql-proxy/conf

3.mv test.cnf test.cnf.bak

4.vi test.cnf
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 10.0.0.55:3306
proxy-read-only-backend-addresses = 10.0.0.51:3306,10.0.0.53:3306
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=ON
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8

5.启动atlas
/usr/local/mysql-proxy/bin/mysql-proxyd test start
ps -ef |grep proxy

3. Atlas功能测试

测试读操作:
mysql -umha -pmha  -h 10.0.0.53 -P 33060 
db03 [(none)]>select @@server_id;
测试写操作:
mysql> begin;select @@server_id;commit;

4. 生产用户要求

开发人员申请一个应用用户 app(  select  update  insert)  密码123456,要通过10网段登录

1. 在主库中,创建用户

grant select ,update,insert on *.* to app@'10.0.0.%' identified by '123456';

2. 在atlas中添加生产用户

/usr/local/mysql-proxy/bin/encrypt  123456      ---->制作加密密码
vim test.cnf
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=,app:/iZxz+0GRoA=
/usr/local/mysql-proxy/bin/mysql-proxyd test restart
[root@db03 conf]# mysql -uapp -p123456  -h 10.0.0.53 -P 33060

5. Atlas基本管理

5.1 连接管理接口

mysql -uuser -ppwd -h127.0.0.1 -P2345

5.2 打印帮助

mysql> select * from help;
| SELECT * FROM help         | shows this help                                         |
| SELECT * FROM backends     | lists the backends and their state                      |
| SET OFFLINE $backend_id    | offline backend server, $backend_id is backend_ndx's id |
| SET ONLINE $backend_id     | online backend server, ...                              |
| ADD MASTER $backend        | example: "add master 127.0.0.1:3306", ...               |
| ADD SLAVE $backend         | example: "add slave 127.0.0.1:3306", ...                |
| REMOVE BACKEND $backend_id | example: "remove backend 1", ...                        |
| SELECT * FROM clients      | lists the clients                                       |
| ADD CLIENT $client         | example: "add client 192.168.1.2", ...                  |
| REMOVE CLIENT $client      | example: "remove client 192.168.1.2", ...               |
| SELECT * FROM pwds         | lists the pwds                                          |
| ADD PWD $pwd               | example: "add pwd user:raw_password", ...               |
| ADD ENPWD $pwd             | example: "add enpwd user:encrypted_password", ...       |
| REMOVE PWD $pwd            | example: "remove pwd user", ...                         |
| SAVE CONFIG                | save the backends to config file                        |
| SELECT VERSION             | display the version of Atlas   

5.3 查询后端所有节点信息

mysql>  SELECT * FROM backends    ;
+-------------+----------------+-------+------+
| backend_ndx | address        | state | type |
+-------------+----------------+-------+------+
|           1 | 10.0.0.55:3306 | up    | rw   |
|           2 | 10.0.0.51:3306 | up    | ro   |
|           3 | 10.0.0.53:3306 | up    | ro   |
+-------------+----------------+-------+------+
3 rows in set (0.00 sec)

5.4 上线或下线节点

SET OFFLINE $backend_id            #下线后端节点
SET ONLINE $backend_id             #上线后端节点

5.5 添加删除节点

ADD MASTER $backend           #添加主节点
ADD SLAVE $backend            #添加从节点
REMOVE BACKEND $backend_id    #删除后端节点

5.6 用户管理

SELECT * FROM pwds            #查看所有应用用户及管理用户信息
ADD PWD $pwd                  #添加用户:密码
ADD ENPWD $pwd                #添加用户:加密密码
REMOVE PWD $pwd               #移除用户

5.7 保存配置到配置文件

SAVE CONFIG;

6. 自动分表

6.1介绍

使用Atlas的分表功能时,首先需要在配置文件test.cnf设置tables参数。

tables参数设置格式:数据库名.表名.分表字段.子表数量,

比如:

你的数据库名叫school,表名叫stu,分表字段叫id,总共分为2张表,那么就写为school.stu.id.2,如果还有其他的分表,以逗号分隔即可。

7. 关于读写分离建议

MySQL-Router     --->MySQL官方

ProxySQL        --->Percona

Maxscale         --->MariaDB

8. 中间件介绍

Cobar:

  阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。 在阿里经受住了考验,后面由于作者的走开的原因cobar没有人维护 了,阿里也开发了tddl替代cobar。

MyCAT:

  社区爱好者在阿里cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中。目前MyCAT社区活 跃度很高,目前已经有一些公司在使用MyCAT。

OneProxy:

  数据库界大牛,前支付宝数据库团队领导楼总开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件,专注在性能和稳定性上。

Vitess:

  这个中间件是Youtube生产在使用的,但是架构很复杂。 与以往中间件不同,使用Vitess应用改动比较大要使用他提供语言的API接口。

Kingshard:

       Kingshard是前360Atlas中间件开发团队的陈菲利用业务时间用go语言开发的,目前在不断完善。

Atlas:

       360团队基于mysql proxy 把lua用C改写。原有版本是支持分表, 目前已经放出了分库分表版本。

MaxScale与MySQL Route:

       MaxScale是mariadb 研发的,目前版本不支持分库分表。MySQL Route是现在MySQL 官方Oracle公司发布出来的一个中间件。