カラムストアレプリカを使用する場合は、独立したODPをデプロイする必要があります。カラムストアレプリカに関する情報については、カラムストアレプリカを参照してください。
OceanBase データベースプロキシ(OceanBase Database Proxy、略称:ODP、または OBProxy)は、OceanBaseが提供するデータベースプロキシミドルウェアであり、接続プール管理、ロードバランシング、フェイルオーバーなどの機能を提供します。OBProxyはオプションのコンポーネントであり、そのデプロイの有無はアプリケーションの要件とシナリオによって決定されます。
このセクションでは、RPMパッケージを使用してOBProxyをインストールする方法について説明します。
注意
- OBProxyは任意のマシンにデプロイされると、
ip:portを外部に公開することでOceanBaseのプロキシサービスを提供します。ユーザーはMySQLデータベースにアクセスするように、このip:portを通じてOceanBaseデータベースにアクセスできます。一般的にはOBServerノードにデプロイすることを推奨します。 - 一台のマシンには一つのOBProxyサービスのみをデプロイし、規定の
2883ポートを使用することを推奨します。同一マシン上に複数のOBProxyサービスをデプロイする場合は、区別のために異なるポートと異なる設定ファイルのパスを指定する必要があります。ポートは3306または1521など、他のポートにカスタマイズ可能です。
手順
ステップ1:OBProxy RPMパッケージのインストール
ここで、$rpm_dir はRPMパッケージを格納するディレクトリを表し、$rpm_name はRPMパッケージの名前を表します。
[root@xxx /]# cd $rpm_dir
[root@xxx $rpm_dir]# rpm -ivh $rpm_name
説明
OBProxyソフトウェアは、デフォルトで /opt/taobao/install ディレクトリにインストールされます。他のディレクトリを指定する必要がある場合は、--prefix パラメータを設定して指定できます。例えば、/home/admin ディレクトリにインストールする場合は次のとおりです:rpm -ivh --prefix=/home/admin $rpm_name。
例:
[root@xxx admin]# rpm -ivh obproxy-4.0.0-20230109154442.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:obproxy-4.0.0-20230109154442.el7 ################################# [100%]
ステップ2:ディレクトリの設定
(オプション)obproxyへのソフトリンクを作成します。
説明
obproxyへのソフトリンクを作成すると、バージョン情報が隠され、後の操作が容易になります。
obproxyのインストールディレクトリは
/opt/taobao/installです。obproxyプロセスのホームディレクトリは/opt/taobao/install/obproxyであり、これはソフトリンクで、実際には対応するobproxyバージョンのソフトウェアディレクトリを指しています。[root@xxx admin]# su - admin -bash-4.2$ cd /opt/taobao/install -bash-4.2$ ls ajdk-8.3.6-b129 obproxy-4.0.0 # obproxyへのソフトリンクを作成 -bash-4.2$ sudo ln -s obproxy-4.0.0 obproxy [sudo] password for admin: -bash-4.2$ ll total 8 drwxr-xr-x 9 root root 4096 Sep 26 15:24 ajdk-8.3.6-b129 lrwxrwxrwx 1 root root 13 Jan 29 16:51 obproxy -> obproxy-4.0.0 drwxr-xr-x 5 admin admin 4096 Jan 29 16:42 obproxy-4.0.0 -- obproxyの所有者と所属グループをadminに変更します。 [root@xxx install]# chown -R admin:admin obproxy [root@xxx install]# ll total 8 drwxr-xr-x 9 root root 4096 Sep 26 15:24 ajdk-8.3.6-b129 lrwxrwxrwx 1 admin admin 13 Jan 29 16:51 obproxy -> obproxy-4.0.0 drwxr-xr-x 5 admin admin 4096 Jan 29 16:42 obproxy-4.0.0obproxyプロセスの実行ログディレクトリを作成します。
obproxyプロセスの実行ログディレクトリは、ソフトリンクを介して
/home/admin/logs/obproxy/logを指します。[root@xxx admin]# su - admin # ログディレクトリを作成 -bash-4.2$ mkdir -p /home/admin/logs/obproxy/log # obproxyプロセスディレクトリの状況を確認 -bash-4.2$ tree /opt/taobao/install/obproxy /opt/taobao/install/obproxy |-- bin | |-- obp_xflush.py | |-- obproxy | |-- obproxyd.sh | `-- unzip.py |-- lib | |-- libgpr.so.7 | |-- libgrpc++.so.1 | |-- libgrpc++_cronet.so.1 | |-- libgrpc.so.7 | |-- libgrpc_cronet.so.7 | |-- libobproxy_so.so | |-- libprotobuf.so.18 | `-- libstdc++.so.6 |-- log -> /home/admin/logs/obproxy/log |-- minidump -> /home/admin/logs/obproxy/minidump |-- start_obproxy.sh `-- tools |-- dump_syms |-- log4cplus.conf |-- minidump.sh |-- minidump_stackwalk `-- obproxy.sym 3 directories, 20 files
ステップ3:OBProxyアカウントの初期化
OBProxyはバックエンドのOBServerノードと通信を維持する必要があります。そのため、事前にOceanBaseクラスタのsysテナント内でOBProxy用の接続ユーザー(proxyro)とパスワードを作成しておく必要があります。後からOBProxyを起動する際には、proxy起動パラメータを設定することで、この情報をproxyに伝えることができます。
説明
proxyroユーザーは、OBProxyがOceanBaseクラスタにアクセスするためのユーザーです。1つのOceanBaseクラスタに対応して1つのproxyroアカウントが存在します。
例:
proxyroユーザーを作成し、SELECT権限を付与します。
$obclient -hxxx.xxx.xxx.1 -P2881 -uroot@sys -p******
obclient [(none)]> CREATE USER proxyro IDENTIFIED BY '******';
Query OK, 0 rows affected
obclient [(none)]> GRANT SELECT ON *.* TO proxyro;
Query OK, 0 rows affected
obclient [(none)]> SHOW GRANTS FOR proxyro;
+----------------------------------+
| Grants for proxyro@% |
+----------------------------------+
| GRANT SELECT ON *.* TO 'proxyro' |
+----------------------------------+
1 row in set
ステップ4:OBProxyを起動する
注意
OBProxyを起動する際は、adminユーザーであり、かつOBProxyソフトウェアのホームディレクトリにいる必要があります。他のユーザーまたは他のディレクトリから起動すると問題が発生する可能性があります。
OBProxyを起動する際には、OceanBaseクラスタの場所を知る必要があります。これは、rootservice_listパラメータで指定します。
起動コードは以下のとおりです:
cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.xxx.1:2881;xxx.xxx.xxx.2:2881;xxx.xxx.xxx.3:2881" -p 2883 -o "observer_sys_password=$sha1_value,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c cluster_name説明
$sha1_valueは、実際に設定するパスワードに置き換えてください。プロキシの起動パラメータを設定する方法では、設定するパスワードはSHA-1ハッシュ値であり、元の値ではありません。例えば、proxyroユーザーの設定パスワードが123456の場合、observer_sys_passwordの値は7c4a8d09ca3762af61e59520943dc26494f8941bに設定する必要があります。- 例示されたIPアドレスはマスキング処理されていますが、これはインストール要件ではありません。起動時には、ご自身のマシンの実際のIPアドレスを入力してください。
パラメータの説明:
パラメータ説明-rOBServerノードのIPアドレスとポートを指定します。 -pサーバーのポート番号を指定します。通常は 2883を指定します。-cクラスタ名を指定します。 -oハードウェアまたはカーネルパラメータの設定を指定します。 例:
[root@xxx admin]# su - admin -bash-4.2$ cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.xxx.1:2881" -p 2883 -o "observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c test3241 bin/obproxy -r xxx.xxx.xxx.1:2881 -p 2883 -o observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c test3241 rs list: xxx.xxx.xxx.1:2881 listen port: 2883 optstr: observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false cluster_name: test3241起動後、プロセスが存在するか確認できます。
ps -ef|grep obproxy例:
[root@xxx admin]# ps -ef|grep obproxy admin 79111 0 6 17:32 ? 00:00:58 bin/obproxy -r xxx.xxx.xxx.1:2881 -p 2883 -o observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c test3241
次のステップ
OceanBaseデータベースへの接続
OBProxyを介して接続する場合、ユーザー名の形式にはユーザー名、テナント名、クラスタ名が含まれる必要があります。形式は以下のとおりです:ユーザー名@テナント名#クラスタ名 または クラスタ名:テナント名:ユーザー名。
例:
ユーザー名@テナント名#クラスタ名 でOceanBaseデータベースに接続します。
[admin@xxx /home/admin] $obclient -hxxx.xxx.xxx.1 -P2883 -uroot@sys#test3241 -p****** Welcome to the OceanBase. Commands end with ; or \g. ... Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [(none)]>クラスタ名:テナント名:ユーザー名 でOceanBaseデータベースに接続します。
[admin@xxx /home/admin] $obclient -hxxx.xxx.xxx.1 -P2883 -utest3241:sys:root -p****** Welcome to the OceanBase. Commands end with ; or \g. ...... Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [(none)]>
(オプション)OBProxyパラメータの調整
サーバーの実際の状況に応じて、OBProxyパラメータの値を調整することで、実行ログ量やCPU消費などの情報を設定できます。
例:
以下は、実行ログ量を削減したりCPU消費を低減したりするためのOBProxyのパラメータ設定です。
obclient [(none)]> ALTER PROXYCONFIG SET slow_proxy_process_time_threshold='1000ms';
Query OK, 0 rows affected
obclient [(none)]> ALTER PROXYCONFIG SET xflush_log_level=ERROR;
Query OK, 0 rows affected
obclient [(none)]> ALTER PROXYCONFIG SET syslog_level=WARN;
Query OK, 0 rows affected
obclient [(none)]> ALTER PROXYCONFIG SET enable_compression_protocol=false;
Query OK, 0 rows affected
obclient [(none)]> SHOW PROXYCONFIG LIKE '%compress%'\G
*************************** 1. row ***************************
name: enable_compression_protocol
value: False
info: if enabled, proxy will use compression protocol with server
need_reboot: false
visible_level: USER
*************************** 2. row ***************************
name: enable_syslog_file_compress
value: False
info: Whether to enable archive log compression
need_reboot: false
visible_level: SYS
2 rows in set