MySQL 中间件Atlas 达成读写分离
发布时间:2022-03-30 12:09:42 所属栏目:搜索优化 来源:互联网
导读:Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。 对于MySQL Server而言,Atlas像是个Client,而对于Client而言,Atlas则是一个DB server。 〇 MySQL部分: (主从建立步骤略) 主/从上建立具有增删改
Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。 对于MySQL Server而言,Atlas像是个Client,而对于Client而言,Atlas则是一个DB server。 〇 MySQL部分: (主从建立步骤略) 主/从上建立具有增删改查账号: GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'dev'@'192.168.1.187' IDENTIFIED BY 'dev'; FLUSH PRIVILEGES; 从库上可以设置: 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()); } 执行这个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) 最后再检查一下跑完这个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的服务器地址、端口、用户名及密码便可使用读写分离。 (编辑:瑞安网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |