热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqloneproxy稳定吗_Mysql中间件oneProxy总结

建议使用之前把官方的文档全部通读一遍这里提供一个我的网盘地址oneproxy百度网盘0.先对oneproxy有个大概的了解,知道他所处的位置1.MySQL服务器创建t

建议使用之前把官方的文档全部通读一遍 这里提供一个我的网盘地址oneproxy 百度网盘

0. 先对 oneproxy 有个大概的了解,知道他所处的位置

50b958b9dc089cd77c1aa0bf29794b7c.png

0f610940ea4d41cd3e132afefa1ee515.png

1. MySQL服务器

创建test用户,密码test

存在test数据库

确认oneproxy能登录

1.1 注意事项

所有MySQL节点有相同的用户名和口令

所有MySQL节点有相同的数据库名

所有MySQL节点使用相同的字符集设置

前端应用程序可以切换操作集群

命令:use groupname

前端应用程序不能切换MySQL数据库

2. OneProxy 服务器

可以和Mysql共同一台机器

默认client port 3307

mysql -utest -ptest -h 127.0.0.1 -P3307

默认admin port 4041

mysql -uadmin -pOneProxy -h 127.0.0.1 -P4041

2.1 OneProxy 单机多实例

OneProxy 单实例占用两个端口3307,4041,所有只要保证端口不重复, 就可以保证单机启动多个实例

多实例只要换不同端口即可

2.2 关闭OneProxy

后台运行

–keepalive 启动守护进程

遇到内存Bug Crash 时候,可以自动重启,应用自动重新连接(开启keepalive后,会有一个单独的进程来监控oneproxy)

杀死进程

ps -ef | grep oneproxy

kill -9 所有oneproxy 进程号

管理端口里面

shutdown force

3. OneProxy 需要自己的验证机制

3.1 链接后端和client的配置

--proxy-user-list=username/password@dbname--proxy-database: 指定默认数据库--proxy-charset: 指定数据库字符集, 查看支持的字符集可以登陆到4041的命令窗口执行 list charset; 查看

这里的用户名和密码是提供oneproxy 链接后端mysql使用的,同时也是 client(php,java, python。。。)链接oneproxy 使用的

3.2 管理接口的用户名和密码配置

admin-user= admin

admin-password= OneProxy

admin-address=ip:port

密码必须加密,使用管理端口passwd命令生成

mysql -uadmin -pOneProxy -P4041 -c -h ip:port

> passwd test

4. 健康检查

每秒钟Proxy会和后端进行通信,检测后端数据库状态。

Markup: 正常状态,可以提供服务

Markdown:异常状态,不可以提供服务

查看状态

查看后端机器: list backend;

查看组:list group;

查看链接池: list pool;

查看日志文件:tail -100f oneproxy.log

5. 多个数据库

OneProxy的use命令变成切换集群

OneProxy不支持数据库切换

程序里不可以有use命令(不良习惯)

可以设定多个用户(不同的默认库)

--proxy-user-list.1=user/pass@数据库名

--proxy-user-list.2=user/pass@数据库名

如果不指定,则默认的数据库名为

--proxy-database (默认为test)

6. 连接回收

OneProxy 10秒钟检一次连接池。

自动回收5分钟不使用的连接。

要求数据库的超时设置大于300秒 + 10秒

确认interactive_timeout设置 [mysqld]

确认net_read_timeout设置

确认net_write_timeout设置

7. 配置主从

proxy-master-addresses.1 = 192.168.2.190:3306@server1:2

proxy-master-addresses.2 = 192.168.2.190:3306@server1:1

proxy-slave-addresses.1 = 192.168.2.190:3306@server1:1

proxy-slave-addresses.2 = 192.168.2.190:3306@server1:1

proxy-slave-addresses.3 = 192.168.2.190:3306@server1:1

addresses.(1,2,3,4): 这代表指定多台主从,

server1:(1,2,3,4): 这个代表该节点的power, 可以理解为负载均衡中的weight值

8. 常用命令

COMMAND

SUMMARY

SAMPLE

LIST HELP

Display the command list.

list

LIST CHARSET

Display the charset list.

list charset

LIST POLICY

Display the traffic policy for server group.

list policy

LIST BACKEND

Display info for all the backends.

list backend

LIST SEQUENCE

Display info for all the sequences.

list sequence

LIST GROUP

Display info for all the server groups.

list group

LIST POOL

Display info for all the connection pools.

list pool

LIST THREADS

Display statitics data for all the threads.

list threads

LIST TABLEMAP

Display the map of tables and server groups.

list tablemap

LIST USERS

Display the user list.

list users

LIST SQLSTATS

Display the sql statistics.

list sqlstats

LIST TABSTATS

Display the table statistics.

list tabstats

LIST USERSTATS

Display the user statistics.

list userstats

LIST IPSTATS

Display the IP based perfstats .

list ipstats

LIST IPQOS

Display the IP based request for last 10 seconds .

list IPQOS

LIST DBQOS

Display the backend request for last 10 seconds .

list DBQOS

LIST IPTABSTATS

Display the IP based table statistics.

list iptabstats

LIST IPSQLSTATS

Display the IP based SQL statistics.

list ipsqlstats

LIST SQLTEXT

Display the sql text.

list sqltext

LIST DMLTEXT

Display the sql text of dml operation.

list dmltext

LIST NEWTEXT

Display the sql text gathered by runtime.

list newtext

LIST OLDTEXT

Display the sql text loaded by firewall.

list oldtext

LIST SQLFAIL

Display the failed sql in dry run.

list sqlfail

LIST BLACKSQL

Display the black sql text loaded by firewall.

list blacksql

LIST TRANS_DEBUG

Display the table map of transaction.

list trans_debug

LIST TABLES

Display the partition tables.

list tables

LIST PARTITIONS

Display the table partitions.

list partitions

LIST OPTION

Display the current options.

list option

SET MASTER

Set a given backend as master backend.

set master ‘192.168.1.119:3306’

SET SLAVE

Set a given backend as slave backend.

set slave ‘192.168.1.119:3306’

SET OFFLINE

Set a given backend as offline backend.

set offline ‘192.168.1.119:3306’

SET ONLINE

Set a given backend as online backend.

set online ‘192.168.1.119:3306’

SET POWER

Set the power/capacity number for a given backend.

set power ‘192.168.1.119:3306’ [1-5]

SET DBQOS

Set the QoS limit for a given backend.

set power ‘192.168.1.119:3306’ num

SET GPOLICY

Set a feature policy for given server group.

set gpolicy default 1

SET GMASTER

Set the master backend for given server group.

set gmaster default 1

SET GACCESS

Set the security level for given server group.

set gaccess default 1

SET GDELAY

Set the maximum slave delay for given server group.

set gdelay default 1

SET GMANUAL

Set manual master mode for given server group.

set gmanual default 1

SET POOLMIN

Set the min idle connections for given backend.

set poolmin ‘192.168.1.119:3306’ 5

SET POOLMAX

Set the max idle connections for given backend.

set poolmax ‘192.168.1.119:3306’ 300

SET SQLSTATS

Enable or disable the sql statistics feature.

set sqlstats {on

SET IPSTATS

Clear the ip statistics data.

set ipstats {clear}

SET TABSTATS

Enable or disable the table statistics feature.

set tabstats {on

SET USERSTATS

Enable or disable the user statistics feature.

set userstats {on

SET TRANS_DEBUG

Enable or disable the transaction debug mode.

set trans_debug {on

SET LOG_SQLERROR

Enable or disable the sql error log feature.

set log_sqlerror {on

SET SQL_DEBUG

Enable or disable the sql debug mode.

set sql_debug {on

SET SECURITY_LEVEL

set the security level of the proxy.

set security_level {0-maximum}

SET SQL_FIREWALL

Enable or disable the SQL Firewall feature.

set sql_firewall {on

SET DML_FIREWALL

Enable or disable the DML only Firewall feature.

set dml_firewall {on

SET WATCH_MODE

Enable or disable the Firewall watch mode.

set watch_mode {on

SET SQL_SIGNATURE

Enable or disable the SQL signature feature.

set sql_signature {on

SET IP_FIREWALL

Enable or disable the IP Firewall feature.

set ip_firewall {on

SET LOGIN_RESTRICT

Enable or disable the login restrict mode.

set login_restrict {on

SET STRICT_POOLMAX

Enable or disable the stricted pool max mode.

set strict_poolmax {on

SET UNSAFE_RESULT

Enalbe or disable the unsafe result operation.

set unsafe_group {on

SET MULTI_INSERTS

Enalbe or disable cross partition operation.

set multi_inserts {on

SET FORWARD_CLIENTIP

Comment the client ip into the SQL text.

set forward_clientip {on

SET BLACKIP

Disable the access of specific ip address.

set blackip ‘192.168.0.1’

SET GREENIP

Enable the access of specific ip address.

set greenip ‘192.168.0.1’

SET READ_ONLY

Put a partition into read only mode.

set read_only ‘my_range_0’

SET READ_WRITE

Put a partition into writable mode.

set read_write ‘my_range_0’

SET PARALLEL_DEGREE

Set the maximum degree for parallel query.

set parallel_degree 8

SET PARALLEL_REQUESTS

Set the maximum requests for parallel query.

set parallel_requests 512

SET MAX_CACHE_ROWS

Set the maximum rows for cache resultset.

set max_cache_rows 8

SET MAX_IDLE_TIME

Set the maximum idle time for pooled connection.

set max_idle_time 60

ADD MASTER

Add a new master(rw) backend to oneproxy.

add master ‘192.168.1.120:3306@default’

ADD SLAVE

Add a new slave(ro) backend to oneproxy.

add slave ‘192.168.1.120:3306@default’

ADD SEQUENCE

Add a new sequence into oneproxy.

add sequence ‘seq_name’

SAVE TABLES

save partition tables to a text file.

save tables ‘/tmp/part.txt’

SAVE SQL

save sql list to a text file.

save sql ‘/tmp/firewall.sql’

SAVE BLACKSQL

save black sql list to a text file.

save blacksql ‘/tmp/blacksql.sql’

SAVE DML

save dml sql list to a text file.

save dml ‘/tmp/firewall_dml.sql’

SAVE NEW

save new sql list to a text file.

save new ‘/tmp/firewall_new.sql’

SAVE IP

save ip list to a text file.

save ip ‘/tmp/firewall.sql’

LOAD TABLES

load partition tables from text file.

load tables ‘/tmp/part.txt’

LOAD SQL

load firewall sql from text file.

load sql ‘/tmp/firewall.sql’

LOAD BLACKSQL

load black sql from text file.

load blacksql ‘/tmp/blacksql.sql’

LOAD IP

load firewall ip list from text file.

load ip ‘/tmp/firewall_ip.sql’

MAP

Map a table name to a given server group.

map my_test1_0 default

UNMAP

Remove the server gruop for a given table.

unmap my_test1_0

PASSWD

Encrypt the password of command options.

passwd test

SHUTDOWN

Shutdown the proxy.

shutdown force

9. 开发中的注意事项 (这个是在网上找的,可供参考)

1、不支持 Server Side Cursor 接口,比如 mysql C API 里的 Prepare、Bind、 Execute调用接口

2、不支持 use命令切换数据库

3、默认禁止 CALL, PREPARE, EXECUTE, DEALLOCATE 命令,也就是说不能用存储过程

4、单库(单实例)分表–insert/update/delete要加字段名,如insert into t1(id,name) values(1,’张三’);

5、单库(单实例)分表–目前分了N张表,如果以自增id做关联查询,那么每张表的自增id都是从1开始,在与其他表join关联查询时,数据会不准确

6、单库(单实例)分表–当where条件有分区列时,值不能有函数转换,也不能有算术表达式,必须是原子值,否则结果不准确

7、分库分表(多实例)–不支持垮库join,例如user_0表在10.0.0.1机器里,现在要join关联查询10.0.0.2机器里的money_detail表,不支持

8、分库分表(多实例)–不支持分布式事务,例如user_0表在10.0.0.1机器里,user_1表在10.0.0.2机器里,现在想同时update更新两张表,不支持

9、读写分离 –默认读操作全部访问slave,如果想强制走主库,例如涉及金钱类的查询操作,SQL改为select /master/ from t1 where id=1;

10、分库分表/分表 –where条件带分区列时,直接命中该表,如果未带分区列,会逐一扫描所有分表(单线程),考虑性能问题,要加并行查询(多线程),SQL改为select /parallel/ from t1 where name=’李四’; 并行查询会增加额外的CPU消耗

11、分表规则:支持range(范围),hash(取模),hash规则要提前规划好,具体分多少张表,如前期分64张表,1年后想扩容128张表,数据需要重新导出导入,成本非常高,目前二级分表还不支持。



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
author-avatar
大姑娘不再回_402
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有