MySQL 中间件Atlas 实现读写分离
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,〇 Atlas架构介绍Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。对于MySQL Server而言,Atlas像是
千家信息网最后更新 2025年01月24日MySQL 中间件Atlas 实现读写分离〇 Atlas架构介绍
Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。
对于MySQL Server而言,Atlas像是个Client,而对于Client而言,Atlas则是一个DB server。
〇 实验结构
OS: CentOS 6.5 64bit
MySQL version: 5.6.30
Master:192.168.1.185
Slave:192.168.1.186
proxy(Atlas):192.168.1.187
客户端:192.168.1.192
〇 MySQL部分:
(主从建立步骤略)
主/从上建立具有增删改查账号:
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'dev'@'192.168.1.187' IDENTIFIED BY 'dev';FLUSH PRIVILEGES;
从库上可以设置:
master上创建一张测试表:
然后再到客户端(192.168.1.192)尝试对Atlas(192.168.1.187)发起增删改查请求:
此处写了一个php脚本来模拟请求:
此处可以通过 yum install -y php php-mysql 来安装一下php相关依赖。
执行这个php脚本后,可以分别检查一下master(192.168.1.185)和从库(192.168.1.186)的general log:
最后再检查一下跑完这个php脚本后的test.a表的数据,是否和预期的一致:
当然,显然是与预期一致。
显然Atlas作为proxy,已经将写请求提交给master(192.168.1.185),将读请求提交给slave(192.168.1.186)。
对于客户端和开发人员,只需要获取一个Atlas的服务器地址、端口、用户名及密码便可使用读写分离。
Atlas也可以实现分表功能,此处可自行翻阅Atlas Home。
〇 参考文档:
https://github.com/Qihoo360/Atlas/releases
https://github.com/Qihoo360/Atlas/wiki
作者微信公众号(持续更新)
Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。
对于MySQL Server而言,Atlas像是个Client,而对于Client而言,Atlas则是一个DB server。
〇 实验结构
OS: CentOS 6.5 64bit
MySQL version: 5.6.30
Master:192.168.1.185
Slave:192.168.1.186
proxy(Atlas):192.168.1.187
客户端:192.168.1.192
〇 MySQL部分:
(主从建立步骤略)
主/从上建立具有增删改查账号:
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'dev'@'192.168.1.187' IDENTIFIED BY 'dev';
从库上可以设置:
- SET GLOBAL log_output='TABLE';
- SET GLOBAL general_log=on;
master上创建一张测试表:
- master> CREATE TABLE test.a(id int);
- Query OK, 0 rows affected (0.03 sec)
然后再到客户端(192.168.1.192)尝试对Atlas(192.168.1.187)发起增删改查请求:
此处写了一个php脚本来模拟请求:
- <?php
- $con = mysql_connect("192.168.1.187","dev","dev");
- if (!$con){
- die('connect error: ' . mysql_error());
- }
- mysql_select_db("my_db", $con);
- mysql_query("INSERT INTO test.a SELECT 1;");
- mysql_query("UPDATE test.a SET id=222 WHERE id=1;");
- mysql_query("DELETE FROM test.a WHERE id=222;");
- mysql_query("INSERT INTO test.a SELECT 123456;");
- mysql_query("SELECT count(1) FROM test.a;");
- mysql_close($con);
- ?>
此处可以通过 yum install -y php php-mysql 来安装一下php相关依赖。
执行这个php脚本后,可以分别检查一下master(192.168.1.185)和从库(192.168.1.186)的general log:
- master> SELECT user_host, argument
- -> FROM mysql.general_log
- -> WHERE user_host='dev[dev] @ [192.168.1.187]' ;
- +-----------------------------+-------------------------------------+
- | user_host | argument |
- +-----------------------------+-------------------------------------+
- | dev[dev] @ [192.168.1.187] | INSERT INTO test.a SELECT 1 |
- | dev[dev] @ [192.168.1.187] | UPDATE test.a SET id=222 WHERE id=1 |
- | dev[dev] @ [192.168.1.187] | DELETE FROM test.a WHERE id=222 |
- | dev[dev] @ [192.168.1.187] | INSERT INTO test.a SELECT 123456 |
- +-----------------------------+-------------------------------------+
- 4 rows in set (0.00 sec)
- slave> SELECT user_host, argument
- -> FROM mysql.general_log
- -> WHERE user_host='dev[dev] @ [192.168.1.187]' ;
- +-----------------------------+-----------------------------+
- | user_host | argument |
- +-----------------------------+-----------------------------+
- | dev[dev] @ [192.168.1.187] | SELECT count(1) FROM test.a |
- +-----------------------------+-----------------------------+
- 1 rows in set (0.00 sec)
最后再检查一下跑完这个php脚本后的test.a表的数据,是否和预期的一致:
- slave> SELECT * FROM test.a;
- +--------+
- | id |
- +--------+
- | 123456 |
- +--------+
- 1 row in set (0.00 sec)
当然,显然是与预期一致。
显然Atlas作为proxy,已经将写请求提交给master(192.168.1.185),将读请求提交给slave(192.168.1.186)。
对于客户端和开发人员,只需要获取一个Atlas的服务器地址、端口、用户名及密码便可使用读写分离。
Atlas也可以实现分表功能,此处可自行翻阅Atlas Home。
〇 参考文档:
https://github.com/Qihoo360/Atlas/releases
https://github.com/Qihoo360/Atlas/wiki
作者微信公众号(持续更新)
客户
客户端
脚本
中间件
一致
分表
开发
检查
中间层
主从
人员
作者
公众
分库
功能
可以通过
地址
密码
数据
文档
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机病毒可以连接数据库
数据库中的扩展名为
太仓网络技术支持电话
网络技术服务行为
毕节华为服务器内存
小蚁服务器
梦幻西游转区后没有历史服务器
网络安全中五项防护
安阳政务软件开发
dapper连接的数据库
中国互联网的服务器
杭州运维管理软件开发
网络安全接入边界平台
海关数据库进出口单位
软件开发执行标准
软件开发甲方应该注意什么
ukb数据库简介
代号海文星显示服务器超时
网络技术应用教科版教案全套
公安sql数据库保存期限
网络安全培训平台登录
重庆财务软件开发机构
激战2服务器怎么样
佳通轮胎 软件开发 加班吗
超微服务器U盘引导启动
长龙服务器区
中小学生网络安全相关常识
常州电子网络技术怎么样
网络安全事件和对策
jsp链接 数据库