Atlas实现mysql读写分离
前提:
mysql主从复制:http://zhongyufeng.com/archives/Jp4pEpPi
安装Atlas
1.Docker安装Atlas
docker run -it --name atlas -v /usr/local/mysql-proxy/conf:/usr/local/mysql-proxy/conf -p 1234:1234 -p 2345:2345 mybbcat/docker-360atlas /bin/bash
2.修改test.cnf
vim /usr/local/mysql-proxy/conf
[mysql-proxy]
#管理接口的用户名,指定也行,默认也行
admin-username = admin
#管理接口的密码,指定也行,默认也行
admin-password = admin
#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = 10.0.0.51:3306
#Atlas后端连接的MySQL从库的IP和端口
proxy-read-only-backend-addresses = 10.0.0.52:3306,10.0.0.53:3306
#用户名与其对应的加密过的MySQL密码,需改密码后指定到此
pwds = slave:KyaJUrNF4Pw=
#设置Atlas的运行方式,true为守护进程方式,false时为前台方式,一般开发调试时设为false,线上运行时设为true,true后面不能有空格
daemon = true
#设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启
keepalive = true
#工作线程数,对Atlas的性能有很大影响,可根据情况适当设置
event-threads = 8
#日志级别,分为message、warning、critical、error、debug五个级别
log-level = message
#日志存放的路径
log-path = /usr/local/mysql-proxy/log
#SQL日志的开关
sql-log = ON
#Atlas监听的工作接口IP和端口
proxy-address = 0.0.0.0:1234
#Atlas监听的管理接口IP和端口
admin-address = 0.0.0.0:2345
#默认字符集,设置该项后客户端不再需要执行SET NAMES语句
charset = utf8
3.重启Atlas
docker restart atlas
4.进入容器
docker exec -it atlas /bin/bash
/usr/local/mysql-proxy/bin/mysql-proxyd test start # 启动Atlas服务
5.查看读写操作是否正确
tail -f /usr/local/mysql-proxy/log/sql_test.log
主从复制、读写分离的验证(这里使用的navicat进行的链接验证)
1.主服务器执行库、表创建,查看从库是否同步(具体命令略。。。)
2.主服务器执行数据的增、删、改查看从库是否同步(具体命令略。。。)
3.主从服务器中执行如下语句,临时打开日志文件以便于查看执行的sql语句
打开数据库的日志功能
SET GLOBAL general_log=ON;
这是为了查看log_output是什么输出方式,默认是file
SHOW VARIABLES LIKE 'log_output';
这里修改成数据表的输出方式。
SET GLOBAL log_output='TABLE';
4.mycat服务器进行数据的增、删、改、查操作(具体命令略。。。)
5.主服务器查看是否只有增、删、改语句
SELECT event_time,command_type,convert(argument using utf8mb4) as argument from mysql.general_log ORDER BY event_time desc limit 0,100
6.从服务器查看是否只有查语句
SELECT event_time,command_type,convert(argument using utf8mb4) as argument from mysql.general_log ORDER BY event_time desc limit 0,100
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 奇怪的阿峰
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果