## 1 概述

本章节主要介绍采用openGauss简化安装脚本（以下简称安装脚本），一键式安装openGauss数据库所必须的系统环境及安装步骤。

## 2 安装环境要求

### 2.1 openGauss环境要求

安装openGauss的具体环境要求，请参考《openGauss安装指南》中的“2.3.1节软硬件环境要求”章节。

### 2.2 安装脚本环境要求

#### 硬件环境要求

安装脚本对安装环境的操作系统及对应处理器架构进行了限制，目前支持的环境如表1所示。

**表1** 硬件环境要求

| 操作系统  | 处理器架构 |
| --------- | ---------- |
| openEuler | aarch64    |
| openEuler | x86_64     |
| CentOS    | x86_64     |

#### 软件依赖要求

安装脚本依赖于其它软件的支持，如表2所示。

**表2** 软件依赖要求

| 所需软件  | 建议版本 |
| --------- | -------- |
| firewalld | -        |
| python    | 3        |

## 3 安装openGauss

### 3.1 安装前准备

#### 导入安装脚本

安装脚本包含了多个文件，其用途如表3所示。导入安装脚本时，建议直接导入tar包至安装环境中，随后在安装环境中进行解压，否则可能出现window与unix风格不兼容的问题。若出现此类问题，可以使用dos2unix命令对安装脚本进行格式转换。

**表3** 安装脚本清单

| 文件名称     | 用途                   |
| ------------ | ---------------------- |
| install.sh   | 简化安装主程序         |
| common.sh    | 公共命令               |
| README.md    | 参考文档               |
| template.xml | xml模板                |
| finance.sql  | 金融数据模型展示数据库 |
| school.sql   | 学校数据模型展示数据库 |

#### 导入openGauss数据库安装包

安装脚本支持以下两种方式导入openGauss数据库安装包：

- 手动导入

在[openGauss官网](https://opengauss.org/zh/download.html)下载对应版本安装包拷贝至安装环境中，存放路径为安装脚本的上层目录。

- 自动导入

配置安装环境外网访问，并确保安装脚本上层路径不存在openGauss数据库安装包。当运行安装脚本时，会自动下载对应版本安装包进行安装。

### 3.2 执行安装

使用如下命令执行安装脚本。

```shell
sh install.sh -U user_name -G user_group -h host_ip -p port [-D install_path]
```

#### 参数说明

- user_name为openGauss数据库的安装用户。
- user_group为openGauss数据库安装用户所属用户组。
- host_ip为主机在后端存储网络中的IP地址（内网IP）。
- host_port为数据库节点的基础端口号。
- install_path为openGauss数据库安装路径，该参数为可选参数。

以上参数的详细信息，请参考《openGauss安装指南》中的3.1节创建XML配置文件。

#### 注意事项

- 不指定install_path参数时，数据库默认安装在/opt/user_name路径下。

- 无论采用何种方式导入openGauss安装包，安装脚本都会在/home/user_name/openGaussTar路径下建立本地安装包文件。该路径支持修改，请在install.sh中修改install_location参数，但是需要与安装路径install_path不同。
- 安装脚本必须在root下执行，且同一时刻只有1个安装脚本正在运行。

## 4 导入展示数据库

### 4.1 学校数据模型

假设A市B学校为了加强对学校的管理，引入了openGauss数据库。在B学校里，主要涉及的对象有学生、教师、班级、院系和课程。本实验假设在B学校数据库中，教师会教授课程，学生会选修课程，院系会聘请教师，班级会组成院系，学生会组成班级。因此，根据此关系，本文给出了相应的关系模式如下。在运行安装脚本时，会根据用户选择安装该展示模型。

#### 关系模式

对于B校中的5个对象，分别建立属于每个对象的属性集合，具体属性描述如下：

- 学生（学号，姓名，性别，出生日期，入学日期，家庭住址）
- 教师（教师编号，教师姓名，职称，性别，年龄，入职日期）
- 班级（班级编号，班级名称，班主任）
- 院系（系编号，系名称，系主任）
- 课程（课程编号，课程名称，课程类型，学分）

上述属性对应的编号为：

- student（std_id，std_name，std_sex，std_birth，std_in，std_address）
- teacher（tec_id，tec_name，tec_job，tec_sex，tec_age，tec_in）
- class（cla_id，cla_name，cla_teacher）
- school_department（depart_id，depart_name，depart_teacher）
- course（cor_id，cor_name，cor_type，credit）

对象之间的关系：

- 一位学生可以选择多门课程，一门课程可被多名学生选择
- 一位老师可以选择多门课程，一门课程可被多名老师教授
- 一个院系可由多个班级组成
- 一个院系可聘请多名老师
- 一个班级可由多名学生组成

### 4.2 金融数据模型

假设A市C银行为了方便对银行数据的管理和操作，引入了openGauss数据库。针对C银行的业务，本实验主要将对象分为客户、银行卡、理财产品、保险、基金和资产。因此，针对这些数据库对象，本实验假设C银行的金融数据库存在着以下关系：客户可以办理银行卡，同时客户可以购买不用的银行产品，如资产，理财产品，基金和保险。那么，根据C银行的对象关系，本文给出了相应的关系模式如下。在运行安装脚本时，会根据用户选择安装该展示模型。

#### 关系模式

对于C银行中的6个对象，分别建立属于每个对象的属性集合，具体属性描述如下：

- 客户（客户编号、客户名称、客户邮箱，客户身份证，客户手机号，客户登录密码）
- 银行卡（银行卡号，银行卡类型，所属客户编号）
- 理财产品（产品名称，产品编号，产品描述，购买金额，理财年限）
- 保险（保险名称，保险编号，保险金额，适用人群，保险年限，保障项目）
- 基金（基金名称，基金编号，基金类型，基金金额，风险等级，基金管理者）
- 资产（客户编号，商品编号，商品状态，商品数量，商品收益，购买时间）

上述属性对应的编号为：

- client（c_id，c_name，c_mail，c_id_card，c_phone，c_password）
- bank_card（b_number，b_type，b_c_id）
- finances_product（p_name，p_id，p_description，p_amount，p_year）
- insurance（i_name，i_id，i_amount，i_person，i_year，i_project）
- fund（f_name，f_id，f_type，f_amount，risk_level，f_manager）
- property（pro_c_id，pro_id，pro_status，pro_quantity，pro_income，pro_purchase_time）

对象之间的关系：

- 一个客户可以办理多张银行卡
- 一个客户可有多笔资产
- 一个客户可以购买多个理财产品，同一类理财产品可由多个客户购买
- 一个客户可以购买多个基金，同一类基金可由多个客户购买
- 一个客户可以购买多个保险，同一类保险可由多个客户购买