title: MySQL:4.OneProxy实现读写分离简单实例
categories: 数据库
tags:
- MySQL
timezone: Asia/Shanghai
date: 2019-03-10
环境
[root@centos181002 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@centos181002 ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
oneproxy v6.2.0
第一步:下载并设置
1.下载并解压
wget http://www.onexsoft.com/software/oneproxy-rhel7-linux64-v6.2.0-ga.tar.gz
tar -vxzf oneproxy-rhel7-linux64-v6.2.0-ga.tar.gz
cd oneproxy
2.修改demo.sh
## 修改以下行为自己的实际路径
cp demo.sh demo.sh.bak
vim demo.sh
export ONEPROXY_HOME=/root/oneproxy
3.修改oneproxy.service
## 修改以下行为自己的实际路径
cp oneproxy.service oneproxy.service.bak
vi oneproxy.service
ONEPROXY_HOME=/home/oneproxy
4.修改proxy.conf
cp conf/proxy.conf conf/proxy.conf.bak
vim conf/proxy.conf
[oneproxy]
# 开启进程守护,当oneproxy进程挂掉后重启oneproxy
keepalive = 1
# 指定oneproxy的线程数,默认为8,建议为CPU的processor数量
event-threads = 4
# 指定日志文件的路径
log-file = log/oneproxy.log
pid-file = log/oneproxy.pid
lck-file = log/oneproxy.lck
# 针对企业版的注册码
proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D
# 指定后端数据库的版本号
mysql-version = 5.7.22
# 设定oneproxy提供服务的监听端口
# 用法:--proxy-address=<host:port>
proxy-address = :3307
proxy-forward-clientip = 1
# 开启是否事务调试功能,帮助架构师、DBA分析在业务运行时的各个表之间所关联的query和trx的关系
proxy-trans-debug = 1
proxy-httpserver = 0.0.0.0:8080
proxy-auto-readonly = 0
# 设定MySQL服务器的地址、端口号及所属集群
# 示例:--proxy-master-addresses=<host:port@servergroup>
proxy-master-addresses.1 = 11.11.11.61:3306@default
proxy-slave-addresses.2 = 11.11.11.62:3306@default
# proxy-slave-addresses.3 = ...
# 设定在一个group中,数据库的读写分离策略
proxy-group-policy = default:read_slave
# 设定在当前group中访问dbname的用户名和密码,
# 用法:proxy-user-list=<user:passwd@dbname>
proxy-user-list = default:root/7B3637566E106A0095721BAF48A66DF89BE192D7@test
## 7B3637566E106A0095721BAF48A66DF89BE192D7
## 这里的密码为使用``oneproxy/bin/mysqlpwd 数据库密码``加密过的字符串
5.启动
./oneproxy.service start
打开管理页面:http://11.11.11.61:8080/
admin
OneProxy
6.测试读写分离策略是否正确
1.直接连接从库的3306,然后写入数据
2.因为是主从复制架构,所以从库写入的数据不会同步到主库
3.这个时候通过OneProxy的3307端口连接数据库并查询数据
4.这个时候应该是可以查询到从库写入的数据,因为读取从从库
附录:关于数据库读写策略
支持一主多从场景的策略
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
数据分片场景的策略
write_shard:多组master的shard环境中,读写在任意master
read_shard:一组多从的shard环境中,写在master,读走其他节点
Percona XtraDB Cluster/MariaDB Galera Cluster环境
write_balance
write_other
write_failover
双主环境
read_other