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 个赞