OceanBase
English日本語简体中文
Docs Home
Products
Integrations
Release Notes

Databases

OceanBase DatabaseOceanBase Cloud OceanBase Best Practices

Tools

OceanBase Cloud PlatformOceanBase Migration ServiceOceanBase Developer CenterOceanBase Migration AssessmentOceanBase Admin ToolOceanBase Loader and DumperOceanBase DeployerKubernetes operator for OceanBaseOceanBase Diagnostic Tool OceanBase Binlog Service

Connectors and Middleware

OceanBase Database Proxy OceanBase Connector/C OceanBase Connector/J OceanBase Connector/ODBC OceanBase Connector/NETOceanBase Command-Line Client

Databases

OceanBase DatabaseOceanBase Cloud OceanBase Best Practices

Connectors and Middleware

OceanBase Database Proxy OceanBase Connector/C OceanBase Connector/J OceanBase Connector/ODBC OceanBase Connector/NETOceanBase Command-Line Client

Tools

OceanBase Cloud PlatformOceanBase Migration ServiceOceanBase Developer CenterOceanBase Migration AssessmentOceanBase Admin ToolOceanBase Loader and DumperOceanBase DeployerKubernetes operator for OceanBaseOceanBase Diagnostic Tool OceanBase Binlog Service
OceanBase DatabaseOceanBase Cloud ToolsConnectors and MiddlewareLifecycle Support Policy

OceanBase Database Proxy

V4.4.0
  • What is ODP?
  • Installation and deployment
    • Overview
    • Deploy ODP by using obd
    • Deploy ODP by using OCP
    • Deploy ODP by using the CLI
    • Deployment modes
  • Basic operations
  • Configuration parameter
    • View and modify parameters
    • Parameter summary
    • Global parameters
      • automatic_match_work_thread
      • block_thread_num
      • cache_cleaner_clean_interval
      • check_tenant_locality_change
      • client_max_connections
      • client_max_memory_size
      • client_session_id_version
      • client_sock_option_flag_out
      • client_tcp_keepcnt
      • client_tcp_keepidle
      • client_tcp_keepintvl
      • client_tcp_user_timeout
      • cluster_count_high_water_mark
      • cluster_expire_time
      • config_server_refresh_interval
      • congestion_fail_window
      • congestion_failure_threshold
      • congestion_retry_interval
      • connection_diagnosis_option
      • connection_pool_mode
      • connect_observer_max_retries
      • current_local_config_version
      • default_buffer_water_mark
      • default_inactivity_timeout
      • delay_exit_time
      • delay_update_entry_interval
      • detect_server_timeout
      • digest_sql_length
      • enable_abort_conn_info
      • enable_async_log
      • enable_async_pull_location_cache
      • enable_auto_restart
      • enable_bad_route_reject
      • enable_binlog_service
      • enable_cached_server
      • enable_causal_order_read
      • enable_client_connection_lru_disconnect
      • enable_client_ip_checkout
      • enable_cluster_checkout
      • enable_compression_protocol
      • enable_congestion
      • enable_connection_diagnosis
      • enable_cpu_isolate
      • enable_cpu_topology
      • enable_crash_error_log
      • enable_cross_shard_txn
      • enable_extra_prometheus_metric
      • enable_flow_control
      • enable_full_link_trace
      • enable_full_username
      • enable_get_rslist_remote
      • enable_global_ps_cache
      • enable_index_route
      • enable_monitor_stat
      • enable_ob_protocol_v2
      • enable_obproxy_rpc_service
      • enable_partition_table_route
      • enable_performance_mode
      • enable_pl_route
      • enable_primary_zone
      • enable_prometheus
      • enable_proxy_scramble
      • enable_qa_mode
      • enable_qos
      • enable_report_session_stats
      • enable_reroute
      • enable_scan_all_request
      • enable_sequence_prefetch
      • enable_sharding
      • enable_single_leader_node_routing
      • enable_standby
      • enable_stat
      • enable_strict_kernel_release
      • enable_strict_stat_time
      • enable_sync_all_stats
      • enable_syslog_file_compress
      • enable_syslog_wf
      • enable_trace
      • enable_trace_stats
      • enable_trans_detail_stats
      • enable_transaction_internal_routing
      • enable_xa_route
      • fetch_proxy_bin_random_time
      • fetch_proxy_bin_timeout
      • flow_consumer_reenable_threshold
      • flow_event_queue_threshold
      • flow_high_water_mark
      • flow_low_water_mark
      • grpc_client_num
      • grpc_thread_num
      • hot_upgrade_exit_timeout
      • hot_upgrade_failure_retries
      • hot_upgrade_rollback_timeout
      • idc_list_refresh_interval
      • ignore_local_config
      • internal_cmd_mem_limited
      • ip_listen_mode
      • is_need_skip_delay_interval_schema_changed
      • ldg_info_refresh_interval
      • listen_port
      • local_bound_ip
      • local_bound_ipv6_ip
      • log_cleanup_interval
      • log_dir_size_threshold
      • log_file_percentage
      • long_async_task_timeout
      • max_log_file_size
      • max_syslog_file_count
      • max_syslog_file_time
      • mem_leak_check_class_name
      • mem_leak_check_mod_name
      • metadb_server_state_refresh_interval
      • min_congested_connect_timeout
      • min_keep_congestion_interval
      • monitor_cost_ms_unit
      • monitor_item_limit
      • monitor_item_max_idle_period
      • monitor_log_level
      • monitor_stat_dump_interval
      • monitor_stat_high_threshold
      • monitor_stat_low_threshold
      • monitor_stat_middle_threshold
      • need_convert_vip_to_tname
      • net_accept_threads
      • net_config_poll_timeout
      • normal_pl_update_threshold
      • obproxy_config_server_url
      • obproxy_sys_password
      • partition_location_expire_relative_time
      • prometheus_cost_ms_unit
      • prometheus_listen_port
      • prometheus_sync_interval
      • protocol_diagnosis_level
      • proxy_cluster
      • proxy_hot_upgrade_check_interval
      • proxy_id
      • proxy_info_check_interval
      • proxy_local_cmd
      • proxy_mem_limited
      • qa_mode_mock_public_cloud_slb_addr
      • qos_stat_clean_interval
      • qos_stat_item_limit
      • refresh_idc_list
      • refresh_json_config
      • refresh_rslist
      • request_buffer_length
      • rootservice_list
      • rpc_client_net_write_timeout
      • rpc_client_net_read_timeout
      • rpc_async_pull_batch_max_size
      • rpc_async_task_thread_num
      • rpc_ctx_expire_time
      • routing_cache_mem_limited
      • rpc_enable_async_analyze
      • rpc_enable_async_pull_batch_tablets
      • rpc_async_pull_batch_max_times
      • rpc_async_pull_batch_wait_interval
      • rpc_enable_direct_expire_route_entry
      • rpc_enable_congestion
      • rpc_enable_lower_case_table_names
      • rpc_enable_global_index
      • rpc_enable_force_srv_black_list
      • rpc_enable_requestsm_info
      • rpc_enable_reroute
      • rpc_enable_parallel_handler
      • rpc_enable_retry_request_info_log
      • rpc_force_use_original_redis_protocol
      • rpc_enable_sub_req_log
      • rpc_force_srv_black_list
      • rpc_listen_port
      • rpc_max_request_batch_size
      • rpc_max_response_batch_size
      • rpc_max_server_table_entry_num
      • rpc_net_timeout_base
      • rpc_partition_calc_max_retries
      • rpc_redis_operation_timeout
      • rpc_request_server_entry_max_retries
      • rpc_request_timeout
      • rpc_request_max_retries
      • rpc_redis_default_database_name
      • rpc_redis_max_monitor_num
      • rpc_period_task_interval
      • rpc_redis_default_user_name
      • rpc_request_retry_waiting_time
      • rpc_server_entry_expire_time
      • rpc_request_timeout_delta
      • rpc_server_net_invalid_time_us
      • rpc_server_net_handler_expire_time
      • rpc_srv_session_pool_inactive_timeout
      • rpc_service_mode
      • rpc_server_net_max_pending_request
      • rpc_sub_request_isolation_mode
      • rpc_support_key_partition_shard_request
      • rpc_sub_request_weight
      • rpc_sub_req_max_retries
      • scan_buffered_rows_warning_threshold
      • sequence_entry_expire_time
      • sequence_fail_retry_count
      • sequence_prefetch_threshold
      • server_detect_fail_threshold
      • server_detect_mode
      • server_detect_refresh_interval
      • server_protocol
      • server_routing_mode
      • server_state_refresh_interval
      • server_tcp_init_cwnd
      • server_tcp_keepcnt
      • server_tcp_keepidle
      • server_tcp_keepintvl
      • server_tcp_user_timeout
      • session_pool_idle_timeout
      • session_pool_reset_interval
      • session_pool_stat_log_interval
      • session_pool_thread_num
      • session_pool_thread_schedule_interval
      • shard_scan_thread_num
      • short_async_task_timeout
      • skip_proxy_sys_private_check
      • skip_proxyro_check
      • slow_proxy_process_time_threshold
      • slow_transaction_time_threshold
      • sock_option_flag_out
      • sock_packet_mark_out
      • sock_packet_tos_out
      • sock_recv_buffer_size_out
      • sock_send_buffer_size_out
      • sql_table_cache_expire_relative_time
      • sql_table_cache_mem_limited
      • sqlaudit_mem_limited
      • stack_size
      • stat_dump_interval
      • stat_table_sync_interval
      • syslog_io_bandwidth_limit
      • syslog_level
      • table_entry_retry_build_limit
      • task_thread_num
      • tenant_location_valid_time
      • tunnel_request_size_threshold
      • username_separator
      • work_thread_num
      • xflush_log_level
    • Multi-level parameters
      • binlog_service_ip
      • compression_algorithm
      • enable_check_cluster_name
      • enable_client_ssl
      • enable_cloud_full_username
      • enable_read_write_split
      • enable_rpc_throttle
      • enable_server_ssl
      • enable_standby_read_write_split
      • enable_transaction_split
      • enable_weak_reroute
      • init_sql
      • mysql_version
      • ob_max_read_stale_time
      • obproxy_force_parallel_query_dop
      • obproxy_read_consistency
      • obproxy_read_only
      • observer_query_timeout_delta
      • observer_sys_password
      • observer_sys_password1
      • proxy_idc_name
      • proxy_primary_zone_name
      • proxy_route_policy
      • proxy_tenant_name
      • query_digest_time_threshold
      • read_stale_retry_interval
      • rootservice_cluster_name
      • route_diagnosis_level
      • rpc_request_throttle_waiting_time
      • rpc_throttle_limit_qps_qa
      • route_target_replica_type
      • rpc_throttle_trigger_percentage
      • slow_query_time_threshold
      • sql_firewall_config
      • ssl_attributes
      • target_db_server
      • weakread_weight_zone
  • Connection management
    • Principles
    • Session status synchronization
    • Configure a globally unique client session ID
    • Client session
    • Server session
    • Network connection
    • Session connection pool
  • Data routing
    • Factors affecting data routing
    • ODP routing
    • Intra-tenant routing
      • Overview
      • IP address-based routing
      • Partitioned table-based routing for strong-consistency reads
      • Global index table-based routing for strong-consistency reads
      • Replicated table-based routing for strong-consistency reads
      • Primary zone-based routing for strong-consistency reads
      • Strategy-based routing
      • Distributed transaction routing
      • Rerouting
      • Forcible routing
      • Weight-based load-balanced routing
      • Equality derivation for partition calculation
    • Automatic routing to the primary/standby tenants
    • Read/Write separation
    • Follower latency threshold
    • Function partition key routing
      • Overview
      • String functions
      • Numeric calculation functions
      • Date calculation functions
      • FAQ
    • Character set-based routing
    • Partitioning key types supported for routing by ODP
  • Logs
    • Overview
    • obproxy_diagnosis.log
    • obproxy_digest.log
    • obproxy_error.log
    • obproxy_slow.log
    • obproxy_stat.log
    • obproxy.log
  • Commands
    • Overview
    • Dedicated ODP commands
      • ALTER
      • KILL
        • KILL GLOBALSESSION
        • KILL PROXYSESSION
      • ping
      • SHOW
        • SHOW
        • SHOW GLOBALSESSION
        • SHOW PROXYPS
    • Compatible MySQL commands
      • BINLOG
      • KILL
      • SHOW PROCESSLIST
      • SHOW RELAYLOG EVENTS
      • SHOW SLAVE HOSTS
  • High availability mechanism
    • Overview
    • High availability of ODP services
    • High availability of OceanBase Database
    • High availability testing
  • OBKV
    • RPC service port
    • Throttling
  • Security and protocols
  • Operation and maintenance
    • Troubleshooting logic
    • Performance analysis
    • Show Trace
    • Routing diagnostics
      • Overview
      • Obtain diagnostic information
      • Diagnostic point troubleshooting
        • Overview
        • SQL_PARSE
        • ROUTE_INFO
        • LOCATION_CACHE_LOOKUP
        • ROUTINE_ENTRY_LOOKUP_DONE
        • FETCH_TABLE_RELATED_DATA
        • TABLE_ENTRY_LOOKUP_DONE
        • EXPR_PARSE
        • CALC_ROWID
        • RESOLVE_TOKEN
        • RESOLVE_EXPR
        • CALC_PARTITION_ID
        • PARTITION_ID_CALC_DONE
        • PARTITION_ENTRY_LOOKUP_DONE
        • ROUTE_POLICY
        • CONGESTION_CONTROL
        • RETRY
        • HANDLE_RESPONSE
      • Examples
    • Memory leak diagnostics
    • Connection diagnostics
    • Prometheus monitoring
    • SQL firewall
  • Release Notes
    • Version number rules
    • Enterprise Edition
      • V4.3
        • OceanBase Database Proxy Enterprise Edition V4.3.6
        • OceanBase Database Proxy Enterprise Edition V4.3.5
        • OceanBase Database Enterprise Edition V4.3.4
        • ODP Enterprise Edition V4.3.3
        • ODP Enterprise Edition V4.3.2
        • ODP Enterprise Edition V4.3.1
        • ODP Enterprise Edition V4.3.0
      • V4.2
        • ODP Enterprise Edition V4.2.3
        • ODP Enterprise Edition V4.2.2
        • ODP Enterprise Edition V4.2.1
      • V4.1
        • ODP Enterprise Edition V4.1.0
      • V4.0
        • ODP Enterprise Edition V4.0.0
      • V3.2
        • ODP Enterprise Edition V3.2.11
        • ODP Enterprise Edition V3.2.3.5
    • Community Edition
      • V4.3
        • OceanBase Database Proxy Community Edition V4.3.6
        • OceanBase Database Proxy Community Edition V4.3.5
        • OceanBase Database Proxy Community Edition V4.3.4
        • ODP Community Edition V4.3.3
        • ODP Community Edition V4.3.2
        • ODP Community Edition V4.3.1
      • V4.2
        • ODP Community Edition V4.2.3
        • ODP Community Edition V4.2.1
        • ODP Community Edition V4.2.0
      • V4.1
        • ODP Community Edition V4.1.0
      • V4.0
        • ODP Community Edition V4.0.0

Download PDF

Document Feedback
  1. Documentation Center
  2. OceanBase Database Proxy
  3. V4.4.0

IP address-based routing

Last Updated:2026-09-04 08:23:04

Example 1: Specify IP addresses by using a parameter
Example 2: Specify IP addresses in a comment of an SQL statement

In IP address-based routing, OceanBase Database Proxy (ODP) directly routes SQL requests to the specified OBServer node. You can specify an IP address by using the following two methods:

  • By using the ODP parameter target_db_server. You can specify multiple IP addresses in the 'ip:port,ip:port, ...;ip:port,ip:port, ... ;ip:port,ip:port, ...' format. You can use a comma (,) to separate two IP addresses and a semicolon (;) to group IP addresses. The IP address group on the left of a semicolon (;) takes precedence over that on the right. IP addresses in an IP address group have random priorities.

  • By using an SQL statement with the following syntax: /* TARGET_DB_SERVER = 'addrs' */ executable_sql;

This topic provides two examples to describe the two methods.

Example 1: Specify IP addresses by using a parameter

  1. Run the following command to log on to ODP as the root@proxysys user:

    obclient -h10.10.10.1 -uroot@proxysys -P2883 -p -c
    
  2. Specify a group of invalid IP addresses and another group of valid IP addresses.

    obclient [(none)]> ALTER PROXYCONFIG SET target_db_server = '127.0.0.1:2993,127.0.0.1:2994;10.10.10.1:50109';
    
  3. Log on to a user tenant of OceanBase Database and execute the following SQL statement to trigger routing:

    obclient [test]> SELECT 888;
    
  4. View the routing process in the diagnostic logs.

    [~/cl-deploy/log]$ tail -n1 obproxy_diagnosis.log | sed "s/\/n/\n/g"
    

    The following return result shows that the SQL statement is retried multiple times and finally routed to 10.10.10.1:50109.

    [2023-08-21 16:12:50.404037] [56910][Y0-00007FDF4FB404E0] [ROUTE]((*route_diagnosis=
    Trans Current Query:"SELECT 888"
    
    Route Prompts
    > SQL_PARSE
      [INFO] Maybe counldn't get location cache of the query table since table name is empty.
    > ROUTE_INFO
      [INFO] Will route target db server and loopback addr (127.0.0.1:2993) wouldn't do congestion control
    > CONGESTION_CONTROL
      [INFO] This replica(127.0.0.1:2993) is no need to pass congestion control
    > CONGESTION_CONTROL
      [INFO] This replica(127.0.0.1:2994) is no need to pass congestion control
    
    
    Route Plan
    > SQL_PARSE:{cmd:"COM_QUERY", table:""}
    > ROUTE_INFO:{route_info_type:"USE_CONFIG_TARGET_DB", svr_addr:"127.0.0.1:2993"}
    > CONGESTION_CONTROL:{svr_addr:"127.0.0.1:2993", need_congestion_lookup:false}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECT_ERROR"}
    > RETRY:{attempts:2, retry_status:"FOUND_EXISTING_ADDR", retry_type:"CONF_TARGET_DB_SERVER", retry_addr:{127.0.0.1:2994}}
    > CONGESTION_CONTROL:{svr_addr:"127.0.0.1:2994", need_congestion_lookup:false}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECT_ERROR"}
    > RETRY:{attempts:3, retry_status:"FOUND_EXISTING_ADDR", retry_type:"CONF_TARGET_DB_SERVER", retry_addr:{10.10.10.1:50109}}
    > CONGESTION_CONTROL:{svr_addr:"10.10.10.1:50109"}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECTION_ALIVE"}
    )
    
  5. Log on to ODP as the root@proxysys user and execute the following statement to reset the parameter:

    obclient [(none)]> ALTER PROXYCONFIG SET TARGET_DB_SERVER = '';
    

Example 2: Specify IP addresses in a comment of an SQL statement

  1. Run the following command to log on to the root@test user tenant of OceanBase Database:

    obclient -h10.10.10.1 -uroot@test -P2883 -p -c
    
  2. Specify IP addresses for routing in a comment of the following statement and then execute the SELECT 888; statement to trigger routing.

    obclient [test]> /* TARGET_DB_SERVER = '127.0.0.1:2993,127.0.0.1:2994;10.10.10.1:50109' */ SELECT 888;
    
  3. View the routing process in the diagnostic logs.

    [~/cl-deploy/log]$ tail -n1 obproxy_diagnosis.log | sed "s/\/n/\n/g"
    

    The following return result shows that the SQL statement is retried multiple times and finally routed to 10.10.10.1:50109.

    [2023-08-21 16:09:39.564334] [56910][Y0-00007FDF4FB404E0] [ROUTE]((*route_diagnosis=
    Trans Current Query:"/* target_db_server = '127.0.0.1:2993,127.0.0.1:2994;10.10.10.1:50109' */ SELECT 888"
    
    Route Prompts
    > SQL_PARSE
      [INFO] Maybe counldn't get location cache of the query table since table name is empty.
    > ROUTE_INFO
      [INFO] Will route target db server and loopback addr (127.0.0.1:2993) wouldn't do congestion control
    > CONGESTION_CONTROL
      [INFO] This replica(127.0.0.1:2993) is no need to pass congestion control
    > CONGESTION_CONTROL
      [INFO] This replica(127.0.0.1:2994) is no need to pass congestion control
    
    
    Route Plan
    > SQL_PARSE:{cmd:"COM_QUERY", table:""}
    > ROUTE_INFO:{route_info_type:"USE_COMMENT_TARGET_DB", svr_addr:"127.0.0.1:2993"}
    > CONGESTION_CONTROL:{svr_addr:"127.0.0.1:2993", need_congestion_lookup:false}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECT_ERROR"}
    > RETRY:{attempts:2, retry_status:"FOUND_EXISTING_ADDR", retry_type:"CMNT_TARGET_DB_SERVER", retry_addr:{127.0.0.1:2994}}
    > CONGESTION_CONTROL:{svr_addr:"127.0.0.1:2994", need_congestion_lookup:false}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECT_ERROR"}
    > RETRY:{attempts:3, retry_status:"FOUND_EXISTING_ADDR", retry_type:"CMNT_TARGET_DB_SERVER", retry_addr:{10.10.10.1:50109}}
    > CONGESTION_CONTROL:{svr_addr:"10.10.10.1:50109"}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECTION_ALIVE"}
    )
    

Previous topic

Overview
Last

Next topic

Partitioned table-based routing for strong-consistency reads
Next
on this page
Example 1: Specify IP addresses by using a parameter
Example 2: Specify IP addresses in a comment of an SQL statement