MySQL:4.OneProxy实现读写分离简单实例


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

附录:

官网:http://www.onexsoft.com/zh/download

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/Bruce.Liu1 文章大纲读写分离简介1.1. 常见高并发场景1.2. 读写分离原理1.3. 读写分离类型...
    BruceLiu1阅读 12,429评论 0 18
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 常用作为web服务器、反向代理、邮箱服务器等基础设施,具体功能可见官网即可: 本文使用的是linux包管理器所安装...
    渭小粉阅读 184评论 0 1
  • 小小的我有小小的梦想 小小的你在小小的地球上 小小的它在小小的海上流浪 我在我的轨道上追逐梦想 你在你的...
    子末姑娘阅读 181评论 0 1