在MHA基础上使用atlas实现读写分离

1.下载安装atlas

https://github.com/Qihoo360/Atlas/releases
yum install -y Atlas*

2.安装配置

cd /usr/local/mysql-proxy/conf
mv test.cnf test.cnf.bak
 vi test.cnf
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 10.0.0.55:3306     #漂移IP   写节点
proxy-read-only-backend-addresses = 10.0.0.53:3306,10.0.0.54:3306   #从节点 读节点
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=       #repl密码:123 mha密码:mha  后端数据库用户和密码
daemon = true         #后台运行
keepalive = true        #心跳检测
event-threads = 8     #并发数量16核设置为8,8核设置为4,一般是半数
log-level = message    
log-path = /usr/local/mysql-proxy/log   #日志目录
sql-log=ON     #记录sql日志,所有经过atlas的sql语句都会记录在/usr/local/mysql-proxy/log目录下
proxy-address = 0.0.0.0:33060    #对外提供服务的端口
admin-address = 0.0.0.0:2345     #管理员操作atlas连的端口
charset=utf8

3启动atlas

/usr/local/mysql-proxy/bin/mysql-proxyd test start
ps -ef |grep proxy

4. Atlas功能测试

测试读操作:

mysql -umha -pmha  -h 10.0.0.54 -P 33060 
db03 [(none)]>select @@server_id;

在这里插入图片描述

测试写操作:

mysql> begin;select @@server_id;commit;

在这里插入图片描述

注意:  
DDL建议不要再Atlas触发,最好是到主库触发(Online DDL或者PT-OSC)。
DML建议begin; DML;  commit;

5. Atlas 的管理操作

[root@db03 conf]# mysql -uuser -ppwd -h 10.0.0.53 -P2345
db03 [(none)]>select * from help;

5.1 查看所有节点

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

5.2 节点的上线和下线

db03 [(none)]>SET OFFLINE 1;
+-------------+----------------+---------+------+
| backend_ndx | address        | state   | type |
+-------------+----------------+---------+------+
|           1 | 10.0.0.55:3306 | offline | rw   |
+-------------+----------------+---------+------+
1 row in set (0.01 sec)

所有节点状态

db03 [(none)]>SELECT * FROM backends;
+-------------+----------------+---------+------+
| backend_ndx | address        | state   | type |
+-------------+----------------+---------+------+
|           1 | 10.0.0.55:3306 | offline | rw   |
|           2 | 10.0.0.52:3306 | up      | ro   |
|           3 | 10.0.0.53:3306 | up      | ro   |
+-------------+----------------+---------+------+
db03 [(none)]>SET ONLINE 1;
+-------------+----------------+---------+------+
| backend_ndx | address        | state   | type |
+-------------+----------------+---------+------+
|           1 | 10.0.0.55:3306 | unknown | rw   |
+-------------+----------------+---------+------+

5.3 删除和添加节点

db03 [(none)]>REMOVE BACKEND  3;
db03 [(none)]>ADD SLAVE  10.0.0.53:3306;

5.4 用户管理

db01 [(none)]>grant all on *.* to oldguo@'10.0.0.%' identified by '123';(主从复制主库)
db03 [(none)]>SELECT * FROM pwds; (atlas管理用户登录)
db03 [(none)]>add pwd oldguo:123;(atlas管理用户登录)

5.5 持久化配置文件

db03 [(none)]>save config;

主库宕机修复

1添加配置文件缺失的节点信息
[root@db003 ~]# cat /etc/mha/app1.cnf
在这里插入图片描述

2 启动宕机的原主库

CHANGE MASTER TO 
MASTER_HOST='10.0.0.53',
 MASTER_PORT=3306,
 MASTER_AUTO_POSITION=1,
 MASTER_USER='repl', 
 MASTER_PASSWORD='123';
start slave;

3 检查vip有没有在现主库上
4状态检查

masterha_check_ssh   --conf=/etc/mha/app1.cnf 
masterha_check_repl  --conf=/etc/mha/app1.cnf 

5启动高可用

开启MHA(db03):
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

6 查看atlas节点状态

[root@db003 /usr/local/bin]# mysql -uuser -ppwd -h 10.0.0.54 -P2345
3306 [(none)]>SELECT * FROM backends;

在这里插入图片描述
7读写节点测试

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

测试写操作:
mysql> begin;select @@server_id;commit;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值