MySQL 中间件Atlas 实现读写分离
发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,〇 Atlas架构介绍Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。对于MySQL Server而言,Atlas像是
千家信息网最后更新 2024年10月22日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安全错误
数据库的锁怎样保障安全
网络安全需求ppt
网络安全手抄报素材四年级
水校高职扩招计算机网络技术
官运小说软件开发
腾讯服务器规模图片
iptv服务器的设置
geode内存数据库
数据库access有什么作用
世纪鼎利有网络安全科技含量吗
大学校园网络安全教育论文
新建的数据库找不到在哪
软件开发选哪个专业好
java软件开发环境配置
提升网络安全方面的建议
电商平台app软件开发定制
普通内存能用在服务器上吗
软件开发外包在哪儿接
灭小说软件开发
阿聊显示无法连接服务器怎么办
传奇装备数据库
百度云服务器怎么用linux
成都嗨房网络技术有限公司简介
北京阿波通网络技术
萤火小程序连接数据库
关于国家网络安全的导语
未来移动通信9G网络技术
网络安全宣传 防止网络贷
软件开发公司税视频
java登陆程序连接数据库
云城通讯服务器平台