Move the docs folder
This commit is contained in:
committed by
LINxiansheng
parent
7c6dcc6712
commit
d42f317422
@ -0,0 +1,510 @@
|
||||
生产环境部署 OceanBase 数据库
|
||||
=========================================
|
||||
|
||||
|
||||
|
||||
名词解释
|
||||
-------------------------
|
||||
|
||||
* 中控机器
|
||||
|
||||
存储 OceanBase 数据库安装包和集群配置信息的机器。
|
||||
|
||||
|
||||
* 目标机器
|
||||
|
||||
安装 OceanBase 数据库的机器。
|
||||
|
||||
|
||||
* OBD
|
||||
|
||||
OceanBase Deployer,OceanBase 开源软件的安装部署工具,简称为 OBD。
|
||||
|
||||
|
||||
* ODP
|
||||
|
||||
OceanBase Database Proxy,OceanBase 高性能反向代理服务器,简称为 ODP。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
前提条件
|
||||
-------------------------
|
||||
|
||||
在连接 OceanBase 数据库之前,请您确认以下信息:
|
||||
|
||||
* 您的机器满足软硬件要求。详细信息,参考 [资源准备](../4.installation-and-deployment/3.resource-preparation.md)。
|
||||
|
||||
|
||||
|
||||
* 您拥有 root 账户权限。如无特殊说明,均使用 root 操作。
|
||||
|
||||
|
||||
|
||||
* 生产环境下,确保您已完成以下操作:
|
||||
|
||||
* 您已经查看资源。更多信息,参考 [查看资源](../4.installation-and-deployment/4.optional-check-the-operating-system.md)。
|
||||
|
||||
|
||||
|
||||
* 您已经设置无密码 SSH 登录。更多信息,参考 [设置无密码 SSH 登录](../4.installation-and-deployment/5.optional-set-password-free-ssh-logon.md)。
|
||||
|
||||
|
||||
|
||||
* 您已经配置时钟源。更多信息,参考 [配置时钟源](../4.installation-and-deployment/6.optional-configuring-clock-sources.md)。
|
||||
|
||||
|
||||
|
||||
* 您已经规划磁盘。更多信息,参考 [规划磁盘](../4.installation-and-deployment/7.disk-planning.md)。
|
||||
|
||||
|
||||
|
||||
* 您已经配置 limits.conf。更多信息,参考 [配置 limits.conf](../4.installation-and-deployment/8.optional-configure-limits-conf.md)。
|
||||
|
||||
|
||||
|
||||
* 您已经配置 sysctl.conf。更多信息,参考 [配置 sysctl.conf](../4.installation-and-deployment/9.optional-configure-sysctl-conf.md)。
|
||||
|
||||
|
||||
|
||||
* 您已经关闭防火墙和 SELinux。更多信息,参考 [关闭防火墙和 SELinux](../4.installation-and-deployment/10.optional-disable-the-firewall-and-selinux.md)。
|
||||
|
||||
|
||||
|
||||
* 你已经创建用户。更多信息,参考 [创建用户](../4.installation-and-deployment/11.optional-create-a-user.md)。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
部署模式
|
||||
-------------------------
|
||||
|
||||
本文采用三副本部署模式,推荐使用四台机器。其中:
|
||||
|
||||
* 使用一台机器部署 ODP。
|
||||
|
||||
|
||||
|
||||
* 使用三台机器部署 OceanBase 集群。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
* 在生产环境下,推荐将 ODP 和应用部署在一台机器上,以节省应用访问 ODP 的时间。 您可以在每个应用的服务器上部署一个 ODP 服务。在本例中,为了更方便使用,将 ODP 单独部署。
|
||||
|
||||
|
||||
|
||||
* 部署 ODP 的机器使用的配置可以和部署 OceanBase 数据库的机器配置不一致。部署 ODP 只需 4c/16g \~ 8c/64g 内存即可。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
下载安装包
|
||||
--------------------------
|
||||
|
||||
如您的机器可以访问公网,并能够添加三方 YUM 软件源,您可以执行以下命令,使用 OceanBase 的官方软件源安装 OBD:
|
||||
|
||||
```unknow
|
||||
yum install -y yum-utils
|
||||
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
|
||||
yum install -y ob-deploy
|
||||
```
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
只有 Anolis、CentOS 和 RedHat 操作系统支持此操作。
|
||||
|
||||
在您执行了 `obd cluster deploy` 命令之后,OBD 将检查您的目标机器是否有 OceanBase 数据库安装包。如果没有安装包,OBD 将自动从 yum 源获取。
|
||||
|
||||
如果您的机器不能访问公网,您可以从 OceanBase 官网下载安装包。详细信息,参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。
|
||||
|
||||
安装 OBD
|
||||
---------------------------
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您只需要在中控机器上安装 OBD。
|
||||
|
||||
### 在线安装 OBD
|
||||
|
||||
如您的机器可以访问公网,并能够添加三方 YUM 软件源,您可以执行以下命令,使用 OceanBase 的官方软件源安装 OBD:
|
||||
|
||||
```unknow
|
||||
yum install -y yum-utils
|
||||
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
|
||||
yum install -y ob-deploy
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 离线安装 OBD
|
||||
|
||||
如果您的机器不能访问公网,您可以从 OceanBase 官网下载 OBD。详细信息,参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后,将 OBD 复制到您的中控机器上。
|
||||
|
||||
在 CentOS 或 RedHat 系统上,执行以下命令安装 OBD:
|
||||
|
||||
```unknow
|
||||
yum install ob-deploy-1.1.0-1.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Ubuntu 或 Debian 系统上,执行以下命令安装 OBD:
|
||||
|
||||
```unknow
|
||||
alien --scripts -i ob-deploy-1.1.0-1.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
安装 OBLibs
|
||||
------------------------------
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您需要在每台目标机器上安装 OBLibs。
|
||||
|
||||
### 在线安装 OBLibs
|
||||
|
||||
执行以下命令,在线安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
yum install -y oceanbase-ce-libs
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 离线安装 OBLibs
|
||||
|
||||
如果您的机器不能访问公网,您可以从 OceanBase 官网下载 OBLibs。详细信息,参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后,将 OBLibs 复制到您的每台机器上。
|
||||
|
||||
在 Anolis 7、CentOS 7 或 RedHat 7 系统上,执行以下命令安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
yum install oceanbase-ce-libs-3.1.0-3.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Ubuntu 或 Debian 9 系统上,执行以下命令安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
alien -i oceanbase-ce-libs-3.1.0-3.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Anolis 8、CentOS 8 或 RedHat 8 系统上,执行以下命令安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
yum install oceanbase-ce-libs-3.1.0-3.el8.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Debian 10 系统上,执行以下命令安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
alien -i oceanbase-ce-libs-3.1.0-3.el8.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
安装 OBClient
|
||||
--------------------------------
|
||||
|
||||
您只需要在中控机器上安装 OBClient。
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
您必须首先下载 OBClient 的依赖包 LibOBClient。详细信息,参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。
|
||||
|
||||
### 在线安装 OBClient
|
||||
|
||||
执行以下命令,在线安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
yum install -y libobclient
|
||||
yum install -y obclient
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 离线安装 OBClient
|
||||
|
||||
如果您的机器不能访问公网,您可以从 OceanBase 官网下载 OBClient。详细信息,参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后,将 OBClient 复制到您的中控机器上。
|
||||
|
||||
在 CentOS 或 RedHat 系统上,执行以下命令安装 OBClient:
|
||||
|
||||
```unknow
|
||||
yum install libobclient-2.0.0-2.el7.x86_64.rpm
|
||||
yum install obclient-2.0.0-2.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Ubuntu 或 Debian 系统上,执行以下命令安装 OBLibs:
|
||||
|
||||
```unknow
|
||||
alien --scripts -i libobclient-2.0.0-2.el7.x86_64.rpm
|
||||
alien --scripts -i obclient-2.0.0-2.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
安装 OceanBase 数据库和 ODP
|
||||
------------------------------------------
|
||||
|
||||
安装 OceanBase 数据库和 ODP之前,为了数据安全,建议您切换到非 root 用户。如果离线安装 OceanBase 数据库和 ODP,从 OceanBase 官网下载 OceanBase 数据库、OBLibs 和 ODP。详细信息,参考 [安装包下载说明](../4.installation-and-deployment/2.instructions-for-downloading-the-installation-package.md)。下载完成后,将 OceanBase 数据库和 ODP 复制到您的中控机器上。如果在线安装,跳过步骤 1\~3。
|
||||
|
||||
跳转至上述安装包的下载目录,按照以下步骤安装 OceanBase 数据库和 ODP:
|
||||
|
||||
* 删除远程仓库
|
||||
|
||||
```unknow
|
||||
rm -fr ~/.obd/mirror/remote/*.repo
|
||||
```
|
||||
|
||||
|
||||
|
||||
离线安装时,您需要删除远程仓库。
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
如果您是在线安装,并且您的操作系统是 Anolis、CentOS 或 RedHat,跳过此步骤。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
|
||||
* 将安装包添加至本地镜像
|
||||
|
||||
```unknow
|
||||
obd mirror clone *.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 查看镜像列表
|
||||
|
||||
```unknow
|
||||
obd mirror list local
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 下载配置文件
|
||||
|
||||
从 GitHub 上下载对应的配置文件。根据您的实际情况选择相应的配置文件:
|
||||
* 如果您采用单机安装,即中控机器和目标机器不是同一台机器,且目标机器只有一台,请下载 [单机安装配置文件](https://github.com/oceanbase/obdeploy/blob/master/example/autodeploy/single-example.yaml)。
|
||||
|
||||
|
||||
|
||||
* 如果您采用分布式安装,即中控机器和目标机器不是同一台机器,且目标机器有多台,请下载 [分布式安装配置文件](https://github.com/oceanbase/obdeploy/blob/master/example/autodeploy/distributed-with-obproxy-example.yaml)。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
示例采用自动部署配置文件。自动部署将根据简易配置和目标机器资源生成最大规格配置并启动 OceanBase 数据库。非自动部署 OceanBase 数据库,参考 [OBD 文档](https://github.com/oceanbase/obdeploy/blob/master/README-CN.md#%E4%BD%BF%E7%94%A8-obd-%E5%90%AF%E5%8A%A8-oceanbase-%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4)。OceanBase 数据库详细参数介绍,参考 [OceanBase 数据库参数](https://github.com/oceanbase/obdeploy/blob/master/plugins/oceanbase/3.1.0/parameter.yaml)。
|
||||
|
||||
|
||||
* 修改配置文件
|
||||
|
||||
以部署分布式 OceanBase 数据库和 ODP 为例,按照以下步骤修改配置文件:
|
||||
* 修改用户名和密码
|
||||
|
||||
```unknow
|
||||
## Only need to configure when remote login is required
|
||||
# user:
|
||||
# username: your username
|
||||
# password: your password if need
|
||||
# key_file: your ssh-key file path if need
|
||||
# port: your ssh port, default 22
|
||||
# timeout: ssh connection timeout (second), default 30
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 修改每台机器的 IP、`home_path`、`data_dir` 和 `redo_dir`
|
||||
|
||||
```unknow
|
||||
oceanbase-ce:
|
||||
servers:
|
||||
- name: z1
|
||||
# Please don't use hostname, only IP can be supported
|
||||
ip: 172.30.62.200
|
||||
- name: z2
|
||||
ip: 172.30.62.201
|
||||
- name: z3
|
||||
ip: 172.30.62.202
|
||||
global:
|
||||
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
|
||||
home_path: /home/admin/oceanbase/ob
|
||||
# The directory for data storage. The default value is $home_path/store.
|
||||
data_dir: /data/ob
|
||||
# The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
|
||||
redo_dir: /redo/ob
|
||||
```
|
||||
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您必须根据您的真实配置修改这些参数。
|
||||
|
||||
|
||||
* 配置 ODP 并修改 IP 和 home_path
|
||||
|
||||
```unknow
|
||||
obproxy:
|
||||
servers:
|
||||
- 172.30.62.203
|
||||
global:
|
||||
# The working directory for obproxy. Obproxy is started under this directory. This is a required field.
|
||||
home_path: /home/admin/oceanbase
|
||||
```
|
||||
|
||||
|
||||
|
||||
您可以使用在线 YAML 文件校验器对您的配置文件进行检测。详细信息,参考 [YAML 在线校验器](https://www.bejson.com/validators/yaml_editor/)。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
部署 OceanBae 集群
|
||||
-----------------------------------
|
||||
|
||||
按照以下步骤部署 OceanBase 集群:
|
||||
|
||||
* 部署 OceanBae 集群
|
||||
|
||||
```unknow
|
||||
obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 查看 OceanBae 集群
|
||||
|
||||
```unknow
|
||||
obd cluster list
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(可选)修改集群配置
|
||||
-------------------------------
|
||||
|
||||
OceanBase 数据库有数百个配置项,有些配置是耦合的,在您熟悉 OceanBase 数据库之前,不建议您修改示例配件文件中的配置。此处示例用来说明如何修改配置,并使之生效。
|
||||
|
||||
```unknow
|
||||
# 使用 edit-config 命令进入编辑模式,修改集群配置
|
||||
obd cluster edit-config obtest
|
||||
# 修改 sys_bkgd_migration_retry_num 为 5
|
||||
# 注意 sys_bkgd_migration_retry_num 值最小为 3
|
||||
# 保存并退出后,OBD 会告知您如何使得此次改动生效
|
||||
# 此配置项仅需要 reload 即可生效
|
||||
obd cluster reload obtest
|
||||
```
|
||||
|
||||
|
||||
|
||||
(可选)安装 MySQL 开发包
|
||||
-------------------------------------
|
||||
|
||||
如果需要运行 Sysbench 或者 TPCH 等程序, 您需要安装 MySQL 开发包。
|
||||
|
||||
在 CentOS、RedHat 或 Anolis 系统上,执行以下命令安装 MySQL 开发包:
|
||||
|
||||
```unknow
|
||||
yum install mariadb
|
||||
yum install mariadb-libs
|
||||
yum install mariadb-devel
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Ubuntu 系统上,执行以下命令安装 MySQL 开发包:
|
||||
|
||||
```unknow
|
||||
apt-get install mariadb-server
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 Debian 系统上,执行以下命令安装 MySQL 开发包:
|
||||
|
||||
```unknow
|
||||
apt-get install mysql-server mysql-client libmariadbd18 libmariadbd-dev
|
||||
```
|
||||
|
||||
|
||||
|
||||
连接 OceanBase 数据库
|
||||
-------------------------------------
|
||||
|
||||
运行以下命令,使用 OBClient 客户端连接 OceanBase 数据库:
|
||||
|
||||
```unknow
|
||||
obclient -h<your_ip> -P<obproxy_port> -uroot
|
||||
```
|
||||
|
||||
|
||||
|
||||
其中,`your_ip` 为您 OceanBase 实例所在的机器 IP 地址。ODP 默认使用端口 `2883` 连接 OBClient。如果您对端口做了更改,此处使用您实际的端口号。
|
||||
|
||||
创建普通租户
|
||||
---------------------------
|
||||
|
||||
要使用 OceanBase 数据库,您需要创建普通租户。您的业务数据必须在普通租户下运行。
|
||||
|
||||
您可以使用以下方法创建普通租户:
|
||||
|
||||
* 使用 OBD 创建普通租户。
|
||||
|
||||
```unknow
|
||||
obd cluster tenant create ${cluster_name} -n ${tenant_name}
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 使用 SQL 语句创建普通租户。更多信息,参考 [创建用户租户](../6.administrator-guide/3.basic-database-management/5.tenants/2.create-a-user-tenant.md)。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
(可选)关闭防火墙和 SELinux
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
如果您是个人用户,您可以跳过此步骤。如果您是企业用户,建议您关闭防火墙和 SELinux。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您必须在每台机器上执行此操作。
|
||||
|
||||
关闭防火墙
|
||||
--------------------------
|
||||
|
||||
依次执行以下命令,关闭防火墙:
|
||||
|
||||
```unknow
|
||||
systemctl disable firewalld
|
||||
systemctl stop firewalld
|
||||
systemctl status firewalld
|
||||
```
|
||||
|
||||
|
||||
|
||||
关闭 SELinux
|
||||
-------------------------------
|
||||
|
||||
执行以下命令,打开 `/etc/selinux/linux` 配置文件:
|
||||
|
||||
```unknow
|
||||
vi /etc/selinux/linux
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 `/etc/selinux/linux` 配置文件中添加以下内容:
|
||||
|
||||
```unknow
|
||||
SELINUX=disabled
|
||||
```
|
||||
|
||||
|
||||
|
||||
执行以下命令,使更改生效:
|
||||
|
||||
```unknow
|
||||
setenforce 0
|
||||
```
|
||||
|
||||
|
||||
|
||||
执行以下命令,查看更改是否生效:
|
||||
|
||||
```unknow
|
||||
cat /etc/selinux/config
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,76 @@
|
||||
(可选)创建用户
|
||||
=============================
|
||||
|
||||
|
||||
|
||||
如果您是个人用户,您可以直接使用 root 账号并跳过此步骤。如果您是企业用户,建议您在机器上创建普通用户,以确保安全。您可以根据实际需要,创建您的常用账户。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您必须在每台机器上执行此操作。
|
||||
|
||||
按照以下步骤创建用户。此处以创建 admin 用户为例进行说明。
|
||||
|
||||
* 执行以下命令,创建账户 admin。
|
||||
|
||||
```bash
|
||||
useradd -U admin -d /home/admin -s /bin/bash
|
||||
mkdir -p /home/admin
|
||||
sudo chown -R admin:admin /home/admin
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 执行以下命令,为账户 admin 设置密码。
|
||||
|
||||
```unknow
|
||||
passwd admin
|
||||
```
|
||||
|
||||
|
||||
|
||||
* (可选)为账户 admin 设置 sudo 权限。
|
||||
|
||||
执行以下命令,打开 `/etc/sudoers` 文件。在 `/etc/sudoers` 文件添加以下内容:
|
||||
|
||||
```bash
|
||||
## Same thing without a password
|
||||
# %wheel ALL=(ALL) NOPASSWD: ALL
|
||||
admin ALL=(ALL) NOPASSWD: ALL
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 执行以下命令,查看目录权限。
|
||||
|
||||
```bash
|
||||
ls --al
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回以下结果:
|
||||
|
||||
```unknow
|
||||
drwxr-xr-x 2 admin admin 4096 2 月 9 18:43
|
||||
drwxr-xr-x 2 admin admin 4096 2 月 9 18:43 log1
|
||||
```
|
||||
|
||||
|
||||
|
||||
若 admin 用户无权限,则以 root 用户执行以下命令:
|
||||
|
||||
```unknow
|
||||
chown -R admin:admin /data
|
||||
chown -R admin:admin /redo
|
||||
chown -R admin:admin /home/admin
|
||||
```
|
||||
|
||||
|
||||
|
||||
此处填写您真实的挂载目录。此处 `/data`、`/redo`、`/home/admin` 为示例挂载目录。
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,85 @@
|
||||
使用 RPM 包安装 OceanBase 数据库
|
||||
=============================================
|
||||
|
||||
本文介绍如何使用 RPM 包安装 OceanBase 数据库。
|
||||
|
||||
前提条件
|
||||
-------------------------
|
||||
|
||||
在安装 OceanBase 数据库之前,您需要确认已下信息:
|
||||
|
||||
* 您的机器满足软硬件要求。详细信息,参考 [资源准备](../4.installation-and-deployment/3.resource-preparation.md)。
|
||||
|
||||
|
||||
|
||||
* 您拥有 root 账户权限。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
安装 OBD
|
||||
---------------------------
|
||||
|
||||
1. 运行以下命令,下载 OBD 安装包。
|
||||
|
||||
```bash
|
||||
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ob-deploy-1.0.0-1.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
示例中的安装包可能不是最新版本,建议您下载最新的安装包。详细信息,参考 [OBD 发行版本](https://github.com/oceanbase/obdeploy/releases)。
|
||||
|
||||
|
||||
2. 运行以下命令,安装 OBD。
|
||||
|
||||
```bash
|
||||
yum install -y ob-deploy-1.0.0-1.el7.x86_64.rpm
|
||||
source /etc/profile.d/obd.sh
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
获取 OceanBase 数据库安装包
|
||||
----------------------------------------
|
||||
|
||||
运行以下命令,下载 OceanBase 数据库安装包:
|
||||
|
||||
```bash
|
||||
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-libs-3.1.0-1.el7.x86_64.rpm
|
||||
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-3.1.0-1.el7.x86_64.rpm
|
||||
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obproxy-3.1.0-1.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
示例中的安装包可能不是最新版本,建议您下载最新的安装包。详细信息,参考 [OceanBase 数据库发行版本](https://github.com/oceanbase/oceanbase/releases)。
|
||||
|
||||
设置本地镜像
|
||||
---------------------------
|
||||
|
||||
运行以下命令,将 OceanBase 数据库安装包设置为本地镜像:
|
||||
|
||||
```bash
|
||||
obd mirror clone oceanbase-ce-libs-3.1.0-1.el7.x86_64.rpm
|
||||
obd mirror clone oceanbase-ce-3.1.0-1.el7.x86_64.rpm
|
||||
obd mirror clone obproxy-3.1.0-1.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
后续操作
|
||||
-------------------------
|
||||
|
||||
OceanBase 数据库安装完成后,您需要部署 OceanBase 数据库。详情参考 [使用 OBD 部署 OceanBase 数据库](../2.quickstart/4.deploy-the-oceanbase-database-by-using-obd.md)。
|
||||
@ -0,0 +1,236 @@
|
||||
使用源码构建 OceanBase 数据库
|
||||
=========================================
|
||||
|
||||
通过源代码,您可以自行构建 OceanBase 数据库,并测试其最新特性。本文介绍如何通过源代码构建OceanBase 数据库。
|
||||
|
||||
前提条件
|
||||
-------------------------
|
||||
|
||||
在构建 OceanBase 数据库之前,确保您的构建机器满足以下要求:
|
||||
|
||||
* 操作系统:CentOS 7/8 (x86 架构)
|
||||
|
||||
|
||||
|
||||
* 机器数量:1 台
|
||||
|
||||
|
||||
|
||||
* 最低硬件规格:
|
||||
|
||||
|
||||
|
||||
* 推荐硬件规格:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
获取源代码
|
||||
--------------------------
|
||||
|
||||
运行以下命令,克隆 OceanBase 数据库源代码到您的构建机器:
|
||||
|
||||
```shell
|
||||
git clone git@${GIT_MIRROR_ADDRESS}/oceanbase/oceanbase
|
||||
```
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
克隆代码需要先安装配置 Git。详细信息,参考 [Git 文档](https://git-scm.com/doc)。
|
||||
|
||||
获取构建依赖
|
||||
---------------------------
|
||||
|
||||
您可以通过以下方式获取构建依赖:
|
||||
|
||||
* **方案一:** **使用 yum 源** **获取依赖包(推荐)**
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
构建过程中,您所依赖的大多数工具和库都可以通过公共yum源及 OceanBase 的官方 yum 源获取。如您的操作系统在我们的支持范围内,您可以通过我们预制的脚本,直接下载对应的软件包以节约您的构建时间
|
||||
|
||||
第一步、安装必要的工具
|
||||
|
||||
您需要提前准备好以下软件:
|
||||
|
||||
```bash
|
||||
yum install wget rpm* cpio make glibc-devel glibc-headers
|
||||
```
|
||||
|
||||
|
||||
|
||||
第二步、执行以下命令确认您的编译机可以访问OceanBase官方yum源
|
||||
|
||||
```shell
|
||||
curl http://mirrors.aliyun.com/oceanbase/OceanBase.repo
|
||||
```
|
||||
|
||||
|
||||
|
||||
第三步、执行初始化脚本,下载构建依赖
|
||||
|
||||
```shell
|
||||
# 进入代码根目录
|
||||
cd oceanbase
|
||||
|
||||
# 执行build.sh脚本并传入init参数
|
||||
sh build.sh init
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* **方案二:自行编译依赖**
|
||||
|
||||
您也可以在 `deps/3rd` 目录下自行编译依赖。构建软件要求见下表:
|
||||
|
||||
|
||||
| **所** **需软** **件** | **推荐版本(最低版本)** | **软件用途** | **提供依赖** | **必选** |
|
||||
|---------------------------|------------------|----------|----------|--------|
|
||||
| cmake | 3.20.0 | 构建工具 | 是 | 是 |
|
||||
| make | 3.8.2 | 构建工具 | 否 | 是 |
|
||||
| gcc | 5.2.0 | 构建工具/依赖库 | 是 | 是 |
|
||||
| llvm/clang/lld | 11.0.1 (7.1.0) | 构建工具 | 是 | 是 |
|
||||
| binutils | 2.30 | 构建工具 | 是 | 否 |
|
||||
| flex | 2.5.35 | 代码生成 | 是 | 仅开发 |
|
||||
| python2 | 2.7(2.6) | 代码生成 | 否 | 仅开发 |
|
||||
| bison | 2.4.1 | 代码生成 | 是 | 仅开发 |
|
||||
| ccache | 3.7.12 | 构建工具 | 是 | 否 |
|
||||
| isa-l | 2.22.0 | 依赖库 | 是 | 是 |
|
||||
| libaio | 0.3.112(0.3.109) | 依赖库 | 是 | 是 |
|
||||
| libcurl | 7.29.0 | 依赖库 | 是 | 是 |
|
||||
| libunwind | 1.5.0 | 依赖库 | 是 | 是 |
|
||||
| mariadb-connector-c | 3.1.12 | 依赖库 | 是 | 是 |
|
||||
| openssl-static | 1.0.1e | 依赖库 | 是 | 是 |
|
||||
| glibc-devel/glibc-headers | 2.17 | 依赖库 | 否 | 是 |
|
||||
| oss-c-sdk | 3.9.2 | 依赖库 | 否 | 否 |
|
||||
| rpm\* | 4.14.1(4.11) | 打包工具 | 否 | 仅打包 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
构建/打包 OceanBase 数据库
|
||||
----------------------------------------
|
||||
|
||||
OceanBase 数据库使用 CMake 作为构建工具,您可以直接使用 CMake 命令自行创建目录进行构建,也可以使用 `build.sh` 脚本使用预制的构建选项进行构建:
|
||||
|
||||
* DEBUG 构建
|
||||
|
||||
```shell
|
||||
# 在源码目录下执行debug版的预制构建命令
|
||||
sh build.sh debug
|
||||
|
||||
# 进入生成的 debug 构建目录
|
||||
cd build_debug
|
||||
|
||||
# 进行构建
|
||||
make -j{N} observer
|
||||
|
||||
# 查看构建产物
|
||||
stat src/observer/observer
|
||||
```
|
||||
|
||||
|
||||
|
||||
* RELEASE 构建
|
||||
|
||||
```shell
|
||||
# 在源码目录下执行 release 版的预制构建命令
|
||||
sh build.sh release
|
||||
|
||||
# 进入生成的 release 构建目录
|
||||
cd build_release
|
||||
|
||||
# 进行构建
|
||||
make -j{N} observer
|
||||
|
||||
# 查看构建产物
|
||||
stat src/observer/observer
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 创建 RPM 包
|
||||
|
||||
```shell
|
||||
# 在源码目录下执行 rpm包 的预制构建命令
|
||||
sh build.sh rpm
|
||||
|
||||
# 进入生成的 rpm 打包目录
|
||||
cd build_rpm
|
||||
|
||||
# 构建 rpm 包依赖的文件
|
||||
make -j{N} rpm
|
||||
|
||||
# 查看构建产物
|
||||
stat *rpm
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
为加快构建速度,您可以使用 `-j` 参数并行构建。并行数量 `N` 建议为 min(CPU(Core)\* 2,内存(GB) / 2)。
|
||||
|
||||
构建选项说明
|
||||
---------------------------
|
||||
|
||||
构建参数说明见下表:
|
||||
|
||||
|
||||
| **构建选项** | **默认值** | **软件用途** |
|
||||
|----------------------------|------------|------------------------------------------|
|
||||
| OB_USE_LLVM_LIBTOOLS | ON | 使用 llvm-ar/ld.lld 等作为库工具,关闭则使用 binutils。 |
|
||||
| OB_USE_CLANG | ON | 使用 clang 作为编译器,关闭则使用gcc。 |
|
||||
| OB_COMPRESS_DEBUG_SECTIONS | OFF | 压缩二进制中的 DEBUG SECTIONS。 |
|
||||
| OB_STATIC_LINK_LGPL_DEPS | ON(打包时OFF) | 静态链接LGPL协议的依赖 |
|
||||
| OB_ENABLE_PCH | ON | 启用预编译头 |
|
||||
| OB_ENALBE_UNITY | ON | 启用联合构建 |
|
||||
| OB_USE_CCACHE | OFF | 启用编译缓存 |
|
||||
| ENABLE_DEBUG_LOG | OFF | 开启调试日志。 |
|
||||
|
||||
|
||||
|
||||
后续操作
|
||||
-------------------------
|
||||
|
||||
您在成功构建 OceanBase 数据库之后,可以使用 OBD 部署 OceanBase 数据库。详细信息参考 [使用 OBD 部署 OceanBase 数据库](../2.quickstart/4.deploy-the-oceanbase-database-by-using-obd.md)。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
安装包下载说明
|
||||
============================
|
||||
|
||||
|
||||
|
||||
下表列出了不同操作系统版本适用的安装包:
|
||||
|
||||
|
||||
| 操作系统 | 安装包下载地址 |
|
||||
|---------------------------------------------------|------------------------------------------------------------------------------------------------|
|
||||
| Anlios 7、CentOS 7、RedHat 7、Ubuntu 20.X、Debian 9.X | [el7 下载地址](https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/) |
|
||||
| Anlios 8、CentOS 8、RedHat 8、Debian 10 | [el8 下载地址](https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/) |
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
建议您下载最新版本的安装包。
|
||||
@ -0,0 +1,32 @@
|
||||
资源准备
|
||||
=========================
|
||||
|
||||
|
||||
|
||||
OceanBase 数据库 3.1.0 版本在以下配置进行了系统性测试验证,推荐您使用以下软硬件配置:
|
||||
|
||||
|
||||
| 项目 | 描述 |
|
||||
|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 系统 | * Anolis OS 8.X 版本(内核 Linux 3.10.0 版本及以上)-- 推荐 * Red Hat Enterprise Linux Server 7.X 版本、8.X 版本(内核 Linux 3.10.0 版本及以上) -- 推荐 * CentOS Linux 7.X 版本、8.X 版本(内核 Linux 3.10.0 版本及以上) -- 推荐 * Debian 9.X 版本及以上版本 (内核 Linux 3.10.0 版本及以上) * Ubuntu 20.X 版本及以上版本(内核 Linux 3.10.0 版本及以上) |
|
||||
| CPU | * 企业用户最低要求 16 核,推荐 32 核及以上 * 个人用户最低要求 2 核, 推荐 8 核及以上 |
|
||||
| 内存 | * 企业用户最低要求 64G,推荐 256G 及以上 * 个人用户户最低要求 8G, 推荐 64G 及以上 |
|
||||
| 磁盘类型 | 推荐使用 SSD |
|
||||
| 磁盘存储空间 | 内存大小的 4 倍及以上 |
|
||||
| 文件系统 | EXT4 戓 XFS,当数据超过 16T 时,使用 XFS |
|
||||
| 网卡 | 千兆互联及以上 |
|
||||
|
||||
|
||||
|
||||
更多软硬件平台适配正在测试中。
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
如果您部署 OceanBase 集群,确保集群内的所有机器配置相同。
|
||||
|
||||
对于 CentOS 或 Red Hat 操作系统,需要运行以下命令,手动关闭透明大页:
|
||||
|
||||
```unknow
|
||||
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
|
||||
```
|
||||
@ -0,0 +1,228 @@
|
||||
(可选)查看资源
|
||||
=============================
|
||||
|
||||
|
||||
|
||||
如果您是企业用户,建议您在部署 OceanBase 集群时,所有的机器使用相同的软硬件配置。如果您部署的是单机版 OceanBase 数据库,您可以跳过此步骤。OceanBase 数据库支持 Red Hat Enterprise Linux Server 7.X、CentOS 7.X 和 Anolis OS 8.X 等操作系统。详细信息,参考 [资源准备](../4.installation-and-deployment/3.resource-preparation.md)。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
本文中的配置文件指使用 OBD 部署 OceanBase 数据库时需要配置的文件。更多配置文件信息,参考 [配置文件示例](https://github.com/oceanbase/obdeploy/tree/master/example)。
|
||||
|
||||
查看操作系统
|
||||
---------------------------
|
||||
|
||||
### Red Hat Enterprise Linux Server 7.X
|
||||
|
||||
运行以下命令,查看操作系统信息:
|
||||
|
||||
```unknow
|
||||
cat /etc/redhat-release
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回结果如下:
|
||||
|
||||
```unknow
|
||||
Red Hat Enterprise Linux Server release 7.2 (Maipo)
|
||||
```
|
||||
|
||||
|
||||
|
||||
### CentOS 7.X
|
||||
|
||||
运行以下命令,查看操作系统信息:
|
||||
|
||||
```unknow
|
||||
cat /etc/redhat-release
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回结果如下:
|
||||
|
||||
```unknow
|
||||
CentOS Linux release 7.2.1511 (Core)
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Anolis OS 8.X
|
||||
|
||||
运行以下命令,查看操作系统信息:
|
||||
|
||||
```unknow
|
||||
cat /etc/os-release
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回结果如下:
|
||||
|
||||
```unknow
|
||||
NAME="Anolis OS"
|
||||
VERSION="8.2"
|
||||
ID="anolis"
|
||||
ID_LIKE="rhel fedora centos"
|
||||
VERSION_ID="8.2"
|
||||
PLATFORM_ID="platform:an8"
|
||||
PRETTY_NAME="Anolis OS 8.2"
|
||||
ANSI_COLOR="0;31"
|
||||
HOME_URL="https://openanolis.org/"
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Unbutu
|
||||
|
||||
运行以下命令,查看操作系统信息:
|
||||
|
||||
```unknow
|
||||
cat /etc/os-release
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回结果如下:
|
||||
|
||||
```unknow
|
||||
NAME="Ubuntu"
|
||||
VERSION="20.04.2 LTS (Focal Fossa)"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
PRETTY_NAME="Ubuntu 20.04.2 LTS"
|
||||
VERSION_ID="20.04"
|
||||
HOME_URL="https://www.ubuntu.com/"
|
||||
SUPPORT_URL="https://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
|
||||
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
|
||||
VERSION_CODENAME=focal
|
||||
UBUNTU_CODENAME=focal
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Debian9
|
||||
|
||||
运行以下命令,查看操作系统信息:
|
||||
|
||||
```unknow
|
||||
cat /etc/os-release
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回结果如下:
|
||||
|
||||
```unknow
|
||||
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
|
||||
NAME="Debian GNU/Linux"
|
||||
VERSION_ID="9"
|
||||
VERSION="9 (stretch)"
|
||||
VERSION_CODENAME=stretch
|
||||
ID=debian
|
||||
HOME_URL="https://www.debian.org/"
|
||||
SUPPORT_URL="https://www.debian.org/support"
|
||||
BUG_REPORT_URL="https://bugs.debian.org/"
|
||||
```
|
||||
|
||||
|
||||
|
||||
查看内核
|
||||
-------------------------
|
||||
|
||||
运行以下命令,查看内核信息:
|
||||
|
||||
```unknow
|
||||
uname -r
|
||||
```
|
||||
|
||||
|
||||
|
||||
OceanBase 数据库要求操作系统为 3.10.0 及以上。
|
||||
|
||||
查看内存
|
||||
-------------------------
|
||||
|
||||
运行以下命令,查看内存:
|
||||
|
||||
```unknow
|
||||
free -g
|
||||
```
|
||||
|
||||
|
||||
|
||||
如果可用内存小于配置文件中的 `memory_limit` 值,请清理缓存或者修改配置 `memory_limit`,将 `memory_limit` 修改为小于可以内存的值。
|
||||
|
||||
执行以下命令,清理缓存:
|
||||
|
||||
```unknow
|
||||
echo 3 > /proc/sys/vm/drop_caches
|
||||
```
|
||||
|
||||
|
||||
|
||||
查看磁盘
|
||||
-------------------------
|
||||
|
||||
运行以下命令,查看磁盘:
|
||||
|
||||
```unknow
|
||||
df -h
|
||||
```
|
||||
|
||||
|
||||
|
||||
确保配置文件中的 `data_dir`、`redo_dir` 和 `home_path` 对应的磁盘已经完成挂载。`data_dir` 和 `redo_dir` 对应目录为空,`data_dir` 对应目录的磁盘已经使用率必须低于 4%。
|
||||
|
||||
查看网卡名称
|
||||
---------------------------
|
||||
|
||||
您需要为配置文件中的 `devname` 配置项指定网卡。示例配置文件如下:
|
||||
|
||||
```unknow
|
||||
# Please set devname as the network adaptor's name whose ip is in the setting of severs.
|
||||
# if set severs as "127.0.0.1", please set devname as "lo"
|
||||
# if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
|
||||
devname: eth0
|
||||
```
|
||||
|
||||
|
||||
|
||||
执行以下命令,查看网卡名称:
|
||||
|
||||
```unknow
|
||||
ifconfig
|
||||
```
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
要执行 `ifconfig` 命令,您必须安装 `net-tools `依赖。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,141 @@
|
||||
(可选)设置无密码 SSH 登录
|
||||
=====================================
|
||||
|
||||
本文介绍如何为集群内的多台机器设置无密码 SSH 登录。如果您在单机安装 OceanBase 数据库,则无需设置。
|
||||
|
||||
名词解释
|
||||
-------------------------
|
||||
|
||||
* 中控机器
|
||||
|
||||
存储 OceanBase 数据库安装包和集群配置信息的机器。
|
||||
|
||||
|
||||
* 目标机器
|
||||
|
||||
安装 OceanBase 数据库的机器。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
前提条件
|
||||
-------------------------
|
||||
|
||||
设置无密码 SSH 登录前,确保您拥有目标机器的 root 用户权限。
|
||||
|
||||
操作步骤
|
||||
-------------------------
|
||||
|
||||
按以下步骤设置无密码 SSH 登录:
|
||||
|
||||
1. 在中控机器上运行以下命令查看密钥是否存在:
|
||||
|
||||
```bash
|
||||
ls ~/.ssh/id_rsa.pub
|
||||
```
|
||||
|
||||
|
||||
|
||||
如果密钥已经存在,则无需生成新的密钥。
|
||||
|
||||
|
||||
2. (可选)在中控机器上运行以下命令生成 SSH 公钥和私钥:
|
||||
|
||||
```bash
|
||||
ssh-keygen -t rsa
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 在中控机器上运行以下命令将第一步生成的公钥上传至目标服务器的 `.ssh` 文件夹:
|
||||
|
||||
```bash
|
||||
scp ~/.ssh/id_rsa.pub root@<server_ip>:~/.ssh/
|
||||
```
|
||||
|
||||
|
||||
|
||||
4. 在目标机器上运行以下命令,将中控机器传入的公钥写到 authorized_keys:
|
||||
|
||||
```bash
|
||||
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
|
||||
|
||||
5. 在中控机器上运行以下命令登录目标机器:
|
||||
|
||||
```bash
|
||||
ssh root@<server_ip>
|
||||
```
|
||||
|
||||
|
||||
|
||||
6. 重复步骤 3-5,为每台机器设置无密码登录 SSH。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
上述命令均仅需在中控机器上执行。
|
||||
|
||||
(附录)脚本参考
|
||||
-----------------------------
|
||||
|
||||
推荐您使用以下脚本,在集群中批量执行命令和复制文件。
|
||||
|
||||
* 使用以下脚本,批量复制文件。
|
||||
|
||||
```bash
|
||||
#/usr/bin/bash
|
||||
|
||||
|
||||
|
||||
hosts=(
|
||||
"ob001"
|
||||
"ob002"
|
||||
"ob003"
|
||||
"obdriver"
|
||||
)
|
||||
for host in "${hosts[@]}"
|
||||
do
|
||||
|
||||
echo "begin to scp " $@ " on " $host
|
||||
scp -r $1 $host:$2
|
||||
done
|
||||
```
|
||||
|
||||
|
||||
|
||||
* 使用以下脚本,批量执行命令。
|
||||
|
||||
```bash
|
||||
/usr/bin/bash
|
||||
|
||||
|
||||
|
||||
hosts=(
|
||||
"ob001"
|
||||
"ob002"
|
||||
"ob003"
|
||||
"obdriver"
|
||||
)
|
||||
for host in "${hosts[@]}"
|
||||
do
|
||||
echo "begin to run " $@ " on " $host
|
||||
ssh $host $@
|
||||
done
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**注意**
|
||||
|
||||
|
||||
|
||||
您必须将脚本中的 hosts 列表替换成您自己的实际机器列表。
|
||||
@ -0,0 +1,188 @@
|
||||
(可选)配置时钟源
|
||||
==============================
|
||||
|
||||
本文介绍如何为集群内的多台机器配置 NTP 时钟源。如果您在单机安装 OceanBase 数据库,或者做个人测试,则无需设置。
|
||||
如果您使用集群安装 OceanBase,则需要保证集群内各机器的时间同步。否则集群无法启动,服务在运行时也会出现异常。如果您已配置 NTP 时钟同步,则无需重新配置。
|
||||
OceanBase 集群中的服务器时间必须保持一致,否则会导致 OceanBase 集群无法启动,运行时也会出现故障。物理机与时钟服务器的误差在 50ms 以下可认为时钟是同步状态,OceanBase 集群最大容忍误差不能超过 200ms。当超过 200ms 时,会出现无主情况。恢复时钟同步后。重启 OceanBase 集群, 可以恢复正常。
|
||||
|
||||
前提条件
|
||||
-------------------------
|
||||
|
||||
配置 NTP 时钟源前,确保您拥有所有机器的 root 用户权限。
|
||||
|
||||
操作步骤
|
||||
-------------------------
|
||||
|
||||
按以下步骤配置 NTP 时钟同步:
|
||||
|
||||
1. 在每台机器上执行以下命令安装 NTP:
|
||||
|
||||
```bash
|
||||
yum install ntp ntpdate -y
|
||||
```
|
||||
|
||||
|
||||
|
||||
2. 运行以下命令查看服务器的 NTP 连接:
|
||||
|
||||
当物理机与时钟服务器的时间误差在 50ms 以内时,系统即认为时钟是同步的。
|
||||
|
||||
```bash
|
||||
[root@centos-01 /root]#ntpq -4p
|
||||
remote refid st t when poll reach delay offset jitter
|
||||
==============================================================================
|
||||
*time6.aliyun.co 10.137.38.86 2 u 712 1024 377 21.951 4.253 4.208
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. (可选)开启 NTP 服务端服务
|
||||
|
||||
如果您已经有了 NTP 服务端服务器,则可跳过此步骤。本文档使用目标机器 `10.244.0.114` 作为 NTP 服务端服务器。
|
||||
1. 编辑配置文件。
|
||||
|
||||
以 root 用户登录 NTP 服务端服务器,运行以下命令编辑配置文件:
|
||||
|
||||
```bash
|
||||
vi /etc/ntp.conf
|
||||
```
|
||||
|
||||
|
||||
|
||||
在配置文件中添加以下内容:
|
||||
|
||||
```bash
|
||||
server <yout_ntp_server_ip>
|
||||
```
|
||||
|
||||
|
||||
|
||||
保存并关闭配置文件。
|
||||
|
||||
|
||||
2. 运行以下命令重启 NTP 服务端服务:
|
||||
|
||||
```bash
|
||||
service ntpd restart
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 运行以下命令查看 NTP 服务端服务是否启动成功:
|
||||
|
||||
```bash
|
||||
ps -ef | grep -i ntpd
|
||||
```
|
||||
|
||||
|
||||
|
||||
4. 运行以下命令设置 NTP 服务开机自启动:
|
||||
|
||||
```bash
|
||||
chkconfig ntpd on
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4. 开启 NTP 客户端服务。
|
||||
|
||||
**注意**
|
||||
|
||||
NTP 服务端服务启动后,您需要等待 5 分钟再开启 NTP 客户端服务。否则系统会提示 "no server suitable for synchronization found"。
|
||||
1. 使用 root 用户登录 OceanBase 数据库。
|
||||
|
||||
|
||||
|
||||
2. 运行以下命令停止 NTP 服务:
|
||||
|
||||
```bash
|
||||
service ntpd stop
|
||||
```
|
||||
|
||||
|
||||
|
||||
3. 运行以下命令同步 NTP 服务端时间:
|
||||
|
||||
```bash
|
||||
ntpdate <yout_ntp_server_ip>
|
||||
```
|
||||
|
||||
|
||||
|
||||
4. 编辑配置文件。
|
||||
|
||||
运行以下命令打开配置文件:
|
||||
|
||||
```bash
|
||||
vi /etc/ntp.conf
|
||||
```
|
||||
|
||||
|
||||
|
||||
在配置文件中添加以下内容:
|
||||
|
||||
```bash
|
||||
server <yout_ntp_server_ip>
|
||||
```
|
||||
|
||||
|
||||
|
||||
5. 运行以下命令,启动 NTP 服务:
|
||||
|
||||
```bash
|
||||
service ntpd start
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5. 运行以下命令验证配置是否成功:
|
||||
|
||||
```bash
|
||||
ntpstat
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回以下结果:
|
||||
|
||||
```bash
|
||||
synchronised to NTP server (10.143.0.44) at stratum 3
|
||||
time correct to within 2 ms
|
||||
polling server every 64 s
|
||||
```
|
||||
|
||||
|
||||
|
||||
```bash
|
||||
timedatectl
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回以下结果:
|
||||
|
||||
```bash
|
||||
Local time: Thu 2021-04-22 11:02:32 CST
|
||||
Universal time: Thu 2021-04-22 03:02:32 UTC
|
||||
RTC time: Thu 2021-04-22 11:02:32
|
||||
Time zone: Asia/Shanghai (CST, +0800)
|
||||
NTP enabled: yes
|
||||
NTP synchronized: yes
|
||||
RTC in local TZ: yes
|
||||
DST active: n/a
|
||||
```
|
||||
|
||||
|
||||
|
||||
说明 NTP 服务生效。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
(可选)规划磁盘
|
||||
=============================
|
||||
|
||||
OceanBase 数据库的服务器依赖数据盘、事务日志盘和 OceanBase 数据库的安装盘。本文介绍如何规划您的磁盘。如果您是个人用户, 您可以将所有数据放到一块盘上并跳过此步骤。如果您是企业用户,您必须将数据分别挂载至三块磁盘。
|
||||
|
||||
如果您的机器上没有三块磁盘,或者您使用的是 RAID 磁盘阵列, 您需要对磁盘或者磁盘阵列的逻辑卷进行分区。建议您采用以下方案分区:
|
||||
|
||||
* 数据盘
|
||||
|
||||
数据盘的配置参数为 `data_dir`。数据盘用来存储基线数据。在您首次启动 OceanBase 数据库时,`${data_dir}/sstable` 将自动创建。数据盘的大小由 `datafile_disk_percentage` 参数决定。`datafile_disk_percentage` 的默认值为 `95`。`data_dir` 创建后无法调整大小。您可以通过加减机器为 OceanBase 数据库进行扩容和缩容。目前,OceanBase 数据库不支持单机的磁盘级扩容和缩容。
|
||||
|
||||
|
||||
* 事务日志盘
|
||||
|
||||
事务日志盘的配置参数为 `redo_dir`。建议您将事务日志盘的大小设置为 OceanBase 数据库内存的 3 倍到 4 倍及以上。事务日志盘包含多个固定大小的文件。这些文件位于安装目录 `${redo_dir}/{clog,ilog,slog}` 下。您可以根据您的需要自动创建和清除事务日志。事务日志达到磁盘总量的 80% 时,将触发自动清除。但是,只有事务日志对应的内存数据已经合并融至基线数据中时,事务日志才能被删除。在相同数据量的情况下,事务日志的大小约为内存数据大小的三倍。因此事务日志盘所需空间上限与两次合并后的数据总量成正比。经验公式:事务日志文件大小 = 增量数据内存上限的 3 到 4 倍。
|
||||
|
||||
|
||||
* OceanBase 数据库安装盘
|
||||
|
||||
OceanBase 数据库安装盘的配置参数为 `home_path`。建议您为 OceanBase 数据库安装盘预留至少 200 G 空间,以保存 7 天及以上的日志。OceanBase 数据库的 RPM 包安装目录位于 `${home_path}` 下。其中,基线数据文件和事务日志文件会通过软链接分别指向独立的数据盘和事务日志盘。OceanBase 数据库的运行日志位于 `${home_path}/log` 下。运行日志会不断增长,并且 OceanBase 数据库无法自动删除运行日志。因此您需要定时删除运行日志。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
磁盘划分后, 执行以下命令检查磁盘划分情况:
|
||||
|
||||
```bash
|
||||
df -h
|
||||
```
|
||||
|
||||
|
||||
|
||||
返回以下结果:
|
||||
|
||||
```bash
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
devtmpfs 31G 0 31G 0% /dev
|
||||
tmpfs 31G 0 31G 0% /dev/shm
|
||||
tmpfs 31G 516K 31G 1% /run
|
||||
tmpfs 31G 0 31G 0% /sys/fs/cgroup
|
||||
/dev/vda1 493G 171G 302G 37% /
|
||||
tmpfs 6.2G 0 6.2G 0% /run/user/0
|
||||
/dev/vdd1 984G 77M 934G 1% /data
|
||||
/dev/vdc1 196G 61M 186G 1% /redo
|
||||
/dev/vdb1 492G 73M 467G 1% /home/admin/oceanbase
|
||||
```
|
||||
|
||||
|
||||
|
||||
其中,`/data` 为数据盘,大小为 1 TB。`/redo` 存放 redo 日志。`/home/admin/oceanbase` 存放 OceanBase 数据库的二进制文件和运行日志。
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
(可选)配置 limits.conf
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
您可以通过配置 `limits.conf` 限制您的进程数量。如果您是个人用户,您可以跳过此步骤。如果您是企业用户,您必须配置 `limits.conf`。
|
||||
|
||||
您可以使用以下两种方法修改资源限制:
|
||||
|
||||
* 通过启动时在会话级别修改。
|
||||
|
||||
|
||||
|
||||
* 通过配置文件 `/etc/security/limits.conf` 在全局级别修改。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
OceanBase 数据库的进程涉及的限制包括线程最大栈空间大小(Stack)、最大文件句柄数(Open Files)和 core 文件大小 (Core File Size)。
|
||||
|
||||
更改配置
|
||||
-------------------------
|
||||
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您必须在每台机器上执行此操作。
|
||||
|
||||
将会话级别的最大栈空间大小设置为 `unlimited`,最大文件句柄数设置为 `655350`,Core 文件大小设置为 `unlimited`。
|
||||
|
||||
执行以下命令,打开 `/etc/security/limits.conf` 配置文件:
|
||||
|
||||
```unknow
|
||||
vi /etc/security/limits.conf
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 `/etc/security/limits.conf` 配置文件中添加以下内容:
|
||||
|
||||
```unknow
|
||||
root soft nofile 655350
|
||||
root hard nofile 655350
|
||||
* soft nofile 655350
|
||||
* hard nofile 655350
|
||||
* soft stack 20480
|
||||
* hard stack 20480
|
||||
* soft nproc 655360
|
||||
* hard nproc 655360
|
||||
* soft core unlimited
|
||||
* hard core unlimited
|
||||
```
|
||||
|
||||
|
||||
|
||||
查看配置
|
||||
-------------------------
|
||||
|
||||
退出当前会话,重新登录。执行以下命令,查看配置是否生效:
|
||||
|
||||
```unknow
|
||||
ulimit -a
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,74 @@
|
||||
(可选)配置 sysctl.conf
|
||||
=======================================
|
||||
|
||||
|
||||
|
||||
为保证 OceanBase 数据库正常运行,在安装 OceanBase 数据库之前,您需要修改所有机器的 `sysctl.conf` 配置,以提高 Linux 系统的性能。如果您是个人用户,您可以跳过此步骤。如果您是企业用户,您必须配置 `sysctl.conf`。
|
||||
**说明**
|
||||
|
||||
|
||||
|
||||
您必须在每台机器上执行此操作。
|
||||
|
||||
更改配置
|
||||
-------------------------
|
||||
|
||||
执行以下命令,打开 `/etc/sysctl.conf` 配置文件:
|
||||
|
||||
```unknow
|
||||
vi /etc/sysctl.conf
|
||||
```
|
||||
|
||||
|
||||
|
||||
在 `/etc/sysctl.conf` 配置文件中添加以下内容:
|
||||
|
||||
```unknow
|
||||
# for oceanbase
|
||||
## 修改内核异步 I/O 限制
|
||||
fs.aio-max-nr=1048576
|
||||
|
||||
## 网络优化
|
||||
net.core.somaxconn = 2048
|
||||
net.core.netdev_max_backlog = 10000
|
||||
net.core.rmem_default = 16777216
|
||||
net.core.wmem_default = 16777216
|
||||
net.core.rmem_max = 16777216
|
||||
net.core.wmem_max = 16777216
|
||||
|
||||
net.ipv4.ip_local_port_range = 3500 65535
|
||||
net.ipv4.ip_forward = 0
|
||||
net.ipv4.conf.default.rp_filter = 1
|
||||
net.ipv4.conf.default.accept_source_route = 0
|
||||
net.ipv4.tcp_syncookies = 0
|
||||
net.ipv4.tcp_rmem = 4096 87380 16777216
|
||||
net.ipv4.tcp_wmem = 4096 65536 16777216
|
||||
net.ipv4.tcp_max_syn_backlog = 16384
|
||||
net.ipv4.tcp_fin_timeout = 15
|
||||
net.ipv4.tcp_max_syn_backlog = 16384
|
||||
net.ipv4.tcp_tw_reuse = 1
|
||||
net.ipv4.tcp_tw_recycle = 1
|
||||
net.ipv4.tcp_slow_start_after_idle=0
|
||||
|
||||
vm.swappiness = 0
|
||||
vm.min_free_kbytes = 2097152
|
||||
|
||||
# 此处为 OceanBase 数据库的 data 目录
|
||||
kernel.core_pattern = /data/core-%e-%p-%t
|
||||
```
|
||||
|
||||
|
||||
|
||||
其中,`kernel.core_pattern` 中的 `/data` 为 OceanBase 数据库的 `data` 目录。如果您只是测试,您可以只设置 `fs.aio-max-nr=1048576`。
|
||||
|
||||
加载配置
|
||||
-------------------------
|
||||
|
||||
更改配置完成后,执行以下命令,加载配置,使配置生效。
|
||||
|
||||
```unknow
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,111 @@
|
||||
# 部署 OceanBase 数据库
|
||||
|
||||
您可以可用 OBD 部署 OceanBase 数据库,也可以不借助任何工具部署 OceanBase 数据库。本文介绍如何在不借助任何工具的情况下部署 OceanBase 数据库。本文提供的部署方式将省略操作系统内核参数和数据库内核参数的配置,因此**不适用**于性能测试。
|
||||
|
||||
## 环境介绍
|
||||
|
||||
本文使用 16 核 64 G 阿里云 ECS,并配置了独立的磁盘(/dev/sdb),磁盘空间为 256 G。
|
||||
|
||||
## 配置操作系统
|
||||
|
||||
依次执行以下命令,将物理盘格式化为文件系统 `/data`。
|
||||
|
||||
```bash
|
||||
fdisk /dev/vdb
|
||||
mkfs -t ext4 /dev/vdb1
|
||||
mkdir -p /data
|
||||
mount -t ext4 /dev/vdb1 /data
|
||||
```
|
||||
|
||||
## 下载 OceanBase 数据库
|
||||
|
||||
执行以下命令,下载 OceanBase 数据库:
|
||||
|
||||
```bash
|
||||
yum install -y yum-utils
|
||||
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
|
||||
# 创建一个目录用于存放安装包
|
||||
mkdir rpm
|
||||
cat > rpm_list <<EOF
|
||||
oceanbase-ce-3.1.0-1.el7.x86_64.rpm
|
||||
oceanbase-ce-libs-3.1.0-1.el7.x86_64.rpm
|
||||
obproxy-3.1.0-1.el7.x86_64.rpm
|
||||
EOF
|
||||
wget -B https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ -i rpm_list -P rpm
|
||||
```
|
||||
|
||||
## 安装 OceanBase 数据库
|
||||
|
||||
OceanBase 数据库默认安装在 root 用户下。为确保数据安全,建议您将 OceanBase 数据库安装在普通用户下。此处 `admin` 用户为例,将 OceanBase 数据库运行在 `admin` 用户下。
|
||||
|
||||
```bash
|
||||
useradd admin
|
||||
rpm -ivh rpm/*
|
||||
```
|
||||
|
||||
执行以下命令,依次查询 RPM 安装包的安装目录:
|
||||
|
||||
```bash
|
||||
rpm -ql oceanbase-ce-3.1.0-1.el7.x86_64rpm -ivh rpm/*
|
||||
rpm -ql obproxy-3.1.0-1.el7
|
||||
```
|
||||
|
||||
## 启动 OceanBase 进程
|
||||
|
||||
依次执行以下命令,使用 `admin` 用户,在 `oceanbase` 目录启动 OceanBase 进程:
|
||||
|
||||
```bash
|
||||
su - admin
|
||||
mkdir -p /data/observer01/store/{sort_dir,sstable,clog,ilog,slog}
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib/
|
||||
cd /data/observer01 && /home/admin/oceanbase/bin/observer -r 172.20.249.39: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,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=50G,enable_syslog_recycle=True,max_syslog_file_count=10 -z zone1 -p 2881 -P 2882 -c 1 -d /data/observer01/store -i eth0 -l INFO
|
||||
```
|
||||
|
||||
> **注意:** 您必须使用您真实的 IP、启动目录和网卡名称。示例中的启动目录为 `/data/observer01`,运行日志将存储在这个目录。
|
||||
|
||||
各选项详情见下表:
|
||||
|
||||
选项名称 | 描述
|
||||
---- | -----
|
||||
-d | 数据文件和日志文件的目录。这个目录下必须存在几个子目录。重装 OceanBase 数据库后,此目录必须清空,然后重新创建。
|
||||
-r | 节点信息。
|
||||
-o | OceanBase 数据库的启动参数。例如,上述命令中,`memory_limit=8G`,表示启动一个 8 G 的进程。您可以可以您机器的实际内存调整 `memory_limit`。
|
||||
-i | 网卡名称,必须与 -r 后的 IP 对应。
|
||||
|
||||
执行以下命令,查看 OceanBase 数据库是否启动成功:
|
||||
|
||||
```bash
|
||||
ps -ef|grep observer
|
||||
```
|
||||
|
||||
## BootStrap 集群
|
||||
|
||||
OceanBase 数据库进程首次启动后,您可以使用以下方式连接 OceanBase 数据库:
|
||||
|
||||
- 使用 MySQL 客户端(5.5 版本及以上)连接
|
||||
- 使用 OBClient 客户端(需要另外安装)连接
|
||||
|
||||
```bash
|
||||
# 安装 OBClient
|
||||
yum -y install obclient
|
||||
```
|
||||
|
||||
按照以下步骤连接 OceanBase 数据库,并 BootStrap 集群:
|
||||
|
||||
```bash
|
||||
# 连接 OceanBase 数据库
|
||||
mysql -h127.1 -uroot -P2881
|
||||
```
|
||||
|
||||
```sql
|
||||
-- BootStrap 集群
|
||||
oceanbase> SET SESSION ob_query_timeout=1000000000;
|
||||
oceanbase> ALTER SYSTEM bootstrap ZONE 'zone1' SERVER '172.20.249.39:2882';
|
||||
```
|
||||
|
||||
看到 oceanbase 这个数据库,那就是真正成功了。
|
||||
> **注意:** 当内存不足、目录权限不对、磁盘空间不足、多节点时间不同步(超过 5ms)、多节点网络延时超过 50 ms时,可能会导致 BootStrap 集群失败。您必须杀掉 OceanBase 数据库的进程,清空数据文件,重新启动 OceanBase 数据库,重新 BootStrap 集群。
|
||||
|
||||
## 后续操作
|
||||
|
||||
要使用 OceanBase 数据库,您必须创建普通租户。更多信息,参考 [创建租户]()。
|
||||
@ -0,0 +1,34 @@
|
||||
# OceanBase 安装路径
|
||||
|
||||
OceanBase 数据库默认安装在 `/home/admin/oceanbase` 下,主要由以下子目录构成:
|
||||
|
||||
```text
|
||||
|-- bin
|
||||
|-- etc
|
||||
| |-- observer.config.bin
|
||||
| `-- observer.config.bin.history
|
||||
|-- lib
|
||||
|-- log
|
||||
| |-- election.log
|
||||
| |-- election.log.wf
|
||||
| |-- observer.log
|
||||
| |-- observer.log.wf
|
||||
| |-- rootservice.log
|
||||
| |-- rootservice.log.wf
|
||||
|-- run
|
||||
| |-- mysql.sock
|
||||
| `-- observer.pid
|
||||
`-- store
|
||||
|-- clog
|
||||
|-- ilog
|
||||
|-- slog
|
||||
|-- sort_dir
|
||||
`-- sstable
|
||||
```
|
||||
|
||||
`bin` 目录存放二进制文件。
|
||||
`etc` 目录存放配置文件。
|
||||
`lib` 目录存放依赖。
|
||||
`log` 目录存放运行日志,包括选举模块日志、启动和运行日志和 RootService 日志。
|
||||
`run` 目录存放运行文件。
|
||||
`store` 目录存放数据文件。`clog` 为提交日志(Commit Log),记录事务和 PartitionService 提供的原始日志内容,所有分区共用。`ilog` (Index Log)为存储日志目录,记录分区内部 log_id > clog(file_id 和 offset)的索引信息,所有分区共用。`slog` (Storage Log)为存储日志,记录 SSTable 操作的信息。
|
||||
@ -0,0 +1,209 @@
|
||||
# 生产环境推荐配置
|
||||
|
||||
本文介绍 OceanBase 数据库在生产环境中的推荐配置。
|
||||
|
||||
## 磁盘(必须遵守)
|
||||
|
||||
OceanBase 数据库的运行日志、事务日志和数据文件必须分开存储。**日志盘和数据盘建议使用 SSD。不推荐使用 sata 盘。**推荐配置如下:
|
||||

|
||||
如果您没有 3 块磁盘,建议您使用 LVM 将一块盘分为 3 个分区。
|
||||
|
||||
## 时钟同步(必须遵守)
|
||||
|
||||
OceanBase 集群中各服务器的时间必须保持一致,否则 OceanBase 集群将无法启动。时钟同步在生产环境中**非常非常重要**,物理机与时钟服务器的误差在 100 ms 以内可认为时钟是同步状态。OceanBase 数据库最大容忍误差是 200 ms。当误差超过 200 ms 时,会出现无主状况,恢复时钟同步后,重启 OceanBase 服务即可恢复正常。
|
||||
使用以下命令,查看各服务器间的时钟是否同步:
|
||||
|
||||
```bash
|
||||
sudo clockdiff $IP
|
||||
```
|
||||
|
||||
更多信息,参考 [配置时钟源](6.optional-configuring-clock-sources.md)。
|
||||
|
||||
## 网络时延(必须遵守)
|
||||
|
||||
服务器间的网络时延不能超过 200 ms,否则数据同步会严重滞后,并且可能影响选举。涉及跨城部署时,您需要评估好服务器间的网络时延,跨城网络时延建议不超过 30ms。
|
||||
|
||||
## 网卡设置
|
||||
|
||||
建议配置 2 块万兆网卡,bond 模式可以取名为 bond0、mode1 或 mode4。推荐使用 mode4。如果 bond 模式是 mode4,则交换机需要配置 802.3ad。网卡名建议使用 eth0 或 eth1。建议使用 network 服务,不要使用 NetworkManager。
|
||||
|
||||
## 参数设置
|
||||
|
||||
- 当系统的写入 TPS 过高时,止转储速度交低于写入速度,此时 memstore 内存会爆,执行以下命令开启写入限速:
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET writing_throttling_trigger_percentage=75 tenant=all(或者具体 tenantname);
|
||||
```
|
||||
|
||||
- 内存设置
|
||||
- 租户的 CPU 和内存规格比例建议不低于 1:4,否则会导致租户内存满。
|
||||
- 普通租户的最小内存必须大于 5G。
|
||||
- 租户内存太小时建议调大 `ob_sql_work_area_percentage` 变量。`ob_sql_work_area_percentage` 默认值为 5%。租户内存小于 10G 时建议将 `ob_sql_work_area_percentage` 设置为 20% 左右。
|
||||
- 分区数量受内存限制,每个副本预留内存为 168 KB,因此 10000 个副本至少需要预留 1.68 G 内存,即 1 G 的租户最多能建约六千个分区。建议您根据分区数设置租户内存。
|
||||
- 物理内存使用限制 `memstore_limit_percentage` 参数的默认值为 50。如果您的服务器内存大于 256 G,建议您将 `memstore_limit_percentage` 参数设置为 80。如果您的服务器内存小于 256 G,建议您采用默认配置。执行以下命令,设置 `memstore_limit_percentage` 参数:
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET memstore_limit_percentage = '80';
|
||||
```
|
||||
|
||||
- `memory_limit_percentage` 的默认值为 80,如果您的服务器内存大于 256 G,建议您将 `memory_limit_percentage` 参数设置为 90。执行以下命令,设置 `memory_limit_percentage` 参数:
|
||||
- 慢查询执行时间阈值 `trace_log_slow_query_watermark` 参数的默认值为 100 ms。您可以根据业务特点调整这一参数。如果阈值太小,OceanBase 将打印大量 trace 日志,进而会影响性能。慢查询时间的默认值为 5s。执行以下命令,进行设置:
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET trace_log_slow_query_watermark = '1s';
|
||||
```
|
||||
|
||||
- CPU 并发度调整
|
||||
|
||||
```sql
|
||||
-- CPU 并发度参数,建议配置为 4,arm 系统为 2
|
||||
ALTER SYSTEM SET cpu_quota_concurrency = '4';
|
||||
|
||||
-- 资源软负载开关,控制资源均衡水位,默认为 50%,即 CPU 内存使用超过 50% 就进行 unit 均衡,线上建议调整为 100,达到手工控制 unit 分布的效果
|
||||
ALTER SYSTEM SET resource_soft_limit = '100';
|
||||
```
|
||||
|
||||
- 转储合并相关
|
||||
|
||||
```sql
|
||||
-- 配置转储 50 次
|
||||
ALTER SYSTEM SET minor_freeze_times = 50;
|
||||
|
||||
-- 转储触发水位百分比,建议 256 G 以上配置调整为 70,256 G 以下调整为 60
|
||||
ALTER SYSTEM SET freeze_trigger_percentage = '60';
|
||||
|
||||
-- 数据拷贝并发为 100
|
||||
ALTER SYSTEM SET data_copy_concurrency = 100;
|
||||
-- 服务器上数据传出并发为 10
|
||||
ALTER SYSTEM SET server_data_copy_out_concurrency = 10;
|
||||
-- 服务器上数据传入并发为 10
|
||||
ALTER SYSTEM SET server_data_copy_in_concurrency = 10;
|
||||
|
||||
-- 转储预热时间,默认 30s,设置了会延后转储释放的时间,改成 0s
|
||||
ALTER SYSTEM SET minor_warm_up_duration_time = '0s';
|
||||
-- 配置 chunk 内存大小(建议保持默认值 0,OceanBase 自行分配)
|
||||
ALTER SYSTEM SET memory_chunk_cache_size = 0;
|
||||
|
||||
|
||||
-- 最大包括版本数量,影响磁盘可用空间,默认为 2,将多保留一个版本的数据在数据盘中,需调整为 1
|
||||
ALTER SYSTEM SET max_kept_major_version_number = '1';
|
||||
ALTER SYSTEM SET max_stale_time_for_weak_consistency = '2h';
|
||||
```
|
||||
|
||||
- 事务相关
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET clog_sync_time_warn_threshold = '1s';
|
||||
ALTER SYSTEM SET trx_try_wait_lock_timeout = '0ms';(默认值为 0ms,无需修改)
|
||||
|
||||
-- 建议关闭一阶段提交,该参数值默认是 false
|
||||
ALTER SYSTEM SET enable_one_phase_commit='False';
|
||||
```
|
||||
|
||||
- 分区迁移速度控制,若是集群负载很低,可以通过加大并发任务数加快分区迁移速度,调大迁移并发数
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET data_copy_concurrency=40;
|
||||
ALTER SYSTEM SET server_data_copy_out_concurrency=20;
|
||||
ALTER SYSTEM SET server_data_copy_in_concurrency=20;
|
||||
```
|
||||
|
||||
- 压缩相关
|
||||
|
||||
```sql
|
||||
-- (默认就是 zstd_1.0,无需修改), 不过系统支持多种压缩算法
|
||||
ALTER SYSTEM SET default_compress_func = 'zstd_1.0';
|
||||
```
|
||||
|
||||
- 缓存刷新相关
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET autoinc_cache_refresh_interval = '43200s';
|
||||
```
|
||||
|
||||
- prepare statement 和 server 端 ps `受_ob_enable_prepared_statement` 参数控制,除了 JDBC 和 OBClient 的用户可以按照文档提供的说明使用 server 端 ps,其他情况不建议使用。
|
||||
|
||||
```sql
|
||||
-- Prepared Statement 参数,不用 java 建联的配置建议设为 0
|
||||
ALTER SYSTEM SET _ob_enable_prepared_statement = 0;
|
||||
```
|
||||
|
||||
- 系统相关
|
||||
|
||||
```sql
|
||||
ALTER SYSTEM SET server_permanent_offline_time = '7200s';
|
||||
|
||||
|
||||
-- 公有云建议 5M,生产环境建议 5M,否则建议默认值 30M
|
||||
ALTER SYSTEM SET syslog_io_bandwidth_limit = '5M';
|
||||
```
|
||||
|
||||
- 集群升级策略
|
||||
|
||||
版本升级时,机器临时上下线,可以先进行一次转储,以减少启动服务器的恢复时间。
|
||||
|
||||
- 批量导入大量数据最佳策略
|
||||
|
||||
如果是多租户集群,某个租户需要大批量导入数据,为避免影响其他租户, 导完数据后可以恢复以上两个参数:
|
||||
|
||||
- 将 `cpu_quota_concurrency` 设置为 1,防止租户间 CPU 抢占
|
||||
- 开启多轮转储减少合并触发,这样可以提高导入速度
|
||||
|
||||
- 租户 primary_zone 配置
|
||||
- primar_zone 配置到具体某个 zone 中。适用场景:业务使用单表、zone_name1 与应用在同机房、zone_name2 和 zone_name3 作为从副本平时无业务流量,具体 zone 顺序需按机房优先级、按应用和 OceanBase 的机房配置。
|
||||
|
||||
```sql
|
||||
ALTER TENANT SET PRIMARY_ZONE = 'zone_name1;zone_name2,zone_name3';
|
||||
```
|
||||
|
||||
- 打散 primary_zone 到所有全功能 zone 中。使用场景:业务使用分区表、集群中所有副本都在同一机房或不同 zone 机房间网络延迟在 1ms 内,需要将 primary_zone 打散到所有副本。
|
||||
|
||||
```sql
|
||||
ALTER TENANT SET PRIMARY_ZONE = 'zone_name1,zone_name2,zone_name3';
|
||||
```
|
||||
|
||||
## 租户设置
|
||||
|
||||
- 并发度设置
|
||||
|
||||
```sql
|
||||
-- 最大并发度,默认 32,有大查询业务的建议调整为 128
|
||||
SET GLOBAL ob_max_parallel_degree = 128;
|
||||
|
||||
|
||||
/*
|
||||
parallel_max_servers 推荐设置为测试租户分配的 resource unit cpu 数的 10 倍
|
||||
如测试租户使用的 unit 配置为:create resource unit $unit_name max_cpu 26
|
||||
那么该值设置为 260
|
||||
parallel_server_target 推荐设置为 parallel_max_servers * 机器数*0.8
|
||||
那么该值为 260*3*0.8=624
|
||||
*/
|
||||
SET GLOBAL parallel_max_servers=260;
|
||||
SET GLOBAL parallel_servers_target=624;
|
||||
```
|
||||
|
||||
- 回收站设置
|
||||
|
||||
```sql
|
||||
-- 回收站参数,DDL 执行频率过大的场景一定要关闭,避免ddl执行过多引起租户性能异常
|
||||
SET GLOBAL recyclebin = 0;
|
||||
|
||||
-- truncate回滚参数,truncate执行频率过大的场景一定要关闭
|
||||
SET GLOBAL ob_enable_truncate_flashback = 0;
|
||||
```
|
||||
|
||||
- 客户端命令长度
|
||||
|
||||
OceanBase 客户端可发的命令长度受限于租户系统变量 `max_allowed_packet` 的限制(缺省4M)。可以酌情调大。
|
||||
|
||||
## ODP 配置
|
||||
|
||||
- ODP 探活
|
||||
|
||||
```sql
|
||||
ALTER proxyconfig SET sock_option_flag_out = 2; -- 2 代表 keepalive
|
||||
ALTER proxyconfig SET server_tcp_keepidle = 5; -- 启动 keepalive 探活前的空闲时间,5 秒
|
||||
ALTER proxyconfig SET server_tcp_keepintvl = 5; -- 两个 keepalive 探活包之间的时间间隔,5 秒
|
||||
ALTER proxyconfig SET server_tcp_keepcnt = 2; -- 最多发送多少个 keepaliv e包,2 个。最长 5+5*2=15 秒发现 dead_socket
|
||||
ALTER proxyconfig SET server_tcp_user_timeout = 5; -- 等待 TCP 层 ACK 确认消息的超时时长,5 秒
|
||||
```
|
||||
Reference in New Issue
Block a user