obd部署OceanBase 3.1.2

本次主要测试obd工具部署ob集群,测试表明该工具非常好用,极大简化了安装部署工作,非常赞!

以下为主要安装部署工作介绍,省略了一些环境初始化及安装包下载上传安装的工作。

一 环境介绍

加上obd服务器共4台服务器,一台为windows环境的wsl环境,用作obd服务器,另外三台为observer节点。

三台observer服务器配置比较低,均为8c16g。

安装目录创建:mkdir /home/observer/{home,data,obproxy}

二 略去环境初始化、安装包下载上传及安装工作。

三 obd部署的配置文件

在obd服务器上哈,需提前安装obd程序,其他准备工作不表。

[root@WINDOWS-M9TAO22 ~]# cat obdep_ob_obproxy.yaml oceanbase-ce: servers: - name: server1 # Please don’t use hostname, only IP can be supported ip: 10.20.148.118 - name: server2 ip: 10.20.148.119 - name: server3 ip: 10.20.148.120 global: devname: ens192 cluster_id: 1 memory_limit: 8G system_memory: 4G stack_size: 512K cpu_count: 16 cache_wash_threshold: 1G __min_full_resource_pool_memory: 268435456 workers_per_cpu_quota: 10 schema_history_expire_time: 1d net_thread_count: 4 major_freeze_duty_time: Disable minor_freeze_times: 10 enable_separate_sys_clog: 0 enable_merge_by_turn: FALSE datafile_disk_percentage: 20 syslog_level: INFO enable_syslog_wf: false enable_syslog_recycle: true max_syslog_file_count: 4 appname: obcluster server1: mysql_port: 2881 rpc_port: 2882 home_path: /home/observer/home # data_dir: /home/observer/data # redo_dir: /home/observer/redo zone: zone1 server2: mysql_port: 2881 rpc_port: 2882 home_path: /home/observer/home # data_dir: /home/observer/data # redo_dir: /home/observer/redo zone: zone2 server3: mysql_port: 2881 rpc_port: 2882 home_path: /home/observer/home # data_dir: /home/observer/data # redo_dir: /home/observer/redo zone: zone3 obproxy: depends: - oceanbase-ce servers: - 10.20.148.118 global: listen_port: 2883 prometheus_listen_port: 2884 home_path: /home/observer/obproxy enable_cluster_checkout: false # cluster_name: obcluster skip_proxy_sys_private_check: true

四 使用obd部署ob集群

在obd服务器上。

[root@WINDOWS-M9TAO22 ~]# obd cluster autodeploy obtest -c obdep_ob_obproxy.yaml oceanbase-ce-3.1.2 already installed. obproxy-3.2.0 already installed. Cluster param config check ok Open ssh connection ok Generate observer configuration ok Generate obproxy configuration ok oceanbase-ce-3.1.2 already installed. obproxy-3.2.0 already installed. ±------------------------------------------------------------------------------------------+ | Packages | ±-------------±--------±----------------------±-----------------------------------------+ | Repository | Version | Release | Md5 | ±-------------±--------±----------------------±-----------------------------------------+ | oceanbase-ce | 3.1.2 | 10000392021123010.el7 | 7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed | | obproxy | 3.2.0 | 1.el7 | 8d5c6978f988935dc3da1dbec208914668dcf3b2 | ±-------------±--------±----------------------±-----------------------------------------+ Repository integrity check ok Parameter check ok Open ssh connection ok Remote oceanbase-ce-3.1.2-7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed repository install ok Remote oceanbase-ce-3.1.2-7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed repository lib check ok Remote obproxy-3.2.0-8d5c6978f988935dc3da1dbec208914668dcf3b2 repository install ok Remote obproxy-3.2.0-8d5c6978f988935dc3da1dbec208914668dcf3b2 repository lib check ok Cluster status check ok Initializes observer work home ok Initializes obproxy work home ok obtest deployed Get local repositories and plugins ok Open ssh connection ok Load cluster param plugin ok Check before start observer ok [WARN] (10.20.148.118) clog and data use the same disk (/home) [WARN] (10.20.148.119) clog and data use the same disk (/home) [WARN] (10.20.148.120) clog and data use the same disk (/home) Check before start obproxy ok Start observer ok observer program health check ok Connect to observer ok Initialize cluster Cluster bootstrap ok Wait for observer init ok ±------------------------------------------------+ | observer | ±--------------±--------±-----±------±-------+ | ip | version | port | zone | status | ±--------------±--------±-----±------±-------+ | 10.20.148.118 | 3.1.2 | 2881 | zone1 | active | | 10.20.148.119 | 3.1.2 | 2881 | zone2 | active | | 10.20.148.120 | 3.1.2 | 2881 | zone3 | active | ±--------------±--------±-----±------±-------+ Start obproxy ok obproxy program health check ok Connect to obproxy ok Initialize cluster ±------------------------------------------------+ | obproxy | ±--------------±-----±----------------±-------+ | ip | port | prometheus_port | status | ±--------------±-----±----------------±-------+ | 10.20.148.118 | 2883 | 2884 | active | ±--------------±-----±----------------±-------+ obtest running

五 使用obd查看集群

[root@WINDOWS-M9TAO22 ~]# obd cluster list ±-----------------------------------------------------+ | Cluster List | ±-------±--------------------------±----------------+ | Name | Configuration Path | Status (Cached) | ±-------±--------------------------±----------------+ | obtest | /root/.obd/cluster/obtest | running | ±-------±--------------------------±----------------+ [root@WINDOWS-M9TAO22 ~]#

六 使用obclient连接ob集群

[root@WINDOWS-M9TAO22 ~]# obclient -h10.20.148.118 -P2883 -uroot -p Enter password: Welcome to OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3 Server version: OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29) Copyright (c) 2000, 2020, OceanBase and/or its affiliates. All rights reserved. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. root_(none)_2883> alter user ‘root’@’%’ identified by ‘123456’; Query OK, 0 rows affected (0.03 sec) root_(none)_2883>

因字数限制,仅能写这么多,剩余内容见评论。

七 检查observer节点相关进程

随机检查了集群的一个节点。

[root@oceanbase1 mysql]# ps -ef|grep observer
root      50377      1 67 10:14 ?        00:45:17 /home/observer/home/bin/observer -r 10.20.148.118:2882:2881;10.20.148.119:2882:2881;10.20.148.120:2882:2881 -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,major_freeze_duty_time=Disable,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_disk_percentage=20,enable_syslog_wf=True,enable_syslog_recycle=True,max_syslog_file_count=4,datafile_size=38G,clog_disk_utilization_threshold=95,clog_disk_usage_limit_percentage=98 -z zone1 -p 2881 -P 2882 -n obcluster -c 1 -d /home/observer/home/store -i ens192 -l INFO
root      51416      1  0 10:15 ?        00:00:02 bash /home/observer/obproxy/obproxyd.sh /home/observer/obproxy 10.20.148.118 2883 daemon
root      51446      1  0 10:15 ?        00:00:31 /home/observer/obproxy/bin/obproxy --listen_port 2883
root      79654   9486  0 11:22 pts/1    00:00:00 grep --color=auto observer



八 使用obd关闭并卸载ob数据库

[root@WINDOWS-M9TAO22 ~]# obd cluster stop obtest
Get local repositories and plugins ok
Open ssh connection ok
Stop observer ok
Stop obproxy ok
obtest stopped


[root@WINDOWS-M9TAO22 ~]# obd cluster destroy obtest
Get local repositories and plugins ok
Open ssh connection ok
Cluster status check ok
observer work dir cleaning ok
obproxy work dir cleaning ok
obtest destroyed
[root@WINDOWS-M9TAO22 ~]#



九 创建unit、resource pool、租户

root_(none)_2883> create resource unit u1c1g max_cpu=1, min_cpu=1, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='100G';
Query OK, 0 rows affected (0.01 sec)
 
root_oceanbase_2883> create resource POOL p_mysql unit='u1c1g', unit_num=1, zone_list=('zone1','zone2','zone3');
Query OK, 0 rows affected (0.02 sec)

root_oceanbase_2883> create tenant obmysql charset=utf8mb4, replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2;zone3', resource_pool_list('p_mysql');
Query OK, 0 rows affected (2.30 sec)



十 连接新租户

我记得新租户默认没密码的,使用proxy端口2883,直接回车登录失败,2881端口直连也登录失败。



后咨询了OB的大佬,微信ID:木子相心,感谢大佬支持。


然后从observer节点,使用127.0.0.1登录新租户,并改密码。



[root@oceanbase1 mysql]# obclient -h127.0.0.1 -P2883 -uroot@obmysql -p
Enter password:
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.6.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29)

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 [(none)]> select user,host from mysql.user;
+------------+------+
| user       | host |
+------------+------+
| root       | %    |
| ORAAUDITOR | %    |
+------------+------+
2 rows in set (0.029 sec)

MySQL [(none)]> alter user 'root'@'%' identified by '123456';
Query OK, 0 rows affected (0.034 sec)

MySQL [(none)]> set global ob_tcp_invited_nodes='%';
Query OK, 0 rows affected (0.102 sec)

MySQL [(none)]>





十一 逻辑恢复测试

手头刚好有一份使用obdumper从企业版ob集群导出的备份文件。

导出参数为--ddl 和--csv,

企业版obdumper版本:ob-loader-dumper-2.3.2-SNAPSHOT

企业版集群版本:Server version: OceanBase 3.1.2

开源版obloader版本:ob-loader-dumper-3.0.0-RELEASE-ce


使用开源版obloader导入失败,报错如下:


使用企业版obloader导入到开源版集群,失败,报错如下:




后咨询了OB开源的孙夕恩、陈玉静、李晓东几位老师,告知企业版obdumper的备份文件导入到开源OB集群时,需要添加几个参数:

 --external-data 和--skip-header

--external-data 作用是关闭元数据

备份时为--csv 格式,恢复时需要加上 --skip-header(但仅在备份文件为企业版备份时需要添加,开源版--csv备份时第一行也是列名,但开源工具恢复时不用添加该参数)

另外也要添加 --sys-user和 --sys-password参数。


当备份文件为企业版obdumper备份的企业版ob集群mysql租户,企业版和开源版的恢复命令:

-- 企业版工具恢复
ob-loader-dumper-2.3.2-SNAPSHOT/bin/obloader -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456  --external-data --skip-header -f /root/xcdata/obdatabak2/biz/
-- 开源版工具恢复
ob-loader-dumper-3.0.0-RELEASE-ce/bin/obloader -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456  --external-data --skip-header -f /root/xcdata/obdatabak2/biz/



企业版工具备份开源ob集群,分别使用企业版和开源版工具恢复,开源版恢复时需要添加 --external-data 和--skip-header参数:


-- 企业版备份
/root/xcdata/ob-loader-dumper-2.3.2-SNAPSHOT/bin/obdumper -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456   -f /root/xcdata/obdatabak2/test

-- 企业版恢复
/root/xcdata/ob-loader-dumper-2.3.2-SNAPSHOT/bin/obloader -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456   -f /root/xcdata/obdatabak2/test

-- 开源版恢复
/root/xcdata/ob-loader-dumper-3.0.0-RELEASE-ce/bin/obloader -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456   -f /root/xcdata/obdatabak2/test --external-data --skip-header



开源版本工具备份开源集群,并分别使用企业版和开源版工具恢复,企业版工具恢复时需要加--external-data --skip-header参数:


-- 开源版本备份
/root/xcdata/ob-loader-dumper-3.0.0-RELEASE-ce/bin/obdumper -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456 -f /root/xcdata/obdatabak2/test

-- 开源版本恢复
/root/xcdata/ob-loader-dumper-2.3.2-SNAPSHOT/bin/obloader -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456 -f /root/xcdata/obdatabak2/test

-- 企业版恢复,需添加--external-data --skip-header
/root/xcdata/ob-loader-dumper-2.3.2-SNAPSHOT/bin/obloader -uroot -tobmysql  -h10.20.148.118 -p123456 -P2883 -D test --ddl --csv --all --sys-user=root --sys-password=123456 -f /root/xcdata/obdatabak2/test  --external-data --skip-header



1 个赞