一、配置准备
1、Innodb Cluster +Rounter 集群+Keepalived 配置(略)见上文
2、环境说明:
MySQL Router VIP地址:192.168.2.100
MySQL Router 写入端口:6446
MySQL Router 读取端口:6447
One Proxy1 信息:
IP:192.168.2.109
主机名:rdc-manager1
One Proxy2 信息:
IP:192.168.2.110
主机名:rdc-manager2
One Proxy VIP 192.168.2.98
二、配置
1、下载One Proxy
wget http://www.onexsoft.com/software/oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz
2、解压安装One Proxy
tar -zvxf oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz
mv oneproxy-rhel6-linux64-v6.2.0-ga /usr/local/oneproxy
3、配置oneproxy(rdc-manager1)
cd /usr/local/oneproxy
vim conf/proxy.conf
[oneproxy]
event-threads = 1
proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D
proxy-httpserver = 0.0.0.0:8080
proxy-security-level = 0
proxy-auto-readonly = 0
proxy-slave-addresses.1 = 192.168.2.100:6447@default
proxy-master-addresses.2 = 192.168.2.100:6446@default
# proxy-slave-addresses.3 = ...
proxy-group-policy = default:read_slave
proxy-user-list = default:root/9D7E55EAF8912CCBF32069443FAC452794F8941B@rdc_manager
remote-address.1 = 192.168.2.110:4041
vip-address = 192.168.2.98/ens33:vip
proxy-part-template = conf/template.txt
proxy-part-tables = conf/part.txt
proxy-sequence-group = default
proxy-sequence.1 = seq1
network-blocking = 0
4、配置oneproxy(rdc-manager2)
[oneproxy]
event-threads = 1
proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D
proxy-httpserver = 0.0.0.0:8080
proxy-security-level = 0
proxy-auto-readonly = 0
proxy-slave-addresses.1 = 192.168.2.100:6447@default
proxy-master-addresses.2 = 192.168.2.100:6446@default
# proxy-slave-addresses.3 = ...
proxy-group-policy = default:read_slave
proxy-database = rdc_manager
proxy-user-list = default:root/9D7E55EAF8912CCBF32069443FAC452794F8941B@rdc_manager
remote-address.1 = 192.168.2.109:4041
vip-address = 192.168.2.98/ens33:vip
proxy-part-template = conf/template.txt
proxy-part-tables = conf/part.txt
proxy-sequence-group = default
proxy-sequence.1 = seq1
network-blocking = 0
5、主要参数说明:
envent-threads # 指定线程数,默认为8,建议为CPU的processor数量
proxy-httpserver # web监控页面地址和端口
proxy-security-level #
proxy-slave-addresses.1 #
proxy-master-addresses.2 # 服务器地址端口号及所属集群
proxy-database # 设置oneproxy访问的默认数据,默认为test库
proxy-user-list # <user:passwd@dbname> 注意密码位置需要使用bin目录下的mysqlpwd加密
remote-address.1 # <host:port> 设置其它节点的管理接口IP和管理端口
vip-address # <ip/dev> 多节点HA环境下,设置提供服务的VIP地址以及VIP绑定的dev
proxy-group-policy # 设定读写分离策略
设定在一个group中,数据库的读写分离策略,
支持一主多从场景的策略
master_only:读写都在master
read_failover:读写都在master,当master挂掉的时候读切到slaves
read_slave:写在master,读在所有slaves
read_balance:写在master,读从master以及slaves走
big_slave:写以及简单查询走master,复杂查询走slaves
big_balance:写及简单查询走master,复杂查询走master及slaves
6、修改oneproxy.service脚本
ONEPROXY_HOME=/usr/local/oneproxy
6、可以使用如下选项来定制应用程序或用户对数据库的访问等级。
- proxy-security-level, 在整个Proxy上设置安全访问等级。
- proxy-group-security,对某一个MySQL集群设置安全访问等级。
- proxy-table-security,对某张表(根据表名)设置安全访问等级。
对于安全访问等级,则使用不同的比特位来表示不同的访问权限。
- 任何非零值(通常为“1”)将会禁止DDL语句(Create / Alter / Drop / Truncate / Rename)的执行,这是默认行为(proxy-group-security选项的默认值为“1”)。
- 值“2”强制查询/更新/删除语句有一个明显的Where条件,比如“select * from tab”将会被禁止执行,而“select * from tab where 1=1”则会被允许执行。
- 值“4”将会禁止Delete语句的执行,以避免应用程序或用户误删除数据。
- 值“8”将会禁止所有的DDL语句,将变成只读状态,可以布署OneProxy来当作自助查询系统。
三、测试
1、连接MySQL Router读写端口创建相关表
mysql -uroot -p -h 192.168.2.100 -P 6446
CREATE TABLE changwei ( Id int NOT NULL PRIMARY KEY, Name varchar(255) NOT NULL, Age int, City varchar(255) );
2、创建批量插入和查询脚本
#!/bin/bash
#
COMMANT="mysql -u root -p123456 -h 192.168.2.98 -P 3307"
#
#read Total_Number <a.log
read Total_Number <a.log
#
COUNT=$2
#
V=$Total_Number
#
sql_delete (){
for ((i=$Total_Number;i>$[Total_Number-COUNT-1];i--))
do
$COMMANT <<EOF 2>/dev/null
SELECT * FROM changwei WHERE Id=$i;
select @@hostname;
DELETE FROM changwei WHERE Id=$i;
EOF
sleep 2
done
echo $i >a.log
}
#
#
#
sql_add (){
for ((i=$[Total_Number - 1];i<$[Total_Number+COUNT];i++))
do
$COMMANT <<EOF 2>/dev/null
SELECT * FROM changwei WHERE Id=$i;
select @@hostname;
INSERT INTO changwei VALUES($V,'test$V',$V,'lizhi');
EOF
V=$[V+1]
sleep 2
done
echo $i >a.log
}
case $1 in
delete)
sql_delete
;;
add)
sql_add
;;
*)
echo "Usage (delete|add)"
;;
esac
3、执行脚本期间可以随机停掉主从数据库,看脚本是否正常执行
./changwei.sh add 200
本文介绍了如何配置和测试MySQL读写分离的解决方案——One Proxy。详细阐述了One Proxy的配置步骤,包括设置线程数、代理服务器信息、数据库访问策略等,并提供了测试方法,确保在主从数据库故障时仍能正常运行。

489

被折叠的 条评论
为什么被折叠?



