OneProxy安装部署和分表简测

本文介绍Oneproxy在UCloud云主机上的部署步骤及注意事项,并通过user_wechat表进行分表测试,展示如何配置实现数据库读写分离及分库分表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oneproxy部署安装:

 安装环境:UCloud云主机  centos 6.4  2.6.32-431.11.25.el6.ucloud.x86_64

 

官网http://www.onexsoft.com/?page_id=4029下载oneproxy最新版:

oneproxy-rhel5-linux64-v5.8.5-ga.tar.gz

 

测试环境的mysql版本是5.6.16,具体mysql的安装这边不做介绍,需要的可以参考:

http://note.youdao.com/noteshare?id=2488960ee09a3b7843087213456749fa

 

1、将安装包上传至/usr/local目录进行解压 tar zxvf oneproxy-rhel5-linux64-v5.8.5-ga.tar.gz


2、进入oneproxy目录会看到下面几个文件


其中demo.sh是初始启动脚本,oneproxy.service是平时startstoprestart脚本


3、demo.shoneproxy.service脚本里的目录改成自行设置的安装目录,这边以/usr/local为例



4、登录mysqlscheduler库创建用户并授予权限


执行下flush privileges刷新权限、


5、启动oneproxy 


确认oneproxy监听端口3307和工具管理端口4041监听正常

 

还可以查看oneproxy的日志输出情况,看到以下内容说明启动正常



5、对用户名的密码进行加密设置



6、由于mysql服务器和oneproxy中间件在一台服务器上进行的测试,下面是配置文件信息

/usr/local/oneproxy/conf/proxy.conf


注意:当测试环境oneproxy后端只有一台mysql服务器的时候proxy-auto-readonly=1这个参数要禁止掉,不然会出现sql不能在oneproxy执行的情况


解释:

--proxy-master-addresses

格式:ip:port@groupname

其中“groupname”指的是“Server Group”的名字,如果不指定,则默认为“default”

 

proxy-address             Proxy Server自身监听地址

 

proxy-slave-addresses    Slave节点地址(可读取节点)

 

proxy-user-list            Proxy用户列表(用户名:口令)

 

proxy-table-map          为某张表指定“Server Group”

 

proxy-sql-review          为某张表指定Where条件中必须的列

 

proxy-database      Proxy对应的后端数据

 

proxy-charset      

通过OneProxy来管理多个数据库时,要求所有的数据库字符集是一致的,同样是基于现有连接池机制的考虑,可以选的值在README文件里有,默认值是“utf8_general_ci,为了防止连接池中不同的连接出现不同的设置,“set”命令在OneProxy里也是不生效的。

 

proxy-group-policy

 

预定义策略,0代表由Lua Script来决定,默认为Master Only1代表Read Failover2代表Read/Write SplitMaster节点不参与读操作);3代表双Master结构,或者是XtraDB Cluster结构,即多主对等的方式;4代表Read/Write SplitMaster节点共同参与读操作);5代表读写随机。

 

proxy-security-level

 

安全级别,0默认值,1禁止DDL2禁止不带条件的查询语句,3只允许SELECT

 

proxy-group-security

 

为特定Server Group设置安全级别。

 

安全级别,0默认值,1禁止DDL2禁止不带条件的查询语句,3只允许SELECT

 

event-threads

 

并发线程数,最大允许48个线程。通常这个值可以设为CPU Core数量的两倍

 

 

7、重启oneproxy使配置生效,连接oneproxy

./oneproxy.service restart


当指定连接的默认数据库名时, 其实是指定连接到 OneProxy 时的默认 MySQL 集群,直接show tables;就能看到scheduler库下面的表,这些表是之前建立好的。



用户可以自行在oneproxy里面进行DDLDML操作。

 

 第二部分:

Oneproxy分表测试

这边以user__wechat表做测试



只要将分库分表的关键配置信息保存到文件 “part.txt” 中,给 “proxy-part-tables”选项指定“part.txt”文件的位置,OnePorxy 就会装载 分区信息,就可以实现分库分表了。


last_update_time字段作为分表字段,采取range类型,还支持listhash分区

登录oneproy mysql -uwangxin -p -P3307 -h127.0.0.1 default -c

创建好子表:

user__wechat_1406   

user__wechat_1501     

user__wechat_1506     

user__wechat_1601     

user__wechat_1606     

user__wechat_1701    

重启oneproxy使配置生效

 

将逻辑备份的user__wechat数据导入到主表里面

mysql -h127.0.0.1 -uwangxin -P3307 -p  scheduler </data/user_wechat.sql

 

注意:这边进行导入之前,需要将逻辑备份文件的其他语句比如create等全部删除,只保留insert,还需要into后面加上插入的字段补全,不然会报错

列子:


查看主表和分表数据是否一致







<think>好的,我现在需要回答用户关于如何试分库分表架构下响应时间的问题。首先,我需要了解分库分表的基本概念,以及试响应时间的关键点。分库分表主要是为了解决数据库的水平扩展问题,通过将数据分散到多个数据库或表中,以提高性能容量。试响应时间时,需要考虑系统在不同负载下的表现,包括查询延迟、吞吐量等。 接下来,我需要确定试的关键步骤。可能包括试环境搭建、模拟真实负载、使用压工具、监控指标等。同时,还要考虑分库分表特有的因素,比如跨库查询、数据分布是否均匀、路由策略是否高效等。这些因素都可能影响响应时间,所以在试时要特别注意。 然后,工具的选择也很重要。用户提到了best practices, tools, and methods。常见的压工具有JMeter、SysBench、LoadRunner等,需要介绍它们的适用场景配置方法。此外,监控工具如Prometheus、Grafana可以帮助实时追踪响应时间其他性能指标。 还要考虑试的不同阶段,比如基准试、压力试、稳定性试。每个阶段的目标不同,基准试确定单请求的响应时间,压力试看系统在高负载下的表现,稳定性试则是长时间运行下的性能变化。 另外,分库分表系统中,数据分布是否均匀会影响查询效率。如果某些分片负载过高,可能导致响应时间增加。因此,试时需要模拟不同的数据分布情况,并观察系统表现。 还需要注意网络延迟,因为分库分表可能涉及多个数据库实例,分布在不同的物理节点上,网络通信的开销可能成为瓶颈。试时应该模拟真实的网络环境,或者在生产环境的镜像中进行试。 最后,需要总结最佳实践,比如逐步增加负载、监控关键指标、分析瓶颈点等。同时,引用相关文献或案例,增强回答的可信度。 现在需要把这些思考整理成一个结构清晰的回答,按照用户的要求分步骤说明,并生成相关问题。同时,确保使用正确的中文LaTeX格式,比如独立公式用$$...$$,行内用$...$,并添加引用标识。</think>[用户可见层] ### 如何试分库分表系统的响应时间? #### 1. **明确试目标** - **基准试**:量单请求在无竞争条件下的响应时间(例如:$T_{base} = \frac{\sum_{i=1}^{n} t_i}{n}$)。 - **压力试**:确定系统在高并发下的最大吞吐量与延迟阈值。 - **稳定性试**:验证长时间运行时的性能波动(如内存泄漏或连接池耗尽)[^1]。 #### 2. **搭建试环境** - **镜像生产环境**:包括分片数量(如4库×8表)、硬件配置、网络拓扑。 - **数据填充**:使用工具(如SysBench)生成符合业务特征的数据,并确保数据均匀分布(避免热点分片)[^2]。 #### 3. **选择试工具** - **JMeter**:模拟HTTP/SQL请求,支持参数化与分布式压。 - **SysBench**:针对数据库的OLTP试,支持多线程与复杂查询。 - **自定义脚本**:通过Python或Go编写特定业务逻辑的试用例(例如跨库JOIN操作)。 #### 4. **设计试场景** - **单分片查询**:试路由策略效率,例如:`SELECT * FROM user WHERE shard_key=123`。 - **跨分片聚合**:验证分布式查询性能(如`COUNT(*)`跨10个分片)。 - **混合读写比例**:根据业务实际读写比(如7:3)配置试流量。 #### 5. **监控关键指标** - **数据库层**:CPU/内存使用率、磁盘IOPS、慢查询日志。 - **中间件层**:连接池等待时间、SQL解析耗时(例如:解析路由规则平均耗时$t_{route}$)。 - **应用层**:95/99分位响应时间($$P_{95} = t_{sorted}[\lceil 0.95n \rceil]$$)。 #### 6. **优化与迭代** - **瓶颈分析**:若发现跨分片查询延迟高,可考虑冗余存储或调整分片键。 - **参数调优**:调整连接池大小(如从50→200)或缓存策略(如Redis缓存热数据)。 #### 示例工具配置(JMeter): ```java // 分库分表路由逻辑示例 String shardKey = "order_id_2023"; int shardNum = Math.abs(shardKey.hashCode() % 64); // 计算分片编号 executeQuery("SELECT * FROM order_db_" + shardNum/8 + ".order_tbl_" + shardNum%8); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值