diff --git a/media/online-vs-offline-install/arch.png b/media/online-vs-offline-install/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6361822df23fe8fe352d1c1a7c61b1af543c2c Binary files /dev/null and b/media/online-vs-offline-install/arch.png differ diff --git a/media/online-vs-offline-install/obd-local-deploy.png b/media/online-vs-offline-install/obd-local-deploy.png new file mode 100644 index 0000000000000000000000000000000000000000..07fc8ed58ced0c0d998c3700520a17dd1bb3bfed Binary files /dev/null and b/media/online-vs-offline-install/obd-local-deploy.png differ diff --git a/media/online-vs-offline-install/obd-local-mirror.png b/media/online-vs-offline-install/obd-local-mirror.png new file mode 100644 index 0000000000000000000000000000000000000000..41d1f916f9d3e06c7c1e5418f886129acf545ba7 Binary files /dev/null and b/media/online-vs-offline-install/obd-local-mirror.png differ diff --git "a/\345\256\211\350\243\205\351\203\250\347\275\262-OceanBase_\345\234\250\347\272\277_vs_\347\246\273\347\272\277\345\256\211\350\243\205\346\226\271\345\274\217\350\257\246\350\247\243.md" "b/\345\256\211\350\243\205\351\203\250\347\275\262-OceanBase_\345\234\250\347\272\277_vs_\347\246\273\347\272\277\345\256\211\350\243\205\346\226\271\345\274\217\350\257\246\350\247\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..70507c31ae6c790afb5fa75856983bf1721938a8 --- /dev/null +++ "b/\345\256\211\350\243\205\351\203\250\347\275\262-OceanBase_\345\234\250\347\272\277_vs_\347\246\273\347\272\277\345\256\211\350\243\205\346\226\271\345\274\217\350\257\246\350\247\243.md" @@ -0,0 +1,193 @@ +各位好,今天给大家带来一篇有关 OceanBase 在线与离线安装方式的解读。首先我们来讨论一下一日常工作中的一些场景,大家经常会遇到以下几种情况: + +- 公司网络条件很不错,在线下载速度很快,安装软件直接从互联网下载安装即可,不需要考虑其他因素; +- 公司人数众多,在线下载速度很慢,下载一个rpm包都要等很久,有时候还会出现网络断开的情况; +- 公司允许软件安装时临时接通外部网络,安装完成后即刻断开; +- 公司出于安全考虑,服务器全部禁止了互联网访问,只能通过本地安装的方式进行程序部署。 + +相信我一说,大家就知道要描述什么问题。没错,就是**安全**,普通公司尤如此,那在一些相关国计民生,对安全要求高的机构,比如研究院、公共安全部门、铁路等等,由于网络安全做的不到位发生的数据泄漏事故,也屡见不鲜,就比如最近发生的某市人口库10亿数据脱库的严重事故。 + +针对以上种种情况,尤其考虑到安全的因素,很多数据库的安装都提供离线部署的方式,离线部署、离线运行,可能是目前为止最为保险的方式了。**今天我们就来详细聊聊 OceanBase 对在线和离线安装的支持方式。希望本文能带给大家一个完整的 OB 安装视角。** + +> 本文论述分析内容采用 OB 经典的部署工具 obd 展开,希望大家在看以下内容之前,达成一个共识 +> - 本文以部署 3 节点 OceanBase 集群为例,架构图如下图 +> ![](./media/online-vs-offline-install/arch.png) +> - 本文采用黑屏部署工具 obd(obdeploy) 为例进行演示 +> - 本文不包含操作系统配置部分,例如:sysctl.conf/limits.conf/SELINUX/ntp 等的配置,如有需要请参考官方文档对应部分 +> - 本文配置命令可能只对 Anolis、CentOS 和 RedHat 操作系统有效,仅供参考 + + +# 1. 在线安装详解 + +所谓在线安装,就是安装过程从互联网自动下载软件并安装,这也是 OceanBase 提供的最简单的安装方式。整个过程也比较简单,obd 工具帮我们屏蔽了很多内容,方便大家在开发测试环境中先快速上手使用。安装过程大概分为以下几个部分。 + +## 1.1 在线安装 OBD + +执行以下命令,使用 OceanBase 的官方软件源安装 OBD: + +```shell +sudo yum install -y yum-utils +sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo +sudo yum install -y ob-deploy # 该操作只需要在 OB 中控机上执行,因为 OBD 是一个黑屏部署、管理和运维工具,统一从一台机器上发起操作,所以不需要每台机器均安装 +``` + +## 1.2 在线安装 OBLibs + +oblibs 是 OceanBase 运行时依赖部分第三方动态库,需要在所有机器上安装一下。 + +```shell +sudo yum install -y yum-utils # 如果上一步已经执行该操作,请忽略 +sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo # 如果上一步已经执行该操作,请忽略 +sudo yum install -y oceanbase-ce-libs # 所有机器均需安装 +``` + +## 1.3 在线安装 OBClient + +obclient 是 OceanBase 黑屏连接客户端,类似于 Oracle 的 sqlplus 或 mysql 的黑屏客户端工具,可以只在中控机器上安装,也可以选择在所有服务器安装,方便后期排错等操作。 + +```shell +sudo yum install -y libobclient +sudo yum install -y obclient +``` + +## 1.4 在线部署 OceanBase 集群 + +上面三步均完成以后,当前我们的服务器环境中,已经具备基本环境了,下面就开始部署 OB 集群,我采用以下配置部署 2 obproxy + 3 observer 集群(机器有复用)。 + +```yaml +user: + username: admin + password: admin +oceanbase-ce: + servers: + - name: observer1 + ip: 192.168.3.171 + - name: observer2 + ip: 192.168.3.172 + - name: observer3 + ip: 192.168.3.173 + global: + home_path: /home/admin/observer + data_dir: /data/obdata + redo_dir: /data/obdata/redo + devname: eno1 + mysql_port: 2881 + rpc_port: 2882 + zone: zone1 + datafile_size: 3000G + appname: obcluster + root_password: observer + proxyro_password: obproxy + observer1: + zone: zone1 + observer2: + zone: zone2 + observer3: + zone: zone3 +obproxy-ce: + depends: + - oceanbase-ce + servers: + - 192.168.3.171 + - 192.168.3.172 + global: + home_path: /home/admin/obproxy + skip_proxy_sys_private_check: true + enable_strict_kernel_release: false + listen_port: 2883 + prometheus_listen_port: 2884 + cluster_name: obcluster + obproxy_sys_password: obproxy-sys + observer_sys_password: obproxy +``` + +执行下面的命令进行初始化,此时仔细观察打印的日志,描述了整个在线安装的过程: + +```shell +obd cluster autodeploy obcluster -c obcluster.yml +``` + +**在线安装的过程大概有如下几步:** + +1. 检测当前环境中的配置库信息,如有更新会拉取最新的配置; +2. 从 OB 仓库中拉取最新版本的 observer 和 obproxy; +3. 将 observer 和 obproxy 安装包分发到对应集群机器上进行安装; +4. 服务器配置参数校验 及 集群初始化。 + +## 1.5 结语 + +真正在在线安装过程中,不会像文中提到的这么顺滑,您可能遇到各种各样的问题,比如资源配置不足、NTP时间同步有问题、缺少对应的库文件等等,一款好的数据库,需要大家去适应,当然 OB 也在向着易用性上不断迈进。所以如果您在安装过程中遇到了任何问题,请不要焦虑,多尝试分析,多到论坛或技术群中咨询,总能把问题解决掉。 + +# 2. 离线安装详解 + +离线安装的整体过程与在线安装一致,唯一不同的就是我们不能直接从 OceanBase 官方仓库上自动拉取文件了。**只能使用 rpm 本地部署的方式执行安装过程**。**好在,obd 提供了配置本地镜像仓库的方式,安装也很方便。** + +> OceanBase 社区版离线安装包可以从该地址获取:https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ 尽量选用最新版本。 + +## 2.1 离线安装 OBD + +下载获取到的最新版本 obd,上传到服务器,执行以下命令安装(只在中控机安装即可): + +```shell +sudo yum install -y ob-deploy-1.4.0-13.el7.x86_64.rpm +``` + +## 2.2 离线安装 OBLibs + +下载获取到的最新版本 oblibs,上传到服务器,执行以下命令安装(在所有机器上安装): + +```shell +sudo yum install -y oceanbase-ce-libs-3.1.4-10000092022071511.el7.x86_64.rpm +``` + +## 2.3 离线安装 OBClient + +下载获取到的最新版本 obclient,上传到服务器,执行以下命令安装(只在中控机安装即可,也可以在所有机器上安装,方便本地调试): + +```shell +sudo yum install libobclient-x.x.x.el7.x86_64.rpm +sudo yum install obclient-x.x.x-2.el7.x86_64.rpm +``` + +## 2.4 离线部署 OceanBase 集群 + +**离线安装部署,必须禁用远程仓库**: + +```shell +obd mirror disable remote +``` + +**然后**,跳转到刚才下载了 rpm 包的目录下,目录下必须包含的文件有 observer rpm 包 和 obproxy rpm 包,然后**将安装包添加到本地镜像**: + +```shell +obd mirror clone *.rpm +``` + +可以通过 `obd mirror list` 命令查看本地镜像仓库状态: + +![](./media/online-vs-offline-install/obd-local-mirror.png) + +**最后**,采用同样的配置文件,尝试**初始化集群**即可: + +```shell +obd cluster autodeploy obcluster -c obcluster.yml +``` + +![](./media/online-vs-offline-install/obd-local-deploy.png) + +在集群初始化过程中,可以仔细观察一下日志,其实整体过程上,与在线安装并无二异。 + +## 2.5 结语 + +离线安装整体来说也特别简单,仅仅多了提前下载和上传软件包的步骤。如果大家在日常部署过程中并不能访问外网,可以采用这种方式。 + + +# 3. 二者如何选择 + +相信经过上面的过程陈述后,大家心里已经有了答案了,最后我们来一起总结一下两种方式如何选择: + +1. 如果网络条件良好,且公司允许的情况下,还是推荐在线安装方式,更简洁,并且每次能够自动检测最新版本进行部署; +2. 如果出于安全或其他因素考虑,服务器并不能上网,那推荐采用离线安装方式,也很简单。 + +**最后的最后,OceanBase 为大家的各种需求都提供了详细的解决方案,如果您有任何疑问,不要慌张,请花点时间到社区里问一问(https://ask.oceanbase.com),一定会有您满意的答案。** +