A proxy server for OceanBase Database.

Related tags

Database obproxy
Overview

OceanBase Database Proxy

TODO: some badges here

OceanBase Database Proxy (ODP for short) is a dedicated proxy server for OceanBase Database. OceanBase Database stores its user data in multiple copies on different OBServers. ODP receives the SQL requests from the users, transfers the SQL requests to the target OBServer, then returns the execution results to the users.

Quick start

Refer to the Get Started guide [link TODO] to try out ODP.

Documentation

  • English [link TODO]
  • Simplified Chinese (简体中文) [link TODO]

Licencing

ODP is under MulanPubL - 2.0 licence. You can freely copy and use the source code. When you modify or distribute the source code, please obey the MulanPubL - 1.0 licence.

Contributing

Contributions are warmly welcomed and greatly appreciated. Here are a few ways you can contribute:

  • Raise us an issue [link TODO].
  • Submit Pull Requests. For details, see How to contribute.

Support

In case you have any problems when using OceanBase Database, welcome reach out for help:

  • GitHub Issue [link TODO]
  • Official forum [link TODO]
  • Knowledge base [link TODO]
Issues
  • obproxy missing a rpm

    obproxy missing a rpm

    The "oceanbase-ce-sql-parser-3.1.0-1.el7.x86_64.rpm" packge is need by obproxy, however it's missed on the "https://mirrors.aliyun.com/oceanbase/development-kit/el/7/x86_64".

    cat obproxy.el7.x86_64.deps ... [deps] devdeps-openssl-static-1.0.1e-3.el7.x86_64.rpm devdeps-libcurl-static-7.29.0-3.el7.x86_64.rpm devdeps-mariadb-connector-c-3.1.12-3.el7.x86_64.rpm devdeps-prometheus-cpp-0.8.0-3.el7.x86_64.rpm devdeps-gtest-1.8.0-3.el7.x86_64.rpm devdeps-grpc-1.20.1-3.el7.x86_64.rpm

    [tools] obdevtools-gcc-5.2.0-3.el7.x86_64.rpm obdevtools-bintuils-2.30-3.el7.x86_64.rpm obdevtools-bison-2.4.1-3.el7.x86_64.rpm obdevtools-flex-2.5.35-3.el7.x86_64.rpm

    [release] oceanbase-ce-sql-parser-3.1.0-1.el7.x86_64.rpm <--

    opened by Rhadamanthus00 2
  • obproxy didn't bind to listen_port

    obproxy didn't bind to listen_port

    for example:

    bin/obproxy -o enable_strict_kernel_release=False,enable_cluster_checkout=False,syslog_level=DEBUG --listen_port 3306 --prometheus_listen_port 22884 --rs_list "192.168.1.243:3306;192.168.1.244:3306;192.168.1.245:3306"
    

    obproxy.log showed obproxy init succ with port 3306:

    [2021-06-21 17:38:05.419882] INFO  [PROXY] ob_proxy_config.cpp:46 [7932][Y0-0] [lt=3] [dc=0] | listen_port                          = 3306
    [2021-06-21 17:38:05.422586] INFO  [PROXY] ob_mysql_proxy_server_main.cpp:232 [7932][Y0-0] [lt=6] [dc=0] succ init mysql proxy port by config(proxy_port={10.90.71.13:0}, port=3306})
    

    but actually, it didn't bind to the listen_port, instead it used a random port(after reboot obproxy, the port will change)

    image

    This bug may caused by these commits:

    image

    commits before de1c5e3 is ok.

    opened by stutiredboy 2
  • add some features、fix bugs、fix coverity problems

    add some features、fix bugs、fix coverity problems

    1. 【Feature】support encryption zone and replica
    2. 【Feature】support pieceInfo
    3. 【Feature】support client_ip cross obproxy to observer
    4. 【Feature】optimize timeout of anonymous block
    5. 【Feature】support temporary_table route variable
    6. 【Feature】Compatible with connector/j bugs
    7. 【Bugfix】fix sharding connect failed when enable_proxy_scramble=true
    8. 【Bugfix】Fix the problem that ODP
    9. 【Bugfix】Fix the problem of PS Cursor Hang when not compressed
    10. 【Bugfix】fix coverity bug
    opened by wgs13579 1
  • 不同客户端连接 ob server 显示版本有差异

    不同客户端连接 ob server 显示版本有差异

    【产品名称】

    3.1.3-OceanBase CE

    【产品版本】

    [[email protected] ~]$ obclient --version

    obclient Ver 15.1 Distrib 10.4.18-MariaDB, for Linux (x86_64) using readline 5.1

    OceanBase 3.1.3 【问题描述】

    [[email protected] ~]$ obclient -h127.0.0.1 [email protected]_tenant -P2881 -p'root123' -c -A test
    
    Welcome to the OceanBase. Commands end with ; or \g.
    
    Your MySQL connection id is 3221490143
    
    Server version: 5.7.25 OceanBase 3.1.3 (r10100032022041510-a09d3134c10665f03fd56d7f8bdd413b2b771977) (Built Apr 15 2022 02:16:22)
    
    
    
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    
    
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    
    
    
    MySQL [test]> \q
    
    Bye
    
    [[email protected] ~]$ obclient -h127.0.0.1 [email protected]_tenant -P2883 -p'root123' -c -A test
    
    Welcome to the OceanBase. Commands end with ; or \g.
    
    Your MySQL connection id is 25
    
    Server version: 5.6.25 OceanBase 3.1.3 (r10100032022041510-a09d3134c10665f03fd56d7f8bdd413b2b771977) (Built Apr 15 2022 02:16:22)
    
    
    
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    
    
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    
    
    
    使用obclient和mysql连接不同端口,而显示的server version不同,是什么原因导致?
    
    连接2881端口显示Server version: 5.7.25 OceanBase 3.1.3 (r10100032022041510-a09d3134c10665f03fd56d7f8bdd413b2b771977) (Built Apr 15 2022 02:16:22)
    
    MySQL [information_schema]> select version();
    
    +--------------------+
    
    | version()     |
    
    +--------------------+
    
    | 3.1.3-OceanBase CE |
    
    +--------------------+
    
    1 row in set (0.001 sec)
    
    
    
    
    MySQL [information_schema]> show variables like '%version%';
    
    +-------------------------+------------------------------------------------------------------------------------------------------------+
    
    | Variable_name      | Value                                                   |
    
    +-------------------------+------------------------------------------------------------------------------------------------------------+
    
    | ob_last_schema_version | 0                                                     |
    
    | protocol_version    | 10                                                     |
    
    | tls_version       |                                                      |
    
    | version         | 3.1.3-OceanBase CE                                             |
    
    | version_comment     | OceanBase 3.1.3 (r10100032022041510-a09d3134c10665f03fd56d7f8bdd413b2b771977) (Built Apr 15 2022 02:16:22) |
    
    | version_compile_machine |                                                      |
    
    | version_compile_os   |                                                      |
    
    +-------------------------+------------------------------------------------------------------------------------------------------------+
    
    连接2883端口显示Server version: 5.6.25 OceanBase 3.1.3 (r10100032022041510-a09d3134c10665f03fd56d7f8bdd413b2b771977) (Built Apr 15 2022 02:16:22)
    
    MySQL [test]> select version();
    
    +--------------------+
    
    | version()     |
    
    +--------------------+
    
    | 3.1.3-OceanBase CE |
    
    +--------------------+
    
    1 row in set (0.003 sec)
    
    
    
    
    MySQL [test]> show variables like '%version%';
    
    +-------------------------+------------------------------------------------------------------------------------------------------------+
    
    | Variable_name      | Value                                                   |
    
    +-------------------------+------------------------------------------------------------------------------------------------------------+
    
    | ob_last_schema_version | 0                                                     |
    
    | protocol_version    | 10                                                     |
    
    | tls_version       |                                                      |
    
    | version         | 3.1.3-OceanBase CE                                             |
    
    | version_comment     | OceanBase 3.1.3 (r10100032022041510-a09d3134c10665f03fd56d7f8bdd413b2b771977) (Built Apr 15 2022 02:16:22) |
    
    | version_compile_machine |                                                      |
    
    | version_compile_os   |                                                      |
    
    +-------------------------+------------------------------------------------------------------------------------------------------------+
    
    7 rows in set (0.005 sec)
    
    opened by d2022d 0
  • ObProxy,增加并行模式参数,解决HTAP业务需求

    ObProxy,增加并行模式参数,解决HTAP业务需求

    在现实的业务场景中,AP、TP经常是交织在一起的,单纯的通过SQL加HINT是不容易把控的,如果OBProxy可以增加默认开启并行模式,也就是说通过开启并行模式的OBProxy访问oceanbase,都是开启并行的,并行多少也可以调控,而TP模式的业务,还是不开启并行模式,这样能兼容更多的业务场景,对OB的使用可以更加灵活,从而减低开发成本。

    opened by TobyYaochen 1
  • feat: enable weakly consistent read for users who connected this obproxy  #21

    feat: enable weakly consistent read for users who connected this obproxy #21

    In the read-write separation scenario, a switch for the session-level enable weakly consistent read or for only the session-level enable weakly consistent to the specified user

    opened by justdba 1
Releases(v3.2.3)
  • v3.2.3(Apr 1, 2022)

    RELEASE NOTE

    | Item | Description | | -------- | ------------------ | | Release date | 2022-3-30 | | Release number | V3.2.3 | | Commit number | 7db4636d43501d96e52a7cc1398b8e21bf2ec1b4 |

    About this version

    Feature:

    1. Support public cloud shared proxy connection number resource isolation
    2. Support public cloud shared proxy tenant level whitelist
    3. Support shared proxy cluster configuration push
    4. Support hot restart
    5. Supports partition routing for Timestmp data types
    6. Support client-side Execute optimization, allow without Param Type
    7. Proxyd.sh supports port modification, rslist startup, and configurl startup
    8. PS memory optimization
    9. 16C model performance optimization
    10. When accessing the cluster for the first time, after OBProxy obtains the RSList from the ConfigServer, the All Server List is obtained asynchronously and adjusted to obtain it synchronously
    11. Log compression can be turned on with enable_syslog_file_compress=True
    12. Full username strict mode can be enabled by enable_full_username=True
    13. You can increase the SQL length of obproxy_digest.log by setting the digest_sql_length parameter
    14. Added support for partition routing for timestamp type and negative numbers
    15. Added support for DDL statements in sharding scenarios
    16. Added tenant-level SSL link encryption
    17. Supports splicing URLs by zone
    18. OB Sharding supports Join

    Bugfix:

    1. Fix the problem that the new password under the newly deployed cluster etc is inconsistent with the old password
    2. Fix ODP unable to handle configurations larger than 4K, currently there is no limit to configuration size
    3. Fix the cluster without LDG. After the enable_ldg switch is turned on, the proxy stops updating the location cache, resulting in no sense of offline machines.
    4. Fix Under the 2.0 protocol, the data returned to the driver by the ps and fetch protocols is incorrect, resulting in the client hang problem
    5. Fix mutli swichover obproxy core at databuff_print_key_obj<oceanbase::common::ObLogPrintPointerCntx
    6. Fix obproxy memory leak caused by frequent push of current limiting rules
    7. Fix inaccurate routing in col = ("123") mode
    8. Fix too many current-limiting rules causing the push to fail to take effect
    9. Fix obproxy memory leak caused by frequent push of current limiting rules
    10. Fix After repairing the failover of the standby database into the main database, after the original main database is down, the proxy will have a short time to route the request to the original main database
    11. Fix Failed to establish connection without specifying cluster id within 3 minutes after lossless FO
    12. Fix After repairing the deletion of the standby database, continue to send requests to the old clusterId
    13. Fix the problem that the new protocol link proxy cursor scene, when the fench reaches the second value, it will be rammed
    14. Fix the problem of ps cursor ramming under non-compression protocol
    15. Fix a new connection reporting too many connections error
    16. Fix the case-insensitive name field of the ssl_config configuration table, resulting in unreasonable configuration reading logic
    17. Fix Compression and 2.0 protocol, obdump import data will be hung
    18. Fix the new protocol, refcursor cannot get the value when there are other out parameters
    19. Fix obproxy core at oceanbase::common::ObObjCmpFuncs::compare null safe
    20. Fix obproxy core at oceanbase::common::ObTimeConverter::str_to_digit_with_date
    21. Fix the error -5560, Unknown prepared statement handle when bmsql opens ps when the compression protocol is enabled
    Source code(tar.gz)
    Source code(zip)
    obproxy-ce-3.2.3-2.el7.aarch64.rpm(8.27 MB)
    obproxy-ce-3.2.3-2.el7.x86_64.rpm(9.45 MB)
    obproxy-ce-3.2.3-2.el8.aarch64.rpm(8.31 MB)
    obproxy-ce-3.2.3-2.el8.x86_64.rpm(9.50 MB)
Owner
OceanBase
The Leading Scalable HTAP Database.
OceanBase
OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.

What is OceanBase database OceanBase Database is a native distributed relational database. It is developed entirely by Alibaba and Ant Group. OceanBas

OceanBase 4.5k Aug 9, 2022
MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.

Copyright (c) 2000, 2021, Oracle and/or its affiliates. This is a release of MySQL, an SQL database server. License information can be found in the

MySQL 8.1k Aug 6, 2022
A mini database for learning database

A mini database for learning database

Chuckie Tan 4 Jul 21, 2022
Beryl-cli is a client for the BerylDB database server

Beryl-cli is a client for the BerylDB database server. It offers multiple commands and is designed to be fast and user-friendly.

BerylDB 11 Apr 21, 2022
ESE is an embedded / ISAM-based database engine, that provides rudimentary table and indexed access.

Extensible-Storage-Engine A Non-SQL Database Engine The Extensible Storage Engine (ESE) is one of those rare codebases having proven to have a more th

Microsoft 782 Jul 29, 2022
Nebula Graph is a distributed, fast open-source graph database featuring horizontal scalability and high availability

Nebula Graph is an open-source graph database capable of hosting super large scale graphs with dozens of billions of vertices (nodes) and trillions of edges, with milliseconds of latency.

vesoft inc. 817 Aug 4, 2022
DuckDB is an in-process SQL OLAP Database Management System

DuckDB is an in-process SQL OLAP Database Management System

DuckDB 5.7k Aug 7, 2022
YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features

YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features. It is best to fit for cloud-native OLTP (i.e. real-time, business-critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, or globally-distributed deployments.

yugabyte 6.7k Aug 2, 2022
TimescaleDB is an open-source database designed to make SQL scalable for time-series data.

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.

Timescale 13.4k Aug 7, 2022
PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL.

PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL. It extends PostgreSQL to become a share-nothing distributed database, which supports global data consistency and ACID across database nodes, distributed SQL processing, and data redundancy and high availability through Paxos based replication. PolarDB is designed to add values and new features to PostgreSQL in dimensions of high performance, scalability, high availability, and elasticity. At the same time, PolarDB remains SQL compatibility to single-node PostgreSQL with best effort.

Alibaba 2.4k Aug 3, 2022
SOCI - The C++ Database Access Library

Originally, SOCI was developed by Maciej Sobczak at CERN as abstraction layer for Oracle, a Simple Oracle Call Interface. Later, several database backends have been developed for SOCI, thus the long name has lost its practicality. Currently, if you like, SOCI may stand for Simple Open (Database) Call Interface or something similar.

SOCI 1.1k Aug 8, 2022
StarRocks is a next-gen sub-second MPP database for full analysis senarios, including multi-dimensional analytics, real-time analytics and ad-hoc query, formerly known as DorisDB.

StarRocks is a next-gen sub-second MPP database for full analysis senarios, including multi-dimensional analytics, real-time analytics and ad-hoc query, formerly known as DorisDB.

StarRocks 3k Jul 29, 2022
BaikalDB, A Distributed HTAP Database.

BaikalDB supports sequential and randomised realtime read/write of structural data in petabytes-scale. BaikalDB is compatible with MySQL protocol and it supports MySQL style SQL dialect, by which users can migrate their data storage from MySQL to BaikalDB seamlessly.

Baidu 966 Aug 3, 2022
Velox is a new C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems.

Velox is a C++ database acceleration library which provides reusable, extensible, and high-performance data processing components

Facebook Incubator 985 Jul 29, 2022
Test any type of cloud database on Android apps. No need of a dedicated backend.

DB Kong - Database connections simplified DB Kong is an Android library that allows you to connect, interact and test any type of cloud database on An

Arjun 9 May 9, 2022
The fastest database-library on Android OS.

Android SQLite3 NDK 封装 Demo下载 (操作:按钮新增 按钮查询 点按编辑 长按删除) 写在前面 sqlite3 开源、集成简单(现在的版本只有2个文件 sqlite3.h sqlite3.c) 这个库抽离自 Telegram 的开源代码、作者:DrKLO 我个人感觉 Tele

水银灯、 2 Dec 27, 2021
LogMessage is one of the output format of database incremental data

LogMessage LogMessage是一种数据库增量数据的输出格式,oceanbase的增量采集模块liboblog正是使用的这种消息格式来输出增量数据,LogMessage支持oceanbase中不同数据类型的增量数据的写入,具有序列化和反序列化的能力。 如何编译 LogMessage的编译

OceanBase 7 Jan 21, 2022
GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

null 235 Jul 28, 2022
MillenniumDB is a graph oriented database management system

Millennium DB MillenniumDB is a graph oriented database management system developed by the Millennium Institute for Foundational Research on Data (IMF

null 22 Jul 9, 2022