From 04cbb60a24b9b3c00a1428eec761d74ca1502f1d Mon Sep 17 00:00:00 2001 From: liyang0608 <2643278072qq.com> Date: Tue, 18 Aug 2020 16:01:31 +0800 Subject: [PATCH] merge chapter --- ...67\347\253\257\350\277\236\346\216\245.md" | 242 +++- ...54\345\234\260\350\277\236\346\216\245.md" | 54 - ...34\347\250\213\350\277\236\346\216\245.md" | 126 -- ...73\347\273\237\351\205\215\347\275\256.md" | 143 --- ...67\345\217\212\347\216\257\345\242\203.md" | 298 ----- ...11\350\243\205\347\216\257\345\242\203.md" | 355 +++++- ...15\347\275\256\346\226\207\344\273\266.md" | 351 ++++- ...72\346\225\260\346\215\256\345\272\223.md" | 78 -- ...33\345\273\272\347\224\250\346\210\267.md" | 81 -- .../\345\210\233\345\273\272\350\241\250.md" | 643 ---------- ...33\345\273\272\350\247\222\350\211\262.md" | 71 -- ...11\350\243\205\347\216\257\345\242\203.md" | 1126 ++++++++++++++++- ...72\347\253\213\344\272\222\344\277\241.md" | 310 ----- ...03\351\231\220\350\265\213\344\272\210.md" | 259 ---- ...23\345\211\215\345\217\226\345\200\274.md" | 70 - ...45\347\234\213\345\257\271\350\261\241.md" | 49 - ...36\346\216\245\344\277\241\346\201\257.md" | 48 - .../Quickstart/\347\244\272\344\276\213.md" | 90 -- ...60\346\215\256\347\256\241\347\220\206.md" | 785 +++++++++++- ...03\351\231\220\347\256\241\347\220\206.md" | 429 ++++++- ...5\256openGauss\345\217\202\346\225\260.md" | 185 ++- ...34\347\250\213\347\231\273\345\275\225.md" | 60 - ...44\350\257\201\347\255\226\347\225\245.md" | 94 -- ...07\344\273\266\345\217\202\346\225\260.md" | 75 -- ...57\345\242\203\350\246\201\346\261\202.md" | 136 -- ...72\346\234\254\344\277\241\346\201\257.md" | 72 -- ...73\347\273\237\345\217\202\346\225\260.md" | 493 -------- ...02\347\202\271\344\277\241\346\201\257.md" | 77 -- ...04\351\241\271\347\233\256\345\275\225.md" | 99 -- ...20\350\241\214\345\217\202\346\225\260.md" | 732 ++++++++++- ...15\350\256\276\345\217\202\346\225\260.md" | 649 ---------- ...57\347\273\264\346\212\244\346\200\247.md" | 157 --- ...56\345\272\223\345\256\211\345\205\250.md" | 136 -- ...70\345\277\203\346\212\200\346\234\257.md" | 599 ++++++++- ...72\346\234\254\345\212\237\350\203\275.md" | 77 -- .../\351\253\230\345\217\257\347\224\250.md" | 20 - .../\351\253\230\346\200\247\350\203\275.md" | 168 --- .../\351\253\230\346\211\251\345\261\225.md" | 10 - content/zh/menu/index.md | 37 +- 39 files changed, 4780 insertions(+), 4704 deletions(-) delete mode 100644 "content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\346\234\254\345\234\260\350\277\236\346\216\245.md" delete mode 100644 "content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\350\277\234\347\250\213\350\277\236\346\216\245.md" delete mode 100644 "content/zh/docs/Quickstart/\344\277\256\346\224\271\346\223\215\344\275\234\347\263\273\347\273\237\351\205\215\347\275\256.md" delete mode 100644 "content/zh/docs/Quickstart/\345\207\206\345\244\207\345\256\211\350\243\205\347\224\250\346\210\267\345\217\212\347\216\257\345\242\203.md" delete mode 100644 "content/zh/docs/Quickstart/\345\210\233\345\273\272\346\225\260\346\215\256\345\272\223.md" delete mode 100644 "content/zh/docs/Quickstart/\345\210\233\345\273\272\347\224\250\346\210\267.md" delete mode 100644 "content/zh/docs/Quickstart/\345\210\233\345\273\272\350\241\250.md" delete mode 100644 "content/zh/docs/Quickstart/\345\210\233\345\273\272\350\247\222\350\211\262.md" delete mode 100644 "content/zh/docs/Quickstart/\346\211\213\345\267\245\345\273\272\347\253\213\344\272\222\344\277\241.md" delete mode 100644 "content/zh/docs/Quickstart/\346\235\203\351\231\220\350\265\213\344\272\210.md" delete mode 100644 "content/zh/docs/Quickstart/\346\237\245\347\234\213\345\217\202\346\225\260\345\275\223\345\211\215\345\217\226\345\200\274.md" delete mode 100644 "content/zh/docs/Quickstart/\346\237\245\347\234\213\345\257\271\350\261\241.md" delete mode 100644 "content/zh/docs/Quickstart/\347\241\256\350\256\244\350\277\236\346\216\245\344\277\241\346\201\257.md" delete mode 100644 "content/zh/docs/Quickstart/\347\244\272\344\276\213.md" delete mode 100644 "content/zh/docs/Quickstart/\350\256\276\347\275\256root\347\224\250\346\210\267\350\277\234\347\250\213\347\231\273\345\275\225.md" delete mode 100644 "content/zh/docs/Quickstart/\350\256\276\347\275\256\345\256\242\346\210\267\347\253\257\350\256\244\350\257\201\347\255\226\347\225\245.md" delete mode 100644 "content/zh/docs/Quickstart/\350\256\276\347\275\256\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\346\225\260.md" delete mode 100644 "content/zh/docs/Quickstart/\350\275\257\347\241\254\344\273\266\347\216\257\345\242\203\350\246\201\346\261\202.md" delete mode 100644 "content/zh/docs/Quickstart/\351\205\215\347\275\256Host\345\237\272\346\234\254\344\277\241\346\201\257.md" delete mode 100644 "content/zh/docs/Quickstart/\351\205\215\347\275\256\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" delete mode 100644 "content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\344\270\273\350\212\202\347\202\271\344\277\241\346\201\257.md" delete mode 100644 "content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\345\220\215\347\247\260\345\217\212\345\220\204\351\241\271\347\233\256\345\275\225.md" delete mode 100644 "content/zh/docs/Quickstart/\351\207\215\350\256\276\345\217\202\346\225\260.md" delete mode 100644 "content/zh/docs/Technicalwhitepaper/\345\217\257\347\273\264\346\212\244\346\200\247.md" delete mode 100644 "content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" delete mode 100644 "content/zh/docs/Technicalwhitepaper/\351\235\242\345\220\221\345\272\224\347\224\250\345\274\200\345\217\221\347\232\204\345\237\272\346\234\254\345\212\237\350\203\275.md" delete mode 100644 "content/zh/docs/Technicalwhitepaper/\351\253\230\345\217\257\347\224\250.md" delete mode 100644 "content/zh/docs/Technicalwhitepaper/\351\253\230\346\200\247\350\203\275.md" delete mode 100644 "content/zh/docs/Technicalwhitepaper/\351\253\230\346\211\251\345\261\225.md" diff --git "a/content/zh/docs/Quickstart/gsql\345\256\242\346\210\267\347\253\257\350\277\236\346\216\245.md" "b/content/zh/docs/Quickstart/gsql\345\256\242\346\210\267\347\253\257\350\277\236\346\216\245.md" index 3a49ef6a6..6bbb89727 100644 --- "a/content/zh/docs/Quickstart/gsql\345\256\242\346\210\267\347\253\257\350\277\236\346\216\245.md" +++ "b/content/zh/docs/Quickstart/gsql\345\256\242\346\210\267\347\253\257\350\277\236\346\216\245.md" @@ -1,9 +1,247 @@ # gsql客户端连接 -- **[确认连接信息](确认连接信息.md)** + -- **[使用gsql本地连接](使用gsql本地连接.md)** +- [gsql客户端连接](#gsql客户端连接a-namezh-cn_topic_0241704252a) + - [确认连接信息](#确认连接信息a-namezh-cn_topic_0254911667a) + - [操作步骤](#操作步骤a-namezh-cn_topic_0242370176_zh-cn_topic_0237120290_zh-cn_topic_0062129725_section3641787792727a) + - [使用gsql本地连接](#使用gsql本地连接a-namezh-cn_topic_0241704254a) + - [注意事项](#注意事项a-namezh-cn_topic_0241234230_zh-cn_topic_0085434651_zh-cn_topic_0059781996_zh-cn_topic_0062050379_s8dfe50d001084ac9ad79a79a8f471e8aa) + - [前提条件](#前提条件a-namezh-cn_topic_0241234230_zh-cn_topic_0085434651_zh-cn_topic_0059781996_zh-cn_topic_0062050379_section2863008216400a) + - [本地连接数据库](#本地连接数据库a-namezh-cn_topic_0241234230_zh-cn_topic_0085434651_zh-cn_topic_0059781996_zh-cn_topic_0062050379_sedb32189b5a4410a9a8ac8586f1766a0a) + - [使用gsql远程连接](#使用gsql远程连接a-namezh-cn_topic_0241704255a) + - [前提条件](#前提条件a-namezh-cn_topic_0241234230_zh-cn_topic_0085434651_zh-cn_topic_0059781996_zh-cn_topic_0062050379_section2863008216400a-1) + - [通过gs\_guc配置白名单](#通过gs\_guc配置白名单a-namesection6704147193817a) + - [安装gsql客户端并连接数据库](#安装gsql客户端并连接数据库a-namesection1535892915382a) + - **[使用gsql远程连接](使用gsql远程连接.md)** +## 确认连接信息 + +客户端工具通过数据库主节点连接数据库。因此连接前,需获取数据库主节点所在服务器的IP地址及数据库主节点的端口号信息。 + +### 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用“gs\_om -t status --detail”命令查询openGauss各实例情况。 + + ``` + gs_om -t status --detail + ``` + + ``` + [ DBnode State ] + + node node_ip instance state + ----------------------------------------------------------------------------- + 1 plat1 192.168.0.11 5001 /srv/BigData/gaussdb/data1/dbnode Normal + ``` + + 如上部署了数据库主节点实例的服务器IP地址分别为192.168.10.11。数据库主节点数据路径为“/srv/BigData/gaussdb/data1/dbnode”。 + +3. 确认数据库主节点的端口号。 + + 在[2](#zh-cn_topic_0242370176_zh-cn_topic_0237120290_zh-cn_topic_0062129725_li736435692628)查到的数据库主节点数据路径下的postgresql.conf文件中查看端口号信息。示例如下: + + ``` + cat /srv/BigData/gaussdb/data1/dbnode/postgresql.conf | grep port + ``` + + ``` + port = 8000 # (change requires restart) + #comm_sctp_port = 1024 # Assigned by installation (change requires restart) + #comm_control_port = 10001 # Assigned by installation (change requires restart) + # supported by the operating system: + # e.g. 'localhost=10.145.130.2 localport=12211 remotehost=10.145.130.3 remoteport=12212, localhost=10.145.133.2 localport=12213 remotehost=10.145.133.3 remoteport=12214' + # e.g. 'localhost=10.145.130.2 localport=12311 remotehost=10.145.130.4 remoteport=12312, localhost=10.145.133.2 localport=12313 remotehost=10.145.133.4 remoteport=12314' + # %r = remote host and port + alarm_report_interval = 10 + support_extended_features=true + ``` + + 8000为数据库主节点的端口号。 + + +## 使用gsql本地连接 + +gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参考gsql。 + +### 注意事项 + +缺省情况下,客户端连接数据库后处于空闲状态时会根据参数session\_timeout的默认值自动断开连接。如果要关闭超时设置,设置参数session\_timeout为0即可。 + +### 前提条件 + +已确认连接信息。 + +### 本地连接数据库 + +1. 以操作系统用户omm登录数据库主节点。 +2. 连接数据库。 + + 数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。 + + 执行如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + 其中postgres为需要连接的数据库名称,8000为数据库主节点的端口号。请根据实际情况替换。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + omm用户是管理员用户,因此系统显示“DBNAME=\#”。若使用普通用户身份登录和连接数据库,系统显示“DBNAME=\>”。 + + “Non-SSL connection”表示未使用SSL方式连接数据库。如果需要高安全性时,请使用SSL连接。 + +3. 首次登录需要修改密码。原始密码为安装openGauss数据库手动输入的密码,具体请参见《安装指南》中“安装openGauss \> 执行安装”章节,此处需将原始密码修改为自定义的密码,例如Mypwd123,命令如下: + + ``` + postgres=# ALTER ROLE omm IDENTIFIED BY 'Mypwd123' REPLACE 'XuanYuan@2012'; + ``` + +4. 退出数据库。 + + ``` + postgres=# \q + ``` + + +## 使用gsql远程连接 + +gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何安装gsql客户端,使用gsql客户端连接数据库,更多配置请参见openGauss产品文档。 + +### 前提条件 + +已确认连接信息。 + +### 通过gs\_guc配置白名单 + +1. 以操作系统用户omm登录数据库主节点。 +2. 配置客户端认证方式,允许客户端以“jack”用户连接到本机,此处远程连接禁止使用“omm”用户(即数据库初始化用户)。 + + 例如,下面示例中配置允许IP地址为10.10.0.30的客户端访问本机。 + + ``` + gs_guc set -N all -I all -h "host all jack 10.10.0.30/32 sha256" + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 使用“jack”用户前,需先本地连接数据库,并在数据库中使用如下语句建立“jack”用户: + > ``` + > postgres=# CREATE USER jack PASSWORD 'Test@123'; + > ``` + >- -N all表示openGauss的所有主机。 + >- -I all表示主机的所有实例。 + >- -h表示指定需要在“pg\_hba.conf”增加的语句。 + >- all表示允许客户端连接到任意的数据库。 + >- jack表示连接数据库的用户。 + >- 10.10.0.30/32表示只允许IP地址为10.10.0.30的主机连接。此处的IP地址不能为openGauss内的IP,在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255 + >- sha256表示连接时jack用户的密码使用sha256算法加密。 + + 这条命令在数据库主节点实例对应的“pg\_hba.conf”文件中添加了一条规则,用于对连接数据库主节点的客户端进行鉴定。 + + “pg\_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见《开发者指南》中“管理数据库安全>客户端接入认证>配置文件参考“章节。 + + ``` + local DATABASE USER METHOD [OPTIONS] + host DATABASE USER ADDRESS METHOD [OPTIONS] + hostssl DATABASE USER ADDRESS METHOD [OPTIONS] + hostnossl DATABASE USER ADDRESS METHOD [OPTIONS] + ``` + + 因为认证时系统是为每个连接请求顺序检查“pg\_hba.conf”里的记录的,所以这些记录的顺序是非常关键的。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >在配置“pg\_hba.conf”文件时,请依据通讯需求按照格式内容从上至下配置记录,优先级高的需求需要配置在前面。openGauss和扩容配置的IP优先级最高,用户手动配置的IP请放在这二者之后,如果已经进行的客户配置和扩容节点的IP在同一网段,请在扩容前删除,扩容成功后再进行配置。 + + 因此对于认证规则的配置建议如下: + + - 靠前的记录有比较严格的连接参数和比较弱的认证方法。 + - 靠后的记录有比较宽松的连接参数和比较强的认证方法。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 一个用户要想成功连接到特定的数据库,不仅需要通过pg\_hba.conf中的规则检查,还必须要有该数据库上的CONNECT权限。如果希望控制某些用户只能连接到指定数据库,赋予/撤销CONNECT权限通常比在pg\_hba.conf中设置规则更为简单。 + >- 对应openGauss外部客户端连接,trust为不安全的认证方式,请将认证方式设置为sha256。 + + +### 安装gsql客户端并连接数据库 + +在客户端机器上,上传客户端工具包并配置gsql的执行环境变量。 + +1. 以root用户登录客户端机器。 +2. 创建“/tmp/tools”目录。 + + ``` + mkdir /tmp/tools + ``` + +3. 获取软件安装包中的“openGauss-1.0.0-openEuler-64bit-Libpq.tar.gz”上传到“/tmp/tools”路径下。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 软件包相对位置为安装时所放位置,根据实际情况填写。 + >- 不同的操作系统,工具包文件名称会有差异。请根据实际的操作系统类型选择对应的工具包。 + +4. 解压文件。 + + ``` + cd /tmp/tools + tar -zxvf openGauss-1.0.0-openEuler-64bit-Libpq.tar.gz + ``` + +5. 登录数据库主节点所在的服务器,拷贝数据库安装目录下的bin目录到客户端主机的“/tmp/tools”路径下,随后继续登录客户端主机执行步骤6操作。 + + ``` + scp -r /opt/huawei/install/app/bin root@10.10.0.30:/tmp/tools + ``` + + 其中,/opt/huawei/install/app为clusterconfig.xml文件中配置的\{gaussdbAppPath\}路径,10.10.0.30为客户端主机ip。 + +6. 设置环境变量。 + + 打开“\~/.bashrc”文件。 + + ``` + vi ~/.bashrc + ``` + + 在其中输入如下内容后,使用“:wq!”命令保存并退出。 + + ``` + export PATH=/tmp/tools/bin:$PATH + export LD_LIBRARY_PATH=/tmp/tools/lib:$LD_LIBRARY_PATH + ``` + +7. 使环境变量配置生效。 + + ``` + source ~/.bashrc + ``` + +8. 连接数据库。 + + 数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。 + + ``` + gsql -d postgres -h 10.10.0.11 -U jack -p 8000 -W Test@123 + ``` + + postgres为需要连接的数据库名称,10.10.0.11为数据库主节点所在的服务器IP地址,jack为连接数据库的用户,8000为数据库主节点的端口号,Test@123为连接数据库用户jack的密码。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 连接openGauss的机器与openGauss不在同一网段时,-h指定的IP地址应为Manager界面上所设的coo.cooListenIp2(应用访问IP)的取值。 + >- 禁止使用omm用户进行远程连接数据库。 + + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\346\234\254\345\234\260\350\277\236\346\216\245.md" "b/content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\346\234\254\345\234\260\350\277\236\346\216\245.md" deleted file mode 100644 index d10ca8b34..000000000 --- "a/content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\346\234\254\345\234\260\350\277\236\346\216\245.md" +++ /dev/null @@ -1,54 +0,0 @@ -# 使用gsql本地连接 - -gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参考gsql。 - -## 注意事项 - -缺省情况下,客户端连接数据库后处于空闲状态时会根据参数session\_timeout的默认值自动断开连接。如果要关闭超时设置,设置参数session\_timeout为0即可。 - -## 前提条件 - -已确认连接信息。 - -## 本地连接数据库 - -1. 以操作系统用户omm登录数据库主节点。 -2. 连接数据库。 - - 数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。 - - 执行如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - 其中postgres为需要连接的数据库名称,8000为数据库主节点的端口号。请根据实际情况替换。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - omm用户是管理员用户,因此系统显示“DBNAME=\#”。若使用普通用户身份登录和连接数据库,系统显示“DBNAME=\>”。 - - “Non-SSL connection”表示未使用SSL方式连接数据库。如果需要高安全性时,请使用SSL连接。 - -3. 首次登录需要修改密码。原始密码为安装openGauss数据库手动输入的密码,具体请参见《安装指南》中“安装openGauss \> 执行安装”章节,此处需将原始密码修改为自定义的密码,例如Mypwd123,命令如下: - - ``` - postgres=# ALTER ROLE omm IDENTIFIED BY 'Mypwd123' REPLACE 'XuanYuan@2012'; - ``` - -4. 退出数据库。 - - ``` - postgres=# \q - ``` - - diff --git "a/content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\350\277\234\347\250\213\350\277\236\346\216\245.md" "b/content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\350\277\234\347\250\213\350\277\236\346\216\245.md" deleted file mode 100644 index a5bcdb9ee..000000000 --- "a/content/zh/docs/Quickstart/\344\275\277\347\224\250gsql\350\277\234\347\250\213\350\277\236\346\216\245.md" +++ /dev/null @@ -1,126 +0,0 @@ -# 使用gsql远程连接 - -gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何安装gsql客户端,使用gsql客户端连接数据库,更多配置请参见openGauss产品文档。 - -## 前提条件 - -已确认连接信息。 - -## 通过gs\_guc配置白名单 - -1. 以操作系统用户omm登录数据库主节点。 -2. 配置客户端认证方式,允许客户端以“jack”用户连接到本机,此处远程连接禁止使用“omm”用户(即数据库初始化用户)。 - - 例如,下面示例中配置允许IP地址为10.10.0.30的客户端访问本机。 - - ``` - gs_guc set -N all -I all -h "host all jack 10.10.0.30/32 sha256" - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 使用“jack”用户前,需先本地连接数据库,并在数据库中使用如下语句建立“jack”用户: - > ``` - > postgres=# CREATE USER jack PASSWORD 'Test@123'; - > ``` - >- -N all表示openGauss的所有主机。 - >- -I all表示主机的所有实例。 - >- -h表示指定需要在“pg\_hba.conf”增加的语句。 - >- all表示允许客户端连接到任意的数据库。 - >- jack表示连接数据库的用户。 - >- 10.10.0.30/32表示只允许IP地址为10.10.0.30的主机连接。此处的IP地址不能为openGauss内的IP,在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255 - >- sha256表示连接时jack用户的密码使用sha256算法加密。 - - 这条命令在数据库主节点实例对应的“pg\_hba.conf”文件中添加了一条规则,用于对连接数据库主节点的客户端进行鉴定。 - - “pg\_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见《开发者指南》中“管理数据库安全>客户端接入认证>配置文件参考“章节。 - - ``` - local DATABASE USER METHOD [OPTIONS] - host DATABASE USER ADDRESS METHOD [OPTIONS] - hostssl DATABASE USER ADDRESS METHOD [OPTIONS] - hostnossl DATABASE USER ADDRESS METHOD [OPTIONS] - ``` - - 因为认证时系统是为每个连接请求顺序检查“pg\_hba.conf”里的记录的,所以这些记录的顺序是非常关键的。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >在配置“pg\_hba.conf”文件时,请依据通讯需求按照格式内容从上至下配置记录,优先级高的需求需要配置在前面。openGauss和扩容配置的IP优先级最高,用户手动配置的IP请放在这二者之后,如果已经进行的客户配置和扩容节点的IP在同一网段,请在扩容前删除,扩容成功后再进行配置。 - - 因此对于认证规则的配置建议如下: - - - 靠前的记录有比较严格的连接参数和比较弱的认证方法。 - - 靠后的记录有比较宽松的连接参数和比较强的认证方法。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 一个用户要想成功连接到特定的数据库,不仅需要通过pg\_hba.conf中的规则检查,还必须要有该数据库上的CONNECT权限。如果希望控制某些用户只能连接到指定数据库,赋予/撤销CONNECT权限通常比在pg\_hba.conf中设置规则更为简单。 - >- 对应openGauss外部客户端连接,trust为不安全的认证方式,请将认证方式设置为sha256。 - - -## 安装gsql客户端并连接数据库 - -在客户端机器上,上传客户端工具包并配置gsql的执行环境变量。 - -1. 以root用户登录客户端机器。 -2. 创建“/tmp/tools”目录。 - - ``` - mkdir /tmp/tools - ``` - -3. 获取软件安装包中的“openGauss-1.0.0-openEuler-64bit-Libpq.tar.gz”上传到“/tmp/tools”路径下。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 软件包相对位置为安装时所放位置,根据实际情况填写。 - >- 不同的操作系统,工具包文件名称会有差异。请根据实际的操作系统类型选择对应的工具包。 - -4. 解压文件。 - - ``` - cd /tmp/tools - tar -zxvf openGauss-1.0.0-openEuler-64bit-Libpq.tar.gz - ``` - -5. 登录数据库主节点所在的服务器,拷贝数据库安装目录下的bin目录到客户端主机的“/tmp/tools”路径下,随后继续登录客户端主机执行步骤6操作。 - - ``` - scp -r /opt/huawei/install/app/bin root@10.10.0.30:/tmp/tools - ``` - - 其中,/opt/huawei/install/app为clusterconfig.xml文件中配置的\{gaussdbAppPath\}路径,10.10.0.30为客户端主机ip。 - -6. 设置环境变量。 - - 打开“\~/.bashrc”文件。 - - ``` - vi ~/.bashrc - ``` - - 在其中输入如下内容后,使用“:wq!”命令保存并退出。 - - ``` - export PATH=/tmp/tools/bin:$PATH - export LD_LIBRARY_PATH=/tmp/tools/lib:$LD_LIBRARY_PATH - ``` - -7. 使环境变量配置生效。 - - ``` - source ~/.bashrc - ``` - -8. 连接数据库。 - - 数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。 - - ``` - gsql -d postgres -h 10.10.0.11 -U jack -p 8000 -W Test@123 - ``` - - postgres为需要连接的数据库名称,10.10.0.11为数据库主节点所在的服务器IP地址,jack为连接数据库的用户,8000为数据库主节点的端口号,Test@123为连接数据库用户jack的密码。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 连接openGauss的机器与openGauss不在同一网段时,-h指定的IP地址应为Manager界面上所设的coo.cooListenIp2(应用访问IP)的取值。 - >- 禁止使用omm用户进行远程连接数据库。 - - diff --git "a/content/zh/docs/Quickstart/\344\277\256\346\224\271\346\223\215\344\275\234\347\263\273\347\273\237\351\205\215\347\275\256.md" "b/content/zh/docs/Quickstart/\344\277\256\346\224\271\346\223\215\344\275\234\347\263\273\347\273\237\351\205\215\347\275\256.md" deleted file mode 100644 index 19db74cb7..000000000 --- "a/content/zh/docs/Quickstart/\344\277\256\346\224\271\346\223\215\344\275\234\347\263\273\347\273\237\351\205\215\347\275\256.md" +++ /dev/null @@ -1,143 +0,0 @@ -# 修改操作系统配置 - -## 关闭操作系统防火墙 - -为了在防火墙开启的状态下,确保openGauss的正常使用。用户需要将同openGauss相关的服务、协议、IP以及端口添加到openGauss各主机的防火墙白名单中。 - -以openEuler操作系统为例,假设openGauss信息如[表 openGauss信息](#zh-cn_topic_0249784574_zh-cn_topic_0241802566_zh-cn_topic_0085434636_zh-cn_topic_0059782018_table4312170510523)所示。 - -**表 1** openGauss信息 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

主机名称

-

内部IP

-

外部IP

-

plat1

-

192.168.0.11

-

10.10.0.11

-

plat2

-

192.168.0.12

-

10.10.0.12

-

plat3

-

192.168.0.13

-

10.10.0.13

-

plat4

-

192.168.0.14

-

10.10.0.14

-

管理网络

-

-

-

10.10.64.236

-
- -**操作步骤** - -目前仅支持在防火墙关闭的状态下进行安装。 - -1. 修改/etc/selinux/config文件中的“SELINUX“值为“disabled“。 - 1. 使用VIM打开config文件。 - - ``` - vim /etc/selinux/config - ``` - - 2. 修改“SELINUX“的值“disabled“。 - - ``` - SELINUX=disabled - ``` - -2. 重新启动操作系统。 - - ``` - reboot - ``` - -3. 检查防火墙是否关闭。 - - ``` - systemctl status firewalld - ``` - - 若防火墙未关闭,请执行[4](#zh-cn_topic_0249784574_li17330102819394); - - 若防火墙已关闭,则无需再关闭防火墙。 - -4. 关闭防火墙。 - - ``` - systemctl disable firewalld.service - systemctl stop firewalld.service - ``` - -5. 在其他主机上重复步骤1到步骤4。 - -## 设置字符集参数 - -将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加"export LANG=XXX"(XXX为Unicode编码)。 - -``` -vim /etc/profile -``` - -## 设置时区和时间 - -将各数据库节点的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。 - -``` -cp /usr/share/zoneinfo/$地区/$时区 /etc/localtime -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->_$地区/$时区为需要设置时区的信息,例如:Asia_/Shanghai。 - -使用date -s命令将各主机的时间设置为统一时间,举例如下。 - -``` -date -s Mon May 11 16:42:11 CST 2020 -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->可以通过date命令查询主机时区。 - -## 关闭swap交换内存 - -在各数据库节点上,使用swapoff -a命令将交换内存关闭。 - -``` -swapoff -a -``` - -## 设置网卡MTU值 - -将各数据库节点的网卡MTU值设置为相同大小。对于X86,MTU值推荐1500;对于ARM,MTU值推荐8192。 - -``` -ifconfig 网卡编号 mtu 值 -``` - diff --git "a/content/zh/docs/Quickstart/\345\207\206\345\244\207\345\256\211\350\243\205\347\224\250\346\210\267\345\217\212\347\216\257\345\242\203.md" "b/content/zh/docs/Quickstart/\345\207\206\345\244\207\345\256\211\350\243\205\347\224\250\346\210\267\345\217\212\347\216\257\345\242\203.md" deleted file mode 100644 index 5946717f8..000000000 --- "a/content/zh/docs/Quickstart/\345\207\206\345\244\207\345\256\211\350\243\205\347\224\250\346\210\267\345\217\212\347\216\257\345\242\203.md" +++ /dev/null @@ -1,298 +0,0 @@ -# 准备安装用户及环境 - -创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs\_preinstall准备好安装用户及环境。 - -安装前置脚本gs\_preinstall可以协助用户自动完成如下的安装环境准备工作: - -- 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见[配置操作系统参数](配置操作系统参数.md#ZH-CN_TOPIC_0270171707)。 -- 自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。 -- openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。 -- 读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。 - -## 前提条件 - -- 已完成[安装准备](安装准备.md#ZH-CN_TOPIC_0270171690)的所有任务。 - -## 注意事项 - -- 用户需要检查上层目录权限,保证安装用户对安装包和配置文件目录读写执行的权限。 -- xml文件中各主机的名称与IP映射配置正确。 -- 只能使用root用户执行gs\_preinstall命令。 - -## 操作步骤 - -1. 以root用户登录待安装openGauss的任意主机,并按规划创建存放安装包的目录。 - - ``` - mkdir -p /opt/software/openGauss - chmod 755 -R /opt/software - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 不建议把安装包的存放目录规划到openGauss用户的家目录或其子目录下,可能导致权限问题。 - >- openGauss用户须具有/opt/software/openGauss目录的读写权限。 - -2. 将安装包“openGauss-x.x.x-openEULER-64bit.tar.gz”和配置文件“cluster\_config.xml”都上传至上一步所创建的目录中。 -3. 在安装包所在的目录下,解压安装包openGauss-x.x.x-openEULER-64bit.tar.gz。安装包解压后,会在/opt/software/openGauss路径下自动生成script子目录,并且在script目录下生成gs\_preinstall等各种OM工具脚本。 - - ``` - cd /opt/software/openGauss - tar -zxvf openGauss-x.x.x-openEULER-64bit.tar.gz - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 在执行前置脚本gs\_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。 - >- 运行前置脚本gs\_preinstall准备安装环境时,脚本内部会自动将openGauss配置文件、解压后的安装包同步拷贝到其余服务器的相同目录下。 - >- 在执行前置或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。 - -4. 进入到工具脚本存放目录下。 - - ``` - cd /opt/software/openGauss/script - ``` - -5. 如果是openEuler的操作系统,执行如下命令打开performance.sh文件,用\#注释sysctl -w vm.min\_free\_kbytes=112640 &\> /dev/null,键入“ESC”键进入指令模式,执行**:wq**保存并退出修改。 - - ``` - vi /etc/profile.d/performance.sh - ``` - -6. 为确保openssl版本正确,执行预安装前请加载安装包中lib库。执行命令如下,其中_\{packagePath\}_为用户安装包放置的路径,本示例中为/opt/software/openGauss。 - - ``` - export LD_LIBRARY_PATH={packagePath}/script/gspylib/clib:$LD_LIBRARY_PATH - ``` - -7. 为确保成功安装,检查 hostname 与 /etc/hostname 是否一致。预安装过程中,会对hostname进行检查。 -8. 使用gs\_preinstall准备好安装环境。若为共用环境需加入--sep-env-file=ENVFILE参数分离环境变量,避免与其他用户相互影响,ENVFILE为用户自行指定的环境变量分离文件的路径。 - - 采用交互模式执行前置,并在执行过程中自动创建root用户互信和openGauss用户互信: - - ``` - ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml - ``` - - omm为数据库管理员(也是运行openGauss的操作系统用户),dbgrp为运行openGauss的操作系统用户的群组名称,/opt/software/openGauss/cluster\_config.xml为openGauss配置文件路径。在执行过程中,用户根据提示选择是否创建互信,并输入root用户或openGauss用户的密码。 - - - 不允许创建root用户互信时,创建omm用户,在各主机上执行本地模式前置,然后用户手动创建openGauss用户互信:如果预安装指定-L参数,预安装前需手动将所有节点的主机名和ip映射关系,写入各个主机的/etc/hosts,并在每个映射关系后边加入注释内容:\#Gauss OM IP Hosts Mapping。 - 1. 执行下面命令准备安装环境。 - - ``` - cd /opt/software/openGauss/script - ./gs_preinstall -U omm -G dbgrp -L -X /opt/software/openGauss/cluster_config.xml - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >此操作需要在每台主机上执行该命令。 - - - - 采用非交互模式执行前置: - 1. 参考[手工建立互信](手工建立互信.md#ZH-CN_TOPIC_0270171706)章节手工建立root用户互信和openGauss用户互信。 - 2. 执行下面命令准备安装环境。 - - ``` - cd /opt/software/openGauss/script - ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --non-interactive - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 此模式要求用户确保在执行前,已经建立了各节点root用户互信和openGauss用户互信。 - >- root用户互信可能会存在安全隐患,因此建议用户在执行完安装后,立即删除各主机上root用户的互信。 - - - - -## 示例 - -执行前置脚本: - -``` -plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml -Parsing the configuration file. -Successfully parsed the configuration file. -Installing the tools on the local node. -Successfully installed the tools on the local node. -Are you sure you want to create trust for root (yes/no)? yes -Please enter password for root. -Password: -Creating SSH trust for the root permission user. -Checking network information. -All nodes in the network are Normal. -Successfully checked network information. -Creating SSH trust. -Creating the local key file. -Successfully created the local key files. -Appending local ID to authorized_keys. -Successfully appended local ID to authorized_keys. -Updating the known_hosts file. -Successfully updated the known_hosts file. -Appending authorized_key on the remote node. -Successfully appended authorized_key on all remote node. -Checking common authentication file content. -Successfully checked common authentication content. -Distributing SSH trust file to all node. -Successfully distributed SSH trust file to all node. -Verifying SSH trust on all hosts. -Successfully verified SSH trust on all hosts. -Successfully created SSH trust. -Successfully created SSH trust for the root permission user. -Setting pssh path -Successfully set core path. -Distributing package. -Begin to distribute package to tool path. -Successfully distribute package to tool path. -Begin to distribute package to package path. -Successfully distribute package to package path. -Successfully distributed package. -Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes -Please enter password for cluster user. -Password: -Please enter password for cluster user again. -Password: -Successfully created [omm] user on all nodes. -Preparing SSH service. -Successfully prepared SSH service. -Installing the tools in the cluster. -Successfully installed the tools in the cluster. -Checking hostname mapping. -Successfully checked hostname mapping. -Creating SSH trust for [omm] user. -Checking network information. -All nodes in the network are Normal. -Successfully checked network information. -Creating SSH trust. -Creating the local key file. -Successfully created the local key files. -Appending local ID to authorized_keys. -Successfully appended local ID to authorized_keys. -Updating the known_hosts file. -Successfully updated the known_hosts file. -Appending authorized_key on the remote node. -Successfully appended authorized_key on all remote node. -Checking common authentication file content. -Successfully checked common authentication content. -Distributing SSH trust file to all node. -Successfully distributed SSH trust file to all node. -Verifying SSH trust on all hosts. -Successfully verified SSH trust on all hosts. -Successfully created SSH trust. -Successfully created SSH trust for [omm] user. -Checking OS software. -Successfully check os software. -Checking OS version. -Successfully checked OS version. -Creating cluster's path. -Successfully created cluster's path. -Setting SCTP service. -Successfully set SCTP service. -Set and check OS parameter. -Setting OS parameters. -Successfully set OS parameters. -Preparing CRON service. -Successfully prepared CRON service. -Setting user environmental variables. -Successfully set user environmental variables. -Setting the dynamic link library. -Successfully set the dynamic link library. -Setting Core file -Successfully set core path. -Setting pssh path -Successfully set pssh path. -Set ARM Optimization. -No need to set ARM Optimization. -Fixing server package owner. -Setting finish flag. -Successfully set finish flag. -Preinstallation succeeded. -``` - -如果主备机的root用户密码不同,且不能统一修改为一致时,执行前置脚本本地安装模式: - -``` -plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -L -X /opt/software/openGauss/cluster_config.xml -Parsing the configuration file. -Successfully parsed the configuration file. -Installing the tools on the local node. -Successfully installed the tools on the local node. -Checking OS version. -Successfully checked OS version. -Creating cluster's path. -Successfully created cluster's path. -Setting SCTP service. -Successfully set SCTP service. -Set and check OS parameter. -Setting OS parameters. -Successfully set OS parameters. -Warning: Installation environment contains some warning messages. -Please get more details by "/home/package/r8c00/script/gs_checkos -i A -h SIA1000068990". -Set and check OS parameter completed. -Preparing CRON service. -Successfully prepared CRON service. -Preparing SSH service. -Successfully prepared SSH service. -Setting user environmental variables. -Successfully set user environmental variables. -Configuring alarms on the cluster nodes. -Successfully configured alarms on the cluster nodes. -Setting the dynamic link library. -Successfully set the dynamic link library. -Setting Cgroup. -Successfully set Cgroup. -Setting finish flag. -Successfully set finish flag. -Preinstallation succeeded. -``` - -以非交互模式执行前置: - -``` -plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --non-interactive -Parsing the configuration file. -Successfully parsed the configuration file. -Installing the tools on the local node. -Successfully installed the tools on the local node. -Distributing package. -Begin to distribute package to tool path. -Successfully distribute package to tool path. -Begin to distribute package to package path. -Successfully distribute package to package path. -Successfully distributed package. -Installing the tools in the cluster. -Successfully installed the tools in the cluster. -Checking hostname mapping. -Successfully checked hostname mapping. -Checking OS version. -Successfully checked OS version. -Creating cluster's path. -Successfully created cluster's path. -Setting SCTP service. -Successfully set SCTP service. -Set and check OS parameter. -Setting OS parameters. -Successfully set OS parameters. -Set and check OS parameter completed. -Preparing CRON service. -Successfully prepared CRON service. -Preparing SSH service. -Successfully prepared SSH service. -Setting user environmental variables. -Successfully set user environmental variables. -Configuring alarms on the cluster nodes. -Successfully configured alarms on the cluster nodes. -Setting the dynamic link library. -Successfully set the dynamic link library. -Setting Cgroup. -Successfully set Cgroup. -Set ARM Optimization. -Successfully set ARM Optimization. -Setting finish flag. -Successfully set finish flag. -Preinstallation succeeded. -``` - -## 错误排查 - -如果准备安装环境失败请根据openGauss日志目录“$GAUSSLOG/om”下的“gs\_preinstall-YYYY-MM-DD\_HHMMSS.log”和“gs\_local-YYYY-MM-DD\_HHMMSS.log”中的日志信息排查错误。例如配置文件中“gaussdbLogPath”参数指定的路径为“/var/log/gaussdb”,则“$GAUSSLOG/om”路径为“/var/log/gaussdb/omm/om”,omm用户为运行openGauss的用户。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->准备安装用户及环境的过程中会使用root添加定时任务用于定时巡检和上报。 - diff --git "a/content/zh/docs/Quickstart/\345\207\206\345\244\207\350\275\257\347\241\254\344\273\266\345\256\211\350\243\205\347\216\257\345\242\203.md" "b/content/zh/docs/Quickstart/\345\207\206\345\244\207\350\275\257\347\241\254\344\273\266\345\256\211\350\243\205\347\216\257\345\242\203.md" index 45173c7bb..d68aa7418 100644 --- "a/content/zh/docs/Quickstart/\345\207\206\345\244\207\350\275\257\347\241\254\344\273\266\345\256\211\350\243\205\347\216\257\345\242\203.md" +++ "b/content/zh/docs/Quickstart/\345\207\206\345\244\207\350\275\257\347\241\254\344\273\266\345\256\211\350\243\205\347\216\257\345\242\203.md" @@ -1,11 +1,360 @@ # 准备软硬件安装环境 本章节描述安装前需要进行的环境准备。 + + +- [准备软硬件安装环境](#准备软硬件安装环境a-namezh-cn_topic_0270171693a) + - [软硬件环境要求](#软硬件环境要求a-namezh-cn_topic_0270171694a) + - [硬件环境要求](#硬件环境要求a-namezh-cn_topic_0249784577_zh-cn_topic_0241802565_zh-cn_topic_0085434629_zh-cn_topic_0059782022_sdd36768784254b8ba03c77c86b831caea) + - [软件环境要求](#软件环境要求a-namezh-cn_topic_0249784577_zh-cn_topic_0241802565_zh-cn_topic_0085434629_zh-cn_topic_0059782022_s3124e90db74142ddaf11e2e8fd69cadba) + - [软件依赖要求](#软件依赖要求a-namezh-cn_topic_0249784577_section5459315183816a) + - [修改操作系统配置](#修改操作系统配置a-namezh-cn_topic_0270171695a) + - [关闭操作系统防火墙](#关闭操作系统防火墙a-namezh-cn_topic_0249784574_section178235734314a) + - [设置字符集参数](#设置字符集参数a-namezh-cn_topic_0249784574_section17609182719467a) + - [设置时区和时间](#设置时区和时间a-namezh-cn_topic_0249784574_section2058219344711a) + - [关闭swap交换内存](#关闭swap交换内存a-namezh-cn_topic_0249784574_section1868124934810a) + - [设置网卡MTU值](#设置网卡mtu值a-namezh-cn_topic_0249784574_section23866245014a) + - [设置root用户远程登录](#设置root用户远程登录a-namezh-cn_topic_0270171696a) + + + +## 软硬件环境要求 -- **[软硬件环境要求](软硬件环境要求.md)** 介绍openGauss的软硬件环境要求。建议部署openGauss的各服务器具有等价的软硬件配置。 -- **[修改操作系统配置](修改操作系统配置.md)** -- **[设置root用户远程登录](设置root用户远程登录.md)** +### 硬件环境要求 + +[表1](#zh-cn_topic_0249784577_zh-cn_topic_0241802565_zh-cn_topic_0085434629_zh-cn_topic_0059782022_t62cd0eed17004265b1b8ad98f302a4bc)列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。 + +**表 1** 硬件环境要求 + + + + + + + + + + + + + + + + + + + +

项目

+

配置描述

+

内存

+

功能调试建议32GB以上。

+

性能测试和商业部署时,单实例部署建议128GB以上。

+

复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。

+

CPU

+

功能调试最小1×8 核 2.0GHz。

+

性能测试和商业部署时,单实例部署建议1×16核 2.0GHz。

+

CPU超线程和非超线程两种模式都支持。但是,openGauss各节点的设置需保持一致。

+

硬盘

+

用于安装openGauss的硬盘需最少满足如下要求:

+
  • 至少1GB用于安装openGauss的应用程序包。
  • 每个主机需大约300MB用于元数据存储。
  • 预留70%以上的磁盘剩余空间用于数据存储。
+

建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。

+

openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。

+

网络要求

+

300兆以上以太网。

+

建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。

+

openGauss网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致openGauss工作异常。

+
+ +### 软件环境要求 + +**表 2** 软件环境要求 + + + + + + + + + + + + + + + + + + + +

软件类型

+

配置描述

+

Linux操作系统

+

openEuler 20.3LTS和CentOS 7.6

+

Linux文件系统

+

剩余inode个数 > 15亿(推荐)

+

工具

+

bzip2

+

Python

+
  • openEuler:支持Python 3.7.X
  • CentOS:支持Python 3.6.X
+
+ +### 软件依赖要求 + +openGauss的软件依赖要求如[表 软件依赖要求](#zh-cn_topic_0249784577_table1212531681911)所示。 + +建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。 + +**表 3** 软件依赖要求 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

所需软件

+

建议版本

+

libaio-devel

+

建议版本:0.3.109-13

+

flex

+

要求版本:2.5.31 以上

+

bison

+

建议版本:2.7-4

+

ncurses-devel

+

建议版本:5.9-13.20130511

+

glibc.devel

+

建议版本:2.17-111

+

patch

+

建议版本:2.7.1-10

+

lsb_release

+

建议版本:4.1

+
+ +## 修改操作系统配置 + +### 关闭操作系统防火墙 + +为了在防火墙开启的状态下,确保openGauss的正常使用。用户需要将同openGauss相关的服务、协议、IP以及端口添加到openGauss各主机的防火墙白名单中。 + +以openEuler操作系统为例,假设openGauss信息如[表 openGauss信息](#zh-cn_topic_0249784574_zh-cn_topic_0241802566_zh-cn_topic_0085434636_zh-cn_topic_0059782018_table4312170510523)所示。 + +**表 1** openGauss信息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

主机名称

+

内部IP

+

外部IP

+

plat1

+

192.168.0.11

+

10.10.0.11

+

plat2

+

192.168.0.12

+

10.10.0.12

+

plat3

+

192.168.0.13

+

10.10.0.13

+

plat4

+

192.168.0.14

+

10.10.0.14

+

管理网络

+

-

+

10.10.64.236

+
+ +**操作步骤** + +目前仅支持在防火墙关闭的状态下进行安装。 + +1. 修改/etc/selinux/config文件中的“SELINUX“值为“disabled“。 + 1. 使用VIM打开config文件。 + + ``` + vim /etc/selinux/config + ``` + + 2. 修改“SELINUX“的值“disabled“。 + + ``` + SELINUX=disabled + ``` + +2. 重新启动操作系统。 + + ``` + reboot + ``` + +3. 检查防火墙是否关闭。 + + ``` + systemctl status firewalld + ``` + + 若防火墙未关闭,请执行[4](#zh-cn_topic_0249784574_li17330102819394); + + 若防火墙已关闭,则无需再关闭防火墙。 + +4. 关闭防火墙。 + + ``` + systemctl disable firewalld.service + systemctl stop firewalld.service + ``` + +5. 在其他主机上重复步骤1到步骤4。 + +### 设置字符集参数 + +将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加"export LANG=XXX"(XXX为Unicode编码)。 + +``` +vim /etc/profile +``` + +### 设置时区和时间 + +将各数据库节点的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。 + +``` +cp /usr/share/zoneinfo/$地区/$时区 /etc/localtime +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>_$地区/$时区为需要设置时区的信息,例如:Asia_/Shanghai。 + +使用date -s命令将各主机的时间设置为统一时间,举例如下。 + +``` +date -s Mon May 11 16:42:11 CST 2020 +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>可以通过date命令查询主机时区。 + +### 关闭swap交换内存 + +在各数据库节点上,使用swapoff -a命令将交换内存关闭。 + +``` +swapoff -a +``` + +### 设置网卡MTU值 + +将各数据库节点的网卡MTU值设置为相同大小。对于X86,MTU值推荐1500;对于ARM,MTU值推荐8192。 + +``` +ifconfig 网卡编号 mtu 值 +``` + +## 设置root用户远程登录 + 在openGauss安装时需要root帐户远程登录访问权限,本章介绍如何设置使用root用户远程登录。 +1. 修改PermitRootLogin配置,允许用户远程登录。 + 1. 打开sshd\_config文件。 + + ``` + vim /etc/ssh/sshd_config + ``` + + 2. 修改权限配置,可以使用以下两种方式实现: + - 注释掉“PermitRootLogin no”。 + + ``` + #PermitRootLogin no + ``` + + - 将“PermitRootLogin“改为“yes“。 + + ``` + PermitRootLogin yes + ``` + + 3. 执行**:wq**保存并退出编辑页面。 + +2. 修改Banner配置,去掉连接到系统时,系统提示的欢迎信息。欢迎信息会干扰安装时远程操作的返回结果,影响安装正常执行。 + 1. 编辑sshd\_config文件。 + + ``` + vim /etc/ssh/sshd_config + ``` + + 2. 修改Banner配置,注释掉“Banner”所在的行。 + + ``` + #Banner XXXX + ``` + + 3. 执行**:wq**保存并退出编辑页面。 + +3. 使用如下命令使设置生效。 + + ``` + service sshd restart + ``` + + >![](public_sys-resources/icon-caution.gif) **注意:** + >若执行命令后返回提示信息“Redirecting to /bin/systemctl restart sshd.service”,请执行命令:/bin/systemctl restart sshd.service。 + +4. 以root用户身份重新登录。 + + ``` + ssh xxx.xxx.xxx.xxx + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >xxx.xxx.xxx.xxx为安装openGauss环境的ip。 + + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\345\210\233\345\273\272XML\351\205\215\347\275\256\346\226\207\344\273\266.md" "b/content/zh/docs/Quickstart/\345\210\233\345\273\272XML\351\205\215\347\275\256\346\226\207\344\273\266.md" index 1aafb7b58..e46bdf161 100644 --- "a/content/zh/docs/Quickstart/\345\210\233\345\273\272XML\351\205\215\347\275\256\346\226\207\344\273\266.md" +++ "b/content/zh/docs/Quickstart/\345\210\233\345\273\272XML\351\205\215\347\275\256\346\226\207\344\273\266.md" @@ -4,12 +4,355 @@ 下面以一主一备的方案为例,说明如何创建XML配置文件。 -- **[配置数据库名称及各项目录](配置数据库名称及各项目录.md)** + -- **[配置Host基本信息](配置Host基本信息.md)** +- [创建XML配置文件](#创建xml配置文件a-namezh-cn_topic_0270171699a) + - [配置数据库名称及各项目录](#配置数据库名称及各项目录a-namezh-cn_topic_0270171700a) + - [配置Host基本信息](#配置host基本信息a-namezh-cn_topic_0270171701a) + - [配置数据库主节点信息](#配置数据库主节点信息a-namezh-cn_topic_0270171702a) + - [示例](#示例a-namezh-cn_topic_0270171703a) + - [单节点配置文件](#单节点配置文件a-namezh-cn_topic_0249784528_section1698454873416a) + - [一主一备配置文件](#一主一备配置文件a-namezh-cn_topic_0249784528_section946242113712a) -- **[配置数据库主节点信息](配置数据库主节点信息.md)** + -- **[示例](示例.md)** +## 配置数据库名称及各项目录 +在script/gspylib/etc/conf/cluster\_config\_template.xml获取XML文件模板。加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + +>![](public_sys-resources/icon-notice.gif) **须知:** +>- “/opt/huawei/install/om”存放互信等工具,避免权限问题,不要把实例数据目录放在此目录下。 +>- 安装目录和数据目录需为空或者不存在,否则可能导致安装失败。 +>- 在对数据库节点的实例进行具体配置时,需确保配置的目录之间不相互耦合。即各个配置目录不关联,删除其中任意一个目录,不会级联删除其它目录。如gaussdbAppPath为"/opt/huawei/install/app",gaussdbLogPath为"/opt/huawei/install/app/omm"。当gaussdbAppPath目录被删除时,会级联删除gaussdbLogPath目录,从而引起其它问题。 +>- 若需要安装脚本自动创建安装用户时各配置的目录需保证不与系统创建的默认用户目录耦合关联。 +>- 配置openGauss路径和实例路径时,路径中不能包含"|",";","&","$","<","\>","\`","\\\\","'","\\"","\{","\}","\(","\)","\[","\]","\~","\*","?"特殊字符。 +>- 配置数据库节点名称时,请通过hostname命令获取数据库节点的主机名称,替换示例中的**node1\_hostname**,**node2\_hostname**。 + +**表 1** 参数说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

实例类型

+

参数

+

说明

+

整体信息

+

clusterName

+

openGauss名称。

+

nodeNames

+

openGauss中主机名称。

+

backIp1s

+

主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通讯。

+

gaussdbAppPath

+

openGauss程序安装目录。此目录应满足如下要求:

+
  • 磁盘空间>1GB
  • 与数据库所需其它路径相互独立,没有包含关系。
+

gaussdbLogPath

+

openGauss运行日志和操作日志存储目录。此目录应满足如下要求:

+
  • 磁盘空间建议根据主机上的数据库节点数规划。数据库节点预留1GB空间的基础上,再适当预留冗余空间。
  • openGauss所需其它路径相互独立,没有包含关系。
+

此路径可选。不指定的情况下,openGauss安装时会默认指定“$GAUSSLOG/安装用户名”作为日志目录。

+

tmpdbPath

+

数据库临时文件存放目录。

+

若不配置tmpdbPath,默认存放在/opt/huawei/wisequery/perfadm_db目录下。

+

gaussdbToolPath

+

openGauss系统工具目录,主要用于存放互信工具等。此目录应满足如下要求:

+
  • 磁盘空间>100MB
  • 固定目录,与数据库所需其它目录相互独立,没有包含关系。
+

此目录可选。不指定的情况下,openGauss安装时会默认指定“/opt/huawei/wisequery”作为数据库系统工具目录。

+

corePath

+

openGauss core文件的指定目录。

+
+ +## 配置Host基本信息 + +>![](public_sys-resources/icon-note.gif) **说明:** +>每台Host服务器都必须有如下信息,如下示例以node1为例。 + +加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。 + +``` + + + + + + + + + + + + +``` + +**表 1** 参数说明 + + + + + + + + + + + + + + + + + + + + + + + + +

实例类型

+

参数

+

说明

+

整体信息

+

name

+

主机名称。

+

azName

+

指定azName(Available Zone Name),字符串(不能含有特殊字符),例如AZ1、AZ2、AZ3。

+

azPriority

+

指定azPriority的优先级。

+

backIp1

+

主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通讯。

+

sshIp1

+

设置SSH可信通道IP地址(外网IP)。若无外网,则可以不设置该选项或者同backIp1设置相同IP。

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>配置文件中所有IP参数(包含backIp、sshIp、listenIp等)均只支持配置一个IP。如果配置第二个IP参数,则不会读取第二个参数的配置值。 +>示例:xml配置文件中同时配置backIp1和backIp2参数: +>在解析配置文件时仅读取backIp1参数的配置值,不会读取backIp2参数的配置值。 +>``` +> +> +>``` + +## 配置数据库主节点信息 + +加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。 + +**数据库主节点配置以下信息。** + +``` + + + + + + + + +``` + +**表 1** 参数说明 + + + + + + + + + + + + + + + + + + + + + +

实例类型

+

参数

+

说明

+

DBnode

+

dataNum

+

当前主机上需要部署的数据库节点个数。

+

dataPortBase

+

数据库节点的基础端口号,默认值40000。

+

dataNode1

+

用于指定当前主机上的数据库节点的数据存储目录。此目录为数据库的数据存储目录。应规划到数据盘上。

+

dataNode1_syncNum

+

可选参数,用于指定当前集群中同步模式的节点数目。取值范围为0~数据库备机节点数。

+
+ +**表 2** 数据库实例数据目录 + + + + + + + + + + + + + +

实例名称

+

实例数据目录

+

主DBnode

+

/opt/huawei/install/data/xxx

+

其中,xxx为当前主DBnode的名称。

+

备DBnode

+

/opt/huawei/install/data/slaveX

+

其中,slaveX为当前备DBnode的名称。

+
+ +## 示例 + +### 单节点配置文件 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### 一主一备配置文件 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\346\225\260\346\215\256\345\272\223.md" "b/content/zh/docs/Quickstart/\345\210\233\345\273\272\346\225\260\346\215\256\345\272\223.md" deleted file mode 100644 index 1414541af..000000000 --- "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\346\225\260\346\215\256\345\272\223.md" +++ /dev/null @@ -1,78 +0,0 @@ -# 创建数据库 - -创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。 - -## 注意事项 - -- 只有拥有CREATEDB权限的用户才可以创建新数据库,系统管理员默认拥有此权限。 -- 不能在事务块中执行创建数据库语句。 -- 在创建数据库过程中,若出现类似“could not initialize database directory”的错误提示,可能是由于文件系统上数据目录的权限不足或磁盘满等原因引起。 - -## 语法格式 - -``` -CREATE DATABASE database_name - [ [ WITH ] { [ OWNER [=] user_name ] | - [ TEMPLATE [=] template ] | - [ ENCODING [=] encoding ] | - [ LC_COLLATE [=] lc_collate ] | - [ LC_CTYPE [=] lc_ctype ] | - [ DBCOMPATIBILITY [=] compatibilty_type ] | - [ TABLESPACE [=] tablespace_name ] | - [ CONNECTION LIMIT [=] connlimit ]}[...] ]; -``` - -## 示例 - -``` ---创建jim和tom用户。 -postgres=# CREATE USER jim PASSWORD 'Bigdata@123'; -postgres=# CREATE USER tom PASSWORD 'Bigdata@123'; - ---创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK)。 -postgres=# CREATE DATABASE music ENCODING 'GBK' template = template0; - ---创建数据库music2,并指定所有者为jim。 -postgres=# CREATE DATABASE music2 OWNER jim; - ---用模板template0创建数据库music3,并指定所有者为jim。 -postgres=# CREATE DATABASE music3 OWNER jim TEMPLATE template0; - ---设置music数据库的连接数为10。 -postgres=# ALTER DATABASE music CONNECTION LIMIT= 10; - ---将music名称改为music4。 -postgres=# ALTER DATABASE music RENAME TO music4; - ---将数据库music2的所属者改为tom。 -postgres=# ALTER DATABASE music2 OWNER TO tom; - ---设置music3的表空间为PG_DEFAULT。 -postgres=# ALTER DATABASE music3 SET TABLESPACE PG_DEFAULT; - ---关闭在数据库music3上缺省的索引扫描。 -postgres=# ALTER DATABASE music3 SET enable_indexscan TO off; - ---重置enable_indexscan参数。 -postgres=# ALTER DATABASE music3 RESET enable_indexscan; - ---删除数据库。 -postgres=# DROP DATABASE music2; -postgres=# DROP DATABASE music3; -postgres=# DROP DATABASE music4; - ---删除jim和tom用户。 -postgres=# DROP USER jim; -postgres=# DROP USER tom; - ---创建兼容TD格式的数据库。 -postgres=# CREATE DATABASE td_compatible_db DBCOMPATIBILITY 'C'; - ---创建兼容ORA格式的数据库。 -postgres=# CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'A'; - ---删除兼容TD、ORA格式的数据库。 -postgres=# DROP DATABASE td_compatible_db; -postgres=# DROP DATABASE ora_compatible_db; -``` - diff --git "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\347\224\250\346\210\267.md" "b/content/zh/docs/Quickstart/\345\210\233\345\273\272\347\224\250\346\210\267.md" deleted file mode 100644 index 420712e01..000000000 --- "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\347\224\250\346\210\267.md" +++ /dev/null @@ -1,81 +0,0 @@ -# 创建用户 - -创建一个用户。 - -## 注意事项 - -- 通过CREATE USER创建的用户,默认具有LOGIN权限; -- 通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。 -- 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。 - -## 语法格式 - -``` -CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; -``` - -其中option子句用于设置权限及属性等信息。 - -``` -{SYSADMIN | NOSYSADMIN} - | {AUDITADMIN | NOAUDITADMIN} - | {CREATEDB | NOCREATEDB} - | {USEFT | NOUSEFT} - | {CREATEROLE | NOCREATEROLE} - | {INHERIT | NOINHERIT} - | {LOGIN | NOLOGIN} - | {REPLICATION | NOREPLICATION} - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | TEMP SPACE 'tmpspacelimit' - | SPILL SPACE 'spillspacelimit' - | IN ROLE role_name [, ...] - | IN GROUP role_name [, ...] - | ROLE role_name [, ...] - | ADMIN role_name [, ...] - | USER role_name [, ...] - | SYSID uid - | DEFAULT TABLESPACE tablespace_name - | PROFILE DEFAULT - | PROFILE profile_name - | PGUSER -``` - -## 示例 - -``` ---创建用户jim,登录密码为Bigdata@123。 -postgres=# CREATE USER jim PASSWORD 'Bigdata@123'; - ---下面语句与上面的等价。 -postgres=# CREATE USER kim IDENTIFIED BY 'Bigdata@123'; - ---如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。 -postgres=# CREATE USER dim CREATEDB PASSWORD 'Bigdata@123'; - ---将用户jim的登录密码由Bigdata@123修改为Abcd@123。 -postgres=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Bigdata@123'; - ---为用户jim追加CREATEROLE权限。 -postgres=# ALTER USER jim CREATEROLE; - ---将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。 -postgres=# ALTER USER jim SET enable_seqscan TO on; - ---重置jim的enable_seqscan参数。 -postgres=# ALTER USER jim RESET enable_seqscan; - ---锁定jim帐户。 -postgres=# ALTER USER jim ACCOUNT LOCK; - ---删除用户。 -postgres=# DROP USER kim CASCADE; -postgres=# DROP USER jim CASCADE; -postgres=# DROP USER dim CASCADE; -``` - diff --git "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\350\241\250.md" "b/content/zh/docs/Quickstart/\345\210\233\345\273\272\350\241\250.md" deleted file mode 100644 index 60afafaa3..000000000 --- "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\350\241\250.md" +++ /dev/null @@ -1,643 +0,0 @@ -# 创建表 - -在当前数据库中创建一个新的空白表,该表由命令执行者所有。 - -创建表时,如未指定表的存储方式,默认创建的是行存表;如未指定分布列时,取表的主键列(如果有的话)或首个可以作为分布列的列。 - -## 语法格式 - -- 创建表。 - - ``` - CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name - ({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] - | table_constraint - | LIKE source_table [ like_option [...] ] } - [, ... ]) - [ WITH ( {storage_parameter = value} [, ... ] ) ] - [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] - [ COMPRESS | NOCOMPRESS ] - [ TABLESPACE tablespace_name ]; - ``` - - - 其中列约束column\_constraint为: - - ``` - [ CONSTRAINT constraint_name ] - { NOT NULL | - NULL | - CHECK ( expression ) | - DEFAULT default_expr | - UNIQUE index_parameters | - PRIMARY KEY index_parameters } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - - 其中列的压缩可选项compress\_mode为: - - ``` - { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } - ``` - - - 其中表约束table\_constraint为: - - ``` - [ CONSTRAINT constraint_name ] - { CHECK ( expression ) | - UNIQUE ( column_name [, ... ] ) index_parameters | - PRIMARY KEY ( column_name [, ... ] ) index_parameters | - PARTIAL CLUSTER KEY ( column_name [, ... ] ) } - [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] - ``` - - - 其中like选项like\_option为: - - ``` - { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | ALL } - ``` - - - -其中索引参数index\_parameters为: - -``` -[ WITH ( {storage_parameter = value} [, ... ] ) ] -[ USING INDEX TABLESPACE tablespace_name ] -``` - -## 示例 - -``` ---创建简单的表。 -postgres=# CREATE TABLE tpcds.warehouse_t1 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - -postgres=# CREATE TABLE tpcds.warehouse_t2 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) DICTIONARY, - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); -``` - -``` ---创建表,并指定W_STATE字段的缺省值为GA。 -postgres=# CREATE TABLE tpcds.warehouse_t3 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) DEFAULT 'GA', - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建表,并在事务结束时检查W_WAREHOUSE_NAME字段是否有重复。 -postgres=# CREATE TABLE tpcds.warehouse_t4 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) UNIQUE DEFERRABLE, - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); -``` - -``` ---创建一个带有70%填充因子的表。 -postgres=# CREATE TABLE tpcds.warehouse_t5 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - UNIQUE(W_WAREHOUSE_NAME) WITH(fillfactor=70) -); - ---或者用下面的语法。 -postgres=# CREATE TABLE tpcds.warehouse_t6 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) UNIQUE, - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) WITH(fillfactor=70); - ---创建表,并指定该表数据不写入预写日志。 -postgres=# CREATE UNLOGGED TABLE tpcds.warehouse_t7 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建表临时表。 -postgres=# CREATE TEMPORARY TABLE warehouse_t24 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建本地临时表,并指定提交事务时删除该临时表数据。 -postgres=# CREATE TEMPORARY TABLE warehouse_t25 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) ON COMMIT DELETE ROWS; - ---创建全局临时表,并指定会话结束时删除该临时表数据。 -postgres=# CREATE GLOBAL TEMPORARY TABLE gtt1 -( - ID INTEGER NOT NULL, - NAME CHAR(16) NOT NULL, - ADDRESS VARCHAR(50) , - POSTCODE CHAR(6) -) ON COMMIT PRESERVE ROWS; - ---创建表时,不希望因为表已存在而报错。 -postgres=# CREATE TABLE IF NOT EXISTS tpcds.warehouse_t8 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---创建普通表空间。 -postgres=# CREATE TABLESPACE DS_TABLESPACE1 RELATIVE LOCATION 'tablespace/tablespace_1'; ---创建表时,指定表空间。 -postgres=# CREATE TABLE tpcds.warehouse_t9 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) TABLESPACE DS_TABLESPACE1; - ---创建表时,单独指定W_WAREHOUSE_NAME的索引表空间。 -postgres=# CREATE TABLE tpcds.warehouse_t10 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) UNIQUE USING INDEX TABLESPACE DS_TABLESPACE1, - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); -``` - -``` ---创建一个有主键约束的表。 -postgres=# CREATE TABLE tpcds.warehouse_t11 -( - W_WAREHOUSE_SK INTEGER PRIMARY KEY, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ----或是用下面的语法,效果完全一样。 -postgres=# CREATE TABLE tpcds.warehouse_t12 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - PRIMARY KEY(W_WAREHOUSE_SK) -); - ---或是用下面的语法,指定约束的名称。 -postgres=# CREATE TABLE tpcds.warehouse_t13 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CSTR_KEY1 PRIMARY KEY(W_WAREHOUSE_SK) -); - ---创建一个有复合主键约束的表。 -postgres=# CREATE TABLE tpcds.warehouse_t14 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CSTR_KEY2 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) -); - ---创建列存表。 -postgres=# CREATE TABLE tpcds.warehouse_t15 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) WITH (ORIENTATION = COLUMN); - ---创建局部聚簇存储的列存表。 -postgres=# CREATE TABLE tpcds.warehouse_t16 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - PARTIAL CLUSTER KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) -) WITH (ORIENTATION = COLUMN); - ---定义一个带压缩的列存表。 -postgres=# CREATE TABLE tpcds.warehouse_t17 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) WITH (ORIENTATION = COLUMN, COMPRESSION=HIGH); - ---定义一个带压缩的表。 -postgres=# CREATE TABLE tpcds.warehouse_t18 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -) COMPRESS; - ---定义一个检查列约束。 -postgres=# CREATE TABLE tpcds.warehouse_t19 -( - W_WAREHOUSE_SK INTEGER PRIMARY KEY CHECK (W_WAREHOUSE_SK > 0), - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - -postgres=# CREATE TABLE tpcds.warehouse_t20 -( - W_WAREHOUSE_SK INTEGER PRIMARY KEY, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CONSTR_KEY2 CHECK(W_WAREHOUSE_SK > 0 AND W_WAREHOUSE_NAME IS NOT NULL) -); - ---定义一个表,表中每一个行存在数据库节点中。 -postgres=# CREATE TABLE tpcds.warehouse_t21 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2) -); - ---定义一个表,使用HASH分布。 -postgres=# CREATE TABLE tpcds.warehouse_t22 -( - W_WAREHOUSE_SK INTEGER NOT NULL, - W_WAREHOUSE_ID CHAR(16) NOT NULL, - W_WAREHOUSE_NAME VARCHAR(20) , - W_WAREHOUSE_SQ_FT INTEGER , - W_STREET_NUMBER CHAR(10) , - W_STREET_NAME VARCHAR(60) , - W_STREET_TYPE CHAR(15) , - W_SUITE_NUMBER CHAR(10) , - W_CITY VARCHAR(60) , - W_COUNTY VARCHAR(30) , - W_STATE CHAR(2) , - W_ZIP CHAR(10) , - W_COUNTRY VARCHAR(20) , - W_GMT_OFFSET DECIMAL(5,2), - CONSTRAINT W_CONSTR_KEY3 UNIQUE(W_WAREHOUSE_SK) -); - ---向tpcds.warehouse_t19表中增加一个varchar列。 -``` - -``` -postgres=# ALTER TABLE tpcds.warehouse_t19 ADD W_GOODS_CATEGORY varchar(30); - ---给tpcds.warehouse_t19表增加一个检查约束。 -postgres=# ALTER TABLE tpcds.warehouse_t19 ADD CONSTRAINT W_CONSTR_KEY4 CHECK (W_STATE IS NOT NULL); - ---在一个操作中改变两个现存字段的类型。 -postgres=# ALTER TABLE tpcds.warehouse_t19 - ALTER COLUMN W_GOODS_CATEGORY TYPE varchar(80), - ALTER COLUMN W_STREET_NAME TYPE varchar(100); - ---此语句与上面语句等效。 -postgres=# ALTER TABLE tpcds.warehouse_t19 MODIFY (W_GOODS_CATEGORY varchar(30), W_STREET_NAME varchar(60)); - ---给一个已存在字段添加非空约束。 -postgres=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY SET NOT NULL; - ---移除已存在字段的非空约束。 -postgres=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY DROP NOT NULL; - ---如果列存表中还未指定局部聚簇,向在一个列存表中添加局部聚簇列。 -postgres=# ALTER TABLE tpcds.warehouse_t17 ADD PARTIAL CLUSTER KEY(W_WAREHOUSE_SK); - ---查看约束的名称,并删除一个列存表中的局部聚簇列。 -postgres=# \d+ tpcds.warehouse_t17 - Table "tpcds.warehouse_t17" - Column | Type | Modifiers | Storage | Stats target | Description --------------------+-----------------------+-----------+----------+--------------+------------- - w_warehouse_sk | integer | not null | plain | | - w_warehouse_id | character(16) | not null | extended | | - w_warehouse_name | character varying(20) | | extended | | - w_warehouse_sq_ft | integer | | plain | | - w_street_number | character(10) | | extended | | - w_street_name | character varying(60) | | extended | | - w_street_type | character(15) | | extended | | - w_suite_number | character(10) | | extended | | - w_city | character varying(60) | | extended | | - w_county | character varying(30) | | extended | | - w_state | character(2) | | extended | | - w_zip | character(10) | | extended | | - w_country | character varying(20) | | extended | | - w_gmt_offset | numeric(5,2) | | main | | -Partial Cluster : - "warehouse_t17_cluster" PARTIAL CLUSTER KEY (w_warehouse_sk) -Has OIDs: no -Location Nodes: ALL DATANODES -Options: compression=no, version=0.12 -postgres=# ALTER TABLE tpcds.warehouse_t17 DROP CONSTRAINT warehouse_t17_cluster; - ---将表移动到另一个表空间。 -postgres=# ALTER TABLE tpcds.warehouse_t19 SET TABLESPACE PG_DEFAULT; ---创建模式joe。 -postgres=# CREATE SCHEMA joe; - ---将表移动到另一个模式中。 -postgres=# ALTER TABLE tpcds.warehouse_t19 SET SCHEMA joe; - ---重命名已存在的表。 -postgres=# ALTER TABLE joe.warehouse_t19 RENAME TO warehouse_t23; - ---从warehouse_t23表中删除一个字段。 -postgres=# ALTER TABLE joe.warehouse_t23 DROP COLUMN W_STREET_NAME; - ---删除表空间、模式joe和模式表warehouse。 -postgres=# DROP TABLE tpcds.warehouse_t1; -postgres=# DROP TABLE tpcds.warehouse_t2; -postgres=# DROP TABLE tpcds.warehouse_t3; -postgres=# DROP TABLE tpcds.warehouse_t4; -postgres=# DROP TABLE tpcds.warehouse_t5; -postgres=# DROP TABLE tpcds.warehouse_t6; -postgres=# DROP TABLE tpcds.warehouse_t7; -postgres=# DROP TABLE tpcds.warehouse_t8; -postgres=# DROP TABLE tpcds.warehouse_t9; -postgres=# DROP TABLE tpcds.warehouse_t10; -postgres=# DROP TABLE tpcds.warehouse_t11; -postgres=# DROP TABLE tpcds.warehouse_t12; -postgres=# DROP TABLE tpcds.warehouse_t13; -postgres=# DROP TABLE tpcds.warehouse_t14; -postgres=# DROP TABLE tpcds.warehouse_t15; -postgres=# DROP TABLE tpcds.warehouse_t16; -postgres=# DROP TABLE tpcds.warehouse_t17; -postgres=# DROP TABLE tpcds.warehouse_t18; -postgres=# DROP TABLE tpcds.warehouse_t20; -postgres=# DROP TABLE tpcds.warehouse_t21; -postgres=# DROP TABLE tpcds.warehouse_t22; -postgres=# DROP TABLE joe.warehouse_t23; -postgres=# DROP TABLE tpcds.warehouse_t24; -postgres=# DROP TABLE tpcds.warehouse_t25; -postgres=# DROP TABLESPACE DS_TABLESPACE1; -postgres=# DROP SCHEMA IF EXISTS joe CASCADE; -``` - diff --git "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\350\247\222\350\211\262.md" "b/content/zh/docs/Quickstart/\345\210\233\345\273\272\350\247\222\350\211\262.md" deleted file mode 100644 index da130b262..000000000 --- "a/content/zh/docs/Quickstart/\345\210\233\345\273\272\350\247\222\350\211\262.md" +++ /dev/null @@ -1,71 +0,0 @@ -# 创建角色 - -创建角色。 - -角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。 - -## 注意事项 - -- 在数据库中添加一个新角色,角色无登录权限。 -- 创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。 - -## 语法格式 - -``` -CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; -``` - -其中角色信息设置子句option语法为: - -``` -{SYSADMIN | NOSYSADMIN} - | {AUDITADMIN | NOAUDITADMIN} - | {CREATEDB | NOCREATEDB} - | {USEFT | NOUSEFT} - | {CREATEROLE | NOCREATEROLE} - | {INHERIT | NOINHERIT} - | {LOGIN | NOLOGIN} - | {REPLICATION | NOREPLICATION} - | {INDEPENDENT | NOINDEPENDENT} - | {VCADMIN | NOVCADMIN} - | CONNECTION LIMIT connlimit - | VALID BEGIN 'timestamp' - | VALID UNTIL 'timestamp' - | RESOURCE POOL 'respool' - | PERM SPACE 'spacelimit' - | TEMP SPACE 'tmpspacelimit' - | SPILL SPACE 'spillspacelimit' - | IN ROLE role_name [, ...] - | IN GROUP role_name [, ...] - | ROLE role_name [, ...] - | ADMIN rol e_name [, ...] - | USER role_name [, ...] - | SYSID uid - | DEFAULT TABLESPACE tablespace_name - | PROFILE DEFAULT - | PROFILE profile_name - | PGUSER -``` - -## 示例 - -``` ---创建一个角色,名为manager,密码为Bigdata@123。 -postgres=# CREATE ROLE manager IDENTIFIED BY 'Bigdata@123'; - ---创建一个角色,从2015年1月1日开始生效,到2026年1月1日失效。 -postgres=# CREATE ROLE miriam WITH LOGIN PASSWORD 'Bigdata@123' VALID BEGIN '2015-01-01' VALID UNTIL '2026-01-01'; - ---修改角色manager的密码为abcd@123。 -postgres=# ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'Bigdata@123'; - ---修改角色manager为系统管理员。 -postgres=# ALTER ROLE manager SYSADMIN; - ---删除角色manager。 -postgres=# DROP ROLE manager; - ---删除角色miriam。 -postgres=# DROP ROLE miriam; -``` - diff --git "a/content/zh/docs/Quickstart/\345\210\235\345\247\213\345\214\226\345\256\211\350\243\205\347\216\257\345\242\203.md" "b/content/zh/docs/Quickstart/\345\210\235\345\247\213\345\214\226\345\256\211\350\243\205\347\216\257\345\242\203.md" index 5ce812785..28185a23a 100644 --- "a/content/zh/docs/Quickstart/\345\210\235\345\247\213\345\214\226\345\256\211\350\243\205\347\216\257\345\242\203.md" +++ "b/content/zh/docs/Quickstart/\345\210\235\345\247\213\345\214\226\345\256\211\350\243\205\347\216\257\345\242\203.md" @@ -2,10 +2,1130 @@ 为了保证openGauss的正确安装,请首先对主机环境进行配置。 -- **[准备安装用户及环境](准备安装用户及环境.md)** + + +- [初始化安装环境](#初始化安装环境a-namezh-cn_topic_0270171704a) + - [准备安装用户及环境](#准备安装用户及环境a-namezh-cn_topic_0270171705a) + - [前提条件](#前提条件a-namezh-cn_topic_0249784578_zh-cn_topic_0241805803_zh-cn_topic_0085434653_zh-cn_topic_0059781995_s3773af79eeb74c4bae1bd46533cc0cd8a) + - [注意事项](#注意事项a-namezh-cn_topic_0249784578_zh-cn_topic_0241805803_zh-cn_topic_0085434653_zh-cn_topic_0059781995_section20734484163420a) + - [操作步骤](#操作步骤a-namezh-cn_topic_0249784578_zh-cn_topic_0241805803_zh-cn_topic_0085434653_zh-cn_topic_0059781995_s407f29ab5691456590018c719cf81e9da) + - [示例](#示例a-namezh-cn_topic_0249784578_zh-cn_topic_0241805803_zh-cn_topic_0085434653_zh-cn_topic_0059781995_section412490911620a) + - [错误排查](#错误排查a-namezh-cn_topic_0249784578_zh-cn_topic_0241805803_zh-cn_topic_0085434653_zh-cn_topic_0059781995_s51853c2b09e54b12a90e4f8c512a61e4a) + - [手工建立互信](#手工建立互信a-namezh-cn_topic_0270171706a) + - [前提条件](#前提条件a-namezh-cn_topic_0249784564_zh-cn_topic_0241805804_zh-cn_topic_0085434625_zh-cn_topic_0059782039_s88bba380d9334b129eab3023c5399d45a) + - [使用脚本建立互信](#使用脚本建立互信a-namezh-cn_topic_0249784564_zh-cn_topic_0241805804_zh-cn_topic_0085434625_zh-cn_topic_0059782039_s8028dd8189914444b059c07d8c8c82dea) + - [手工建立互信](#手工建立互信a-namezh-cn_topic_0249784564_zh-cn_topic_0241805804_zh-cn_topic_0085434625_zh-cn_topic_0059782039_section63620881152125a) + - [删除root用户互信](#删除root用户互信a-namezh-cn_topic_0249784564_section149417461942a) + - [示例](#示例a-namezh-cn_topic_0249784564_zh-cn_topic_0241805804_zh-cn_topic_0085434625_zh-cn_topic_0059782039_s9928a16b5b7347edbdb587133575483ea) + - [配置操作系统参数](#配置操作系统参数a-namezh-cn_topic_0270171707a) + - [操作系统参数](#操作系统参数a-namezh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section3705271819540a) + - [文件系统参数](#文件系统参数a-namezh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section4118580316369a) + - [transparent\_hugepage设置](#transparent\_hugepage设置a-namezh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section38366550113020a) + - [文件句柄设置](#文件句柄设置a-namezh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section49556455195442a) + - [系统支持的最大进程数设置](#系统支持的最大进程数设置a-namezh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section65253147151525a) + - [网卡参数配置](#网卡参数配置a-namezh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section6007556195457a) + + + +## 准备安装用户及环境 + 创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs\_preinstall准备好安装用户及环境。 -- **[手工建立互信](手工建立互信.md)** + +安装前置脚本gs\_preinstall可以协助用户自动完成如下的安装环境准备工作: + +- 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见[配置操作系统参数](配置操作系统参数.md#ZH-CN_TOPIC_0270171707)。 +- 自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。 +- openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。 +- 读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。 + +### 前提条件 + +- 已完成[安装准备](安装准备.md#ZH-CN_TOPIC_0270171690)的所有任务。 + +### 注意事项 + +- 用户需要检查上层目录权限,保证安装用户对安装包和配置文件目录读写执行的权限。 +- xml文件中各主机的名称与IP映射配置正确。 +- 只能使用root用户执行gs\_preinstall命令。 + +### 操作步骤 + +1. 以root用户登录待安装openGauss的任意主机,并按规划创建存放安装包的目录。 + + ``` + mkdir -p /opt/software/openGauss + chmod 755 -R /opt/software + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 不建议把安装包的存放目录规划到openGauss用户的家目录或其子目录下,可能导致权限问题。 + >- openGauss用户须具有/opt/software/openGauss目录的读写权限。 + +2. 将安装包“openGauss-x.x.x-openEULER-64bit.tar.gz”和配置文件“cluster\_config.xml”都上传至上一步所创建的目录中。 +3. 在安装包所在的目录下,解压安装包openGauss-x.x.x-openEULER-64bit.tar.gz。安装包解压后,会在/opt/software/openGauss路径下自动生成script子目录,并且在script目录下生成gs\_preinstall等各种OM工具脚本。 + + ``` + cd /opt/software/openGauss + tar -zxvf openGauss-x.x.x-openEULER-64bit.tar.gz + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 在执行前置脚本gs\_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。 + >- 运行前置脚本gs\_preinstall准备安装环境时,脚本内部会自动将openGauss配置文件、解压后的安装包同步拷贝到其余服务器的相同目录下。 + >- 在执行前置或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。 + +4. 进入到工具脚本存放目录下。 + + ``` + cd /opt/software/openGauss/script + ``` + +5. 如果是openEuler的操作系统,执行如下命令打开performance.sh文件,用\#注释sysctl -w vm.min\_free\_kbytes=112640 &\> /dev/null,键入“ESC”键进入指令模式,执行**:wq**保存并退出修改。 + + ``` + vi /etc/profile.d/performance.sh + ``` + +6. 为确保openssl版本正确,执行预安装前请加载安装包中lib库。执行命令如下,其中_\{packagePath\}_为用户安装包放置的路径,本示例中为/opt/software/openGauss。 + + ``` + export LD_LIBRARY_PATH={packagePath}/script/gspylib/clib:$LD_LIBRARY_PATH + ``` + +7. 为确保成功安装,检查 hostname 与 /etc/hostname 是否一致。预安装过程中,会对hostname进行检查。 +8. 使用gs\_preinstall准备好安装环境。若为共用环境需加入--sep-env-file=ENVFILE参数分离环境变量,避免与其他用户相互影响,ENVFILE为用户自行指定的环境变量分离文件的路径。 + - 采用交互模式执行前置,并在执行过程中自动创建root用户互信和openGauss用户互信: + + ``` + ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml + ``` + + omm为数据库管理员(也是运行openGauss的操作系统用户),dbgrp为运行openGauss的操作系统用户的群组名称,/opt/software/openGauss/cluster\_config.xml为openGauss配置文件路径。在执行过程中,用户根据提示选择是否创建互信,并输入root用户或openGauss用户的密码。 + + - 不允许创建root用户互信时,创建omm用户,在各主机上执行本地模式前置,然后用户手动创建openGauss用户互信:如果预安装指定-L参数,预安装前需手动将所有节点的主机名和ip映射关系,写入各个主机的/etc/hosts,并在每个映射关系后边加入注释内容:\#Gauss OM IP Hosts Mapping。 + 1. 执行下面命令准备安装环境。 + + ``` + cd /opt/software/openGauss/script + ./gs_preinstall -U omm -G dbgrp -L -X /opt/software/openGauss/cluster_config.xml + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >此操作需要在每台主机上执行该命令。 + + + - 采用非交互模式执行前置: + 1. 参考[手工建立互信](手工建立互信.md#ZH-CN_TOPIC_0270171706)章节手工建立root用户互信和openGauss用户互信。 + 2. 执行下面命令准备安装环境。 + + ``` + cd /opt/software/openGauss/script + ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --non-interactive + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 此模式要求用户确保在执行前,已经建立了各节点root用户互信和openGauss用户互信。 + >- root用户互信可能会存在安全隐患,因此建议用户在执行完安装后,立即删除各主机上root用户的互信。 + + + + +### 示例 + +执行前置脚本: + +``` +plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml +Parsing the configuration file. +Successfully parsed the configuration file. +Installing the tools on the local node. +Successfully installed the tools on the local node. +Are you sure you want to create trust for root (yes/no)? yes +Please enter password for root. +Password: +Creating SSH trust for the root permission user. +Checking network information. +All nodes in the network are Normal. +Successfully checked network information. +Creating SSH trust. +Creating the local key file. +Successfully created the local key files. +Appending local ID to authorized_keys. +Successfully appended local ID to authorized_keys. +Updating the known_hosts file. +Successfully updated the known_hosts file. +Appending authorized_key on the remote node. +Successfully appended authorized_key on all remote node. +Checking common authentication file content. +Successfully checked common authentication content. +Distributing SSH trust file to all node. +Successfully distributed SSH trust file to all node. +Verifying SSH trust on all hosts. +Successfully verified SSH trust on all hosts. +Successfully created SSH trust. +Successfully created SSH trust for the root permission user. +Setting pssh path +Successfully set core path. +Distributing package. +Begin to distribute package to tool path. +Successfully distribute package to tool path. +Begin to distribute package to package path. +Successfully distribute package to package path. +Successfully distributed package. +Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes +Please enter password for cluster user. +Password: +Please enter password for cluster user again. +Password: +Successfully created [omm] user on all nodes. +Preparing SSH service. +Successfully prepared SSH service. +Installing the tools in the cluster. +Successfully installed the tools in the cluster. +Checking hostname mapping. +Successfully checked hostname mapping. +Creating SSH trust for [omm] user. +Checking network information. +All nodes in the network are Normal. +Successfully checked network information. +Creating SSH trust. +Creating the local key file. +Successfully created the local key files. +Appending local ID to authorized_keys. +Successfully appended local ID to authorized_keys. +Updating the known_hosts file. +Successfully updated the known_hosts file. +Appending authorized_key on the remote node. +Successfully appended authorized_key on all remote node. +Checking common authentication file content. +Successfully checked common authentication content. +Distributing SSH trust file to all node. +Successfully distributed SSH trust file to all node. +Verifying SSH trust on all hosts. +Successfully verified SSH trust on all hosts. +Successfully created SSH trust. +Successfully created SSH trust for [omm] user. +Checking OS software. +Successfully check os software. +Checking OS version. +Successfully checked OS version. +Creating cluster's path. +Successfully created cluster's path. +Setting SCTP service. +Successfully set SCTP service. +Set and check OS parameter. +Setting OS parameters. +Successfully set OS parameters. +Preparing CRON service. +Successfully prepared CRON service. +Setting user environmental variables. +Successfully set user environmental variables. +Setting the dynamic link library. +Successfully set the dynamic link library. +Setting Core file +Successfully set core path. +Setting pssh path +Successfully set pssh path. +Set ARM Optimization. +No need to set ARM Optimization. +Fixing server package owner. +Setting finish flag. +Successfully set finish flag. +Preinstallation succeeded. +``` + +如果主备机的root用户密码不同,且不能统一修改为一致时,执行前置脚本本地安装模式: + +``` +plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -L -X /opt/software/openGauss/cluster_config.xml +Parsing the configuration file. +Successfully parsed the configuration file. +Installing the tools on the local node. +Successfully installed the tools on the local node. +Checking OS version. +Successfully checked OS version. +Creating cluster's path. +Successfully created cluster's path. +Setting SCTP service. +Successfully set SCTP service. +Set and check OS parameter. +Setting OS parameters. +Successfully set OS parameters. +Warning: Installation environment contains some warning messages. +Please get more details by "/home/package/r8c00/script/gs_checkos -i A -h SIA1000068990". +Set and check OS parameter completed. +Preparing CRON service. +Successfully prepared CRON service. +Preparing SSH service. +Successfully prepared SSH service. +Setting user environmental variables. +Successfully set user environmental variables. +Configuring alarms on the cluster nodes. +Successfully configured alarms on the cluster nodes. +Setting the dynamic link library. +Successfully set the dynamic link library. +Setting Cgroup. +Successfully set Cgroup. +Setting finish flag. +Successfully set finish flag. +Preinstallation succeeded. +``` + +以非交互模式执行前置: + +``` +plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --non-interactive +Parsing the configuration file. +Successfully parsed the configuration file. +Installing the tools on the local node. +Successfully installed the tools on the local node. +Distributing package. +Begin to distribute package to tool path. +Successfully distribute package to tool path. +Begin to distribute package to package path. +Successfully distribute package to package path. +Successfully distributed package. +Installing the tools in the cluster. +Successfully installed the tools in the cluster. +Checking hostname mapping. +Successfully checked hostname mapping. +Checking OS version. +Successfully checked OS version. +Creating cluster's path. +Successfully created cluster's path. +Setting SCTP service. +Successfully set SCTP service. +Set and check OS parameter. +Setting OS parameters. +Successfully set OS parameters. +Set and check OS parameter completed. +Preparing CRON service. +Successfully prepared CRON service. +Preparing SSH service. +Successfully prepared SSH service. +Setting user environmental variables. +Successfully set user environmental variables. +Configuring alarms on the cluster nodes. +Successfully configured alarms on the cluster nodes. +Setting the dynamic link library. +Successfully set the dynamic link library. +Setting Cgroup. +Successfully set Cgroup. +Set ARM Optimization. +Successfully set ARM Optimization. +Setting finish flag. +Successfully set finish flag. +Preinstallation succeeded. +``` + +### 错误排查 + +如果准备安装环境失败请根据openGauss日志目录“$GAUSSLOG/om”下的“gs\_preinstall-YYYY-MM-DD\_HHMMSS.log”和“gs\_local-YYYY-MM-DD\_HHMMSS.log”中的日志信息排查错误。例如配置文件中“gaussdbLogPath”参数指定的路径为“/var/log/gaussdb”,则“$GAUSSLOG/om”路径为“/var/log/gaussdb/omm/om”,omm用户为运行openGauss的用户。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>准备安装用户及环境的过程中会使用root添加定时任务用于定时巡检和上报。 + +## 手工建立互信 + openGauss在安装过程中,需要在openGauss中的主机间执行命令,传送文件等操作。因此,在普通用户安装前需要确保互信是连通的。前置脚本中会先建立root用户间的互信,然后创建普通用户,并建立普通用户间的互信。 -- **[配置操作系统参数](配置操作系统参数.md)** + +>![](public_sys-resources/icon-notice.gif) **须知:** +>root用户互信可能会存在安全隐患,因此建议用户在使用完成后,立即删除各主机上root用户的互信。 + +### 前提条件 + +- 确保ssh服务打开。 +- 确保ssh端口不会被防火墙关闭。 +- 确保xml文件中各主机名称和IP配置正确。 +- 确保所有机器节点间网络畅通。 +- 如果为普通用户建立互信,需要提前在各主机创建相同用户并设置密码。 +- 如果各主机安装并启动了SELinux服务,需要确保/root和/home目录安全上下文为默认值(root目录:system\_u:object\_r:home\_root\_t:s0,home目录:system\_u:object\_r:admin\_home\_t:s0)或者关闭掉SELinux服务。 + + 检查系统SELinux状态的方法:执行命令getenforce,如果返回结果是Enforcing ,说明SELinux安装并启用。 + + 检查目录安全上下文的命令: + + ``` + ls -ldZ /root | awk '{print $4}' + ``` + + ``` + ls -ldZ /home | awk '{print $4}' + ``` + + 恢复目录安全上下文命令: + + ``` + restorecon -r -vv /home/ + ``` + + ``` + restorecon -r -vv /root/ + ``` + + +### 使用脚本建立互信 + +1. 创建一个执行互信脚本所需要的输入文本,并在此文件中添加openGauss中所有主机IP。 + + ``` + plat1:/opt/software/openGauss> vim hostfile + 192.168.0.1 + 192.168.0.2 + 192.168.0.3 + ``` + +2. 以需要创建互信的用户执行脚本。 +3. 执行下面脚本建立互信。 + + ``` + plat1:/opt/software/openGauss/script# ./gs_sshexkey -f /opt/software/hostfile + ``` + + /opt/software/hostfile为主机列表,列出所有需要建立互信机器的主机IP。 + + +### 手工建立互信 + +如果openGauss各主机的root密码不一致,gs\_preinstall脚本无法建立互信,可以手工建立互信。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>建立互信的过程中需要生成如下4个文件:authorized\_keys、id\_rsa、id\_rsa.pub、known\_hosts。请勿删除或破坏这些互信相关的文件。 + +手工建立信任关系,步骤如下,plat1,plat2,plat3是主机名: + +1. 在其中一个主机上,生成root用户的本机授权文件。假设在主机plat1上执行。 + 1. 生成密钥。 + + ``` + ssh-keygen -t rsa + ``` + + 示例如下: + + ``` + plat1:~ # ssh-keygen -t rsa + Generating public/private rsa key pair. + Enter file in which to save the key (/root/.ssh/id_rsa): + Created directory '/root/.ssh'. + Enter passphrase (empty for no passphrase): + Enter same passphrase again: + Your identification has been saved in /root/.ssh/id_rsa. + Your public key has been saved in /root/.ssh/id_rsa.pub. + The key fingerprint is: + d5:35:46:33:27:22:09:f0:1e:12:a7:87:fa:33:3f:ab root@plat1 + The key's randomart image is: + +--[ RSA 2048]----+ + | o.o.....O .| + | * .o + * | + | + + . . | + | . + o | + | . S | + | . | + | + | + | +. | + | E.oo | + +-----------------+ + ``` + + 2. 生成本机授权文件。 + + ``` + cat .ssh/id_rsa.pub >> ~/.ssh/authorized_keys + ``` + + 示例如下: + + ``` + plat1:~ # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys + ``` + +2. 收集所有的待建互信主机的公钥,写入到本机的known\_hosts文件中。此步骤需要在步骤1执行的主机上执行。需要收集plat1、plat2、plat3三个主机的公钥。 + 1. 收集plat1的公钥,写入到本机known\_hosts文件中。 + + ``` + ssh-keyscan -t rsa plat1 >> ~/.ssh/known_hosts + ``` + + 示例如下: + + ``` + plat1:~ # ssh-keyscan -t rsa plat1 >> ~/.ssh/known_hosts + # plat1 SSH-2.0-OpenSSH_5.1 + ``` + + 2. 收集plat2的公钥,写入到本机known\_hosts文件中。 + + ``` + ssh-keyscan -t rsa plat2 >> ~/.ssh/known_hosts + ``` + + 示例如下: + + ``` + plat1:~ # ssh-keyscan -t rsa plat2 >> ~/.ssh/known_hosts + # plat2 SSH-2.0-OpenSSH_5.1 + ``` + + 3. 收集plat3的公钥,写入到本机known\_hosts文件中。 + + ``` + ssh-keyscan -t rsa plat3 >> ~/.ssh/known_hosts + ``` + + 示例如下: + + ``` + plat1:~ # ssh-keyscan -t rsa plat3 >> ~/.ssh/known_hosts + # plat3 SSH-2.0-OpenSSH_5.1 + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known\_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分。 + >- 如果该主机上known\_hosts文件被删除,互信仍然可以使用,但是会有告警提示信息。如果需要规避告警提示信息,请将/etc/ssh/ssh\_config配置文件中,StrictHostKeyChecking参数设置为no。 + + +3. 将互信文件分发到其它所有主机上。在本例中,需要将plat1上的互信文件分发到plat2和plat3上。 + + 1、将互信文件分发到plat2上。Password输入拷贝目标主机的密码。 + + ``` + scp -r ~/.ssh plat2:~ + ``` + + 示例如下: + + ``` + plat1:~ # scp -r ~/.ssh plat2:~ + Password: + authorized_keys 100% 796 0.8KB/s 00:00 + id_rsa 100% 1675 1.6KB/s 00:00 + id_rsa.pub 100% 398 0.4KB/s 00:00 + known_hosts 100% 1089 1.1KB/s 00:00 + ``` + + 2、将互信文件分发到plat3上。Password输入拷贝目标主机的密码。 + + ``` + scp -r ~/.ssh plat3:~ + ``` + + 示例如下: + + ``` + plat1:~ # scp -r ~/.ssh plat3:~ + Password: + authorized_keys 100% 796 0.8KB/s 00:00 + id_rsa 100% 1675 1.6KB/s 00:00 + id_rsa.pub 100% 398 0.4KB/s 00:00 + known_hosts 100% 1089 1.1KB/s 00:00 + ``` + +4. 查看互信是否建成功,可以互相ssh主机名。输入exit退出。 + + ``` + plat1:~ # ssh plat2 + Last login: Sat Jun 20 14:01:07 2020 + plat2:~ # exit + logout + Connection to plat2 closed. + plat1:~ # + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >如果三个以上节点,和上述过程类似。假设节点名为plat1、plat2、plat3、......。第一步,需要在plat1上生成root用户的本机授权文件;第二步,需要收集所有待建互信主机\(plat1、plat2、plat3、......\)的公钥并写入到本机known\_hosts文件中;第三步,需要将互信文件分发到除本机外的所有其它主机\(plat2、plat3、......\)上;第四步,检查互信是否建立成功。 + + +### 删除root用户互信 + +为了避免Root用户互信可能存在的安全隐患,因此建议用户在使用完成后,立即删除各主机上root用户的互信。 + +1. 删除openGauss数据库各节点上的互信相关文件/root/.ssh。 + + rm –rf \~/.ssh + +2. 查看互信是否删除成功,可以互相ssh主机名,提示不能互信,互信删除成功。 + + plat1:\~ \# ssh plat2 + + he authenticity of host ' plssat2 \(plat2\)' can't be established. + + ECDSA key fingerprint is SHA256:Q4DPRedFytsjsJSKf4l2lHKuzVw4prq3bIUCNVKIa7M. + + ECDSA key fingerprint is MD5:e2:77:6c:aa:4c:43:5f:f2:c4:58:ec:d5:53:de:7c:fc. + + Are you sure you want to continue connecting \(yes/no\)? + + +### 示例 + +root用户建立互信示例: + +``` +plat1:~ # gs_sshexkey -f /opt/software/hostfile -W Gauss_123 +Checking network information. +All nodes in the network are Normal. +Successfully checked network information. +Creating SSH trust. +Creating the local key file. +Successfully created the local key files. +Appending local ID to authorized_keys. +Successfully appended local ID to authorized_keys. +Updating the known_hosts file. +Successfully updated the known_hosts file. +Appending authorized_key on the remote node. +Successfully appended authorized_key on all remote node. +Checking common authentication file content. +Successfully checked common authentication content. +Distributing SSH trust file to all node. +Successfully distributed SSH trust file to all node. +Verifying SSH trust on all hosts. +Successfully verified SSH trust on all hosts. +Successfully created SSH trust. +``` + +普通用户建立互信示例: + +``` +gaussdb@plat1:~ > gs_sshexkey -f /opt/software/hostfile -W Gauss_123 +Checking network information. +All nodes in the network are Normal. +Successfully checked network information. +Creating SSH trust. +Creating the local key file. +Successfully created the local key files. +Appending local ID to authorized_keys. +Successfully appended local ID to authorized_keys. +Updating the known_hosts file. +Successfully updated the known_hosts file. +Appending authorized_key on the remote node. +Successfully appended authorized_key on all remote node. +Checking common authentication file content. +Successfully checked common authentication content. +Distributing SSH trust file to all node. +Successfully distributed SSH trust file to all node. +Verifying SSH trust on all hosts. +Successfully verified SSH trust on all hosts. +Successfully created SSH trust. +``` + +安全模式下建立互信示例,需要用户根据提示,手动输入建立互信的用户密码(建议使用安全模式): + +``` +plat1:~ # gs_sshexkey -f /opt/software/hostfile +Please enter password for current user[root]. +Password: +Checking network information. +All nodes in the network are Normal. +Successfully checked network information. +Creating SSH trust. +Creating the local key file. +Appending local ID to authorized_keys. +Successfully appended local ID to authorized_keys. +Updating the known_hosts file. +Successfully updated the known_hosts file. +Appending authorized_key on the remote node. +Successfully appended authorized_key on all remote node. +Checking common authentication file content. +Successfully checked common authentication content. +Distributing SSH trust file to all node. +Successfully distributed SSH trust file to all node. +Verifying SSH trust on all hosts. +Successfully verified SSH trust on all hosts. +Successfully created SSH trust. +``` + +## 配置操作系统参数 + openGauss要求各主机上的操作系统参数设置成一定的值,以满足系统运行的性能要求等。 +这些参数有些会在openGauss安装环境准备阶段完成设置,且这些参数将直接影响openGauss的运行状态,请仅在确认必要时进行手动调整。方法如下: + +1. 以root用户身份登录服务器。 +2. 对文件“/etc/sysctl.conf”进行编辑修改。 + + 具体参数的修改请参见[操作系统参数](#zh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section3705271819540)。 + +3. 执行如下命令使修改配置生效。 + + ``` + sysctl -p + ``` + + +### 操作系统参数 + +**表 1** 操作系统参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数名称

+

参数说明

+

推荐取值

+

net.ipv4.tcp_max_tw_buckets

+

表示同时保持TIME_WAIT状态的TCP/IP连接最大数量。如果超过所配置的取值,TIME_WAIT将立刻被释放并打印警告信息。

+

10000

+

net.ipv4.tcp_tw_reuse

+

允许将TIME-WAIT状态的sockets重新用于新的TCP连接。

+
  • 0表示关闭。
  • 1表示开启。
+

1

+

net.ipv4.tcp_tw_recycle

+

表示开启TCP连接中TIME-WAIT状态sockets的快速回收。

+
  • 0表示关闭。
  • 1表示开启。
+

1

+

net.ipv4.tcp_keepalive_time

+

表示当keepalive启用的时候,TCP发送keepalive消息的频度。

+

30

+

net.ipv4.tcp_keepalive_probes

+

在认定连接失效之前,发送TCP的keepalive探测包数量。这个值乘以tcp_keepalive_intvl之后决定了一个连接发送了keepalive之后可以有多少时间没有回应。

+

9

+

net.ipv4.tcp_keepalive_intvl

+

当探测没有确认时,重新发送探测的频度。

+

30

+

net.ipv4.tcp_retries1

+

在连接建立过程中TCP协议最大重试次数。

+

5

+

net.ipv4.tcp_syn_retries

+

TCP协议SYN报文最大重试次数。

+

5

+

net.ipv4.tcp_synack_retries

+

TCP协议SYN应答报文最大重试次数。

+

5

+

net.sctp.path_max_retrans

+

SCTP协议最大重试次数。

+

10

+

net.sctp.max_init_retransmits

+

SCTP协议INIT报文最大重试次数。

+

10

+

net.sctp.association_max_retrans

+

SCTP协议单个逻辑连接最大重试次数。

+

10

+

net.sctp.hb_interval

+

SCTP协议心跳检测包重传间隔。

+

30000

+

net.ipv4.tcp_retries2

+

控制内核向已经建立连接的远程主机重新发送数据的次数,低值可以更早的检测到与远程主机失效的连接,因此服务器可以更快的释放该连接。

+

发生“connection reset by peer”时可以尝试调大该值规避问题。

+

12

+

vm.overcommit_memory

+

控制在做内存分配的时候,内核的检查方式。

+
  • 0:表示系统会尽量精确计算当前可用的内存。
  • 1:表示不作检查直接返回成功。
  • 2:内存总量×vm.overcommit_ratio/100+SWAP的总量,如果申请空间超过此数值则返回失败。
+

内核默认是2过于保守,推荐设置为0,如果系统压力大可以设置为1。

+

0

+

net.sctp.sndbuf_policy

+

SCTP发送缓冲区分配原则。

+
  • 0为按连接。
  • 1为按耦联。
+

0

+

net.sctp.rcvbuf_policy

+

SCTP接收缓冲区分配原则。

+
  • 0为按连接。
  • 1为按耦联。
+

0

+

net.sctp.sctp_mem

+

内核SCTP协议栈的最大可用内存,分无压力,有压力,和压力大三个区间,压力大时会丢包,单位为页面。

+

94500000 915000000 927000000

+

net.sctp.sctp_rmem

+

内核SCTP协议栈的接收总可用内存,分无压力,有压力和压力大三个区间,压力大时会丢包,单位为页面。

+

8192 250000 16777216

+

net.sctp.sctp_wmem

+

内核SCTP协议栈的发送总可用内存,分无压力,有压力和压力大三个区间,压力大时会丢包,单位为页面。

+

8192 250000 16777216

+

net.ipv4.tcp_rmem

+

TCP协议接收端缓冲区的可用内存大小。分无压力,有压力,和压力大三个区间,单位为页面。

+

8192 250000 16777216

+

net.ipv4.tcp_wmem

+

TCP协议发送端缓冲区的可用内存大小。分无压力,有压力,和压力大三个区间,单位为页面。

+

8192 250000 16777216

+

net.core.wmem_max

+

socket发送端缓冲区大小的最大值。

+

21299200

+

net.core.rmem_max

+

socket接收端缓冲区大小的最大值。

+

21299200

+

net.core.wmem_default

+

socket发送端缓冲区大小的默认值。

+

21299200

+

net.core.rmem_default

+

socket接收端缓冲区大小的默认值。

+

21299200

+

net.ipv4.ip_local_port_range

+

物理机可用临时端口范围。

+

26000-65535

+

kernel.sem

+

内核信号量参数设置大小。

+

250 6400000 1000 25600

+

vm.min_free_kbytes

+

保证物理内存有足够空闲空间,防止突发性换页。

+

系统总内存的5%

+

net.core.somaxconn

+

定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。

+

65535

+

net.ipv4.tcp_syncookies

+

当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击。

+
  • 0表示关闭SYN Cookies。
  • 1表示开启SYN Cookies。
+

1

+

net.sctp.addip_enable

+

SCTP动态地址重置支持开关

+
  • 0表示关闭。
  • 1表示开启。
+

0

+

net.core.netdev_max_backlog

+

在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

+

65535

+

net.ipv4.tcp_max_syn_backlog

+

记录的那些尚未收到客户端确认信息的连接请求的最大值。

+

65535

+

net.ipv4.tcp_fin_timeout

+

系统默认的超时时间。

+

60

+

kernel.shmall

+

内核可用的共享内存总量。

+

1152921504606846720

+

kernel.shmmax

+

内核参数定义单个共享内存段的最大值。

+

18446744073709551615

+

net.ipv4.tcp_sack

+

启用有选择的应答,通过有选择地应答乱序接受到的报文来提高性能,让发送者只发送丢失的报文段(对于广域网来说)这个选项应该启用,但是会增加对CPU的占用。

+
  • 0表示关闭。
  • 1表示开启
+

1

+

net.ipv4.tcp_timestamps

+

TCP时间戳(会在TCP包头增加12节),以一种比重发超时更精确的方式(参考RFC 1323)来启用对RTT的计算,启用可以实现更好的性能。

+
  • 0表示关闭。
  • 1表示开启
+

1

+

vm.extfrag_threshold

+

系统内存不够用时,linux会为当前系统内存碎片情况打分,如果超过vm.extfrag_threshold的值,kswapd就会触发memory compaction。所以这个值设置的接近1000,说明系统在内存碎片的处理倾向于把旧的页换出,以符合申请的需要,而设置接近0,表示系统在内存碎片的处理倾向做memory compaction。

+

500

+

vm.overcommit_ratio

+

系统使用绝不过量使用内存的算法时,系统整个内存地址空间不得超过swap+RAM值的此参数百分比,当vm.overcommit_memory=2时此参数生效。

+

90

+

/sys/module/sctp/parameters/no_checksums

+

SCTP协议是否关闭checksum。

+

0

+

MTU

+

节点网卡最大传输单元。OS默认值为1500,调整为8192可以提升SCTP协议数据收发的性能。

+

8192

+
+ +### 文件系统参数 + +- soft nofile + + 说明:soft nofile表示软限制,用户使用的文件句柄数量可以超过该限制,但是如果超过会有告警信息。 + + 推荐取值:1000000 + +- hard nofile + + 说明:hard nofile表示硬限制,是一个严格的限制,用户使用的文件句柄数量一定不能超过该设置。 + + 推荐取值:1000000 + +- stack size + + 说明:线程堆栈大小。 + + 推荐值:3072 + + +### transparent\_hugepage设置 + +openGauss默认关闭使用transparent\_hugepage服务,并将关闭命令写入操作系统启动文件。 + +### 文件句柄设置 + +需要对文件句柄数进行手动设置时,使用root用户执行如下命令进行参数修改: + +``` +echo "* soft nofile 1000000" >>/etc/security/limits.conf +echo "* hard nofile 1000000" >>/etc/security/limits.conf +``` + +完成修改后,需重启操作系统使得设置的参数生效。 + +**表 2** 文件句柄数设置 + + + + + + + + + + + + + + + + + + + +

参数名

+

说明

+

预安装时是否由脚本自动设置

+

推荐取值

+

* soft nofile

+

soft nofile表示软限制,即表示任何用户能打开的最大文件数量为1000000,不管它开启多少个shell。

+

+

1000000

+

* hard nofile

+

hard nofile表示硬限制,软限制要小于等于硬限制。

+

+

1000000

+
+ +### 系统支持的最大进程数设置 + +需要对系统支持的最大进程数进行手动设置时,执行如下命令打开conf文件。 + +``` +vim /etc/security/limits.d/90-nproc.conf +``` + +修改\* soft nproc参数。 + +完成修改后,需重启操作系统使得设置的参数生效。 + +**表 3** 系统支持的最大进程数设置 + + + + + + + + + + + + + + +

参数名

+

说明

+

预安装时是否由脚本自动设置

+

推荐取值

+

* soft nproc

+

soft nproc参数用来限制每个用户的最大processes数量。

+

+

unlimited

+
+ +### 网卡参数配置 + +**表 4** 网卡参数配置 + + + + + + + + + + + + + + + + + + + +

参数名

+

说明

+

预安装时是否由脚本自动设置

+

推荐取值

+

rx

+

网卡接收队列长度设置

+

+

4096

+

tx

+

网卡传送队列长度设置

+

+

4096

+
+ +>![](public_sys-resources/icon-notice.gif) **须知:** +>- 网卡参数配置功能只针对万兆及万兆以上级别的业务网卡。即backIp1所绑定的网卡。 +>- 设置网卡参数的命令只有在设置成功后,才会被写入系统启动文件。执行失败的信息会被记入后台日志中。 + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\346\211\213\345\267\245\345\273\272\347\253\213\344\272\222\344\277\241.md" "b/content/zh/docs/Quickstart/\346\211\213\345\267\245\345\273\272\347\253\213\344\272\222\344\277\241.md" deleted file mode 100644 index 9dacae907..000000000 --- "a/content/zh/docs/Quickstart/\346\211\213\345\267\245\345\273\272\347\253\213\344\272\222\344\277\241.md" +++ /dev/null @@ -1,310 +0,0 @@ -# 手工建立互信 - -openGauss在安装过程中,需要在openGauss中的主机间执行命令,传送文件等操作。因此,在普通用户安装前需要确保互信是连通的。前置脚本中会先建立root用户间的互信,然后创建普通用户,并建立普通用户间的互信。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->root用户互信可能会存在安全隐患,因此建议用户在使用完成后,立即删除各主机上root用户的互信。 - -## 前提条件 - -- 确保ssh服务打开。 -- 确保ssh端口不会被防火墙关闭。 -- 确保xml文件中各主机名称和IP配置正确。 -- 确保所有机器节点间网络畅通。 -- 如果为普通用户建立互信,需要提前在各主机创建相同用户并设置密码。 -- 如果各主机安装并启动了SELinux服务,需要确保/root和/home目录安全上下文为默认值(root目录:system\_u:object\_r:home\_root\_t:s0,home目录:system\_u:object\_r:admin\_home\_t:s0)或者关闭掉SELinux服务。 - - 检查系统SELinux状态的方法:执行命令getenforce,如果返回结果是Enforcing ,说明SELinux安装并启用。 - - 检查目录安全上下文的命令: - - ``` - ls -ldZ /root | awk '{print $4}' - ``` - - ``` - ls -ldZ /home | awk '{print $4}' - ``` - - 恢复目录安全上下文命令: - - ``` - restorecon -r -vv /home/ - ``` - - ``` - restorecon -r -vv /root/ - ``` - - -## 使用脚本建立互信 - -1. 创建一个执行互信脚本所需要的输入文本,并在此文件中添加openGauss中所有主机IP。 - - ``` - plat1:/opt/software/openGauss> vim hostfile - 192.168.0.1 - 192.168.0.2 - 192.168.0.3 - ``` - -2. 以需要创建互信的用户执行脚本。 -3. 执行下面脚本建立互信。 - - ``` - plat1:/opt/software/openGauss/script# ./gs_sshexkey -f /opt/software/hostfile - ``` - - /opt/software/hostfile为主机列表,列出所有需要建立互信机器的主机IP。 - - -## 手工建立互信 - -如果openGauss各主机的root密码不一致,gs\_preinstall脚本无法建立互信,可以手工建立互信。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->建立互信的过程中需要生成如下4个文件:authorized\_keys、id\_rsa、id\_rsa.pub、known\_hosts。请勿删除或破坏这些互信相关的文件。 - -手工建立信任关系,步骤如下,plat1,plat2,plat3是主机名: - -1. 在其中一个主机上,生成root用户的本机授权文件。假设在主机plat1上执行。 - 1. 生成密钥。 - - ``` - ssh-keygen -t rsa - ``` - - 示例如下: - - ``` - plat1:~ # ssh-keygen -t rsa - Generating public/private rsa key pair. - Enter file in which to save the key (/root/.ssh/id_rsa): - Created directory '/root/.ssh'. - Enter passphrase (empty for no passphrase): - Enter same passphrase again: - Your identification has been saved in /root/.ssh/id_rsa. - Your public key has been saved in /root/.ssh/id_rsa.pub. - The key fingerprint is: - d5:35:46:33:27:22:09:f0:1e:12:a7:87:fa:33:3f:ab root@plat1 - The key's randomart image is: - +--[ RSA 2048]----+ - | o.o.....O .| - | * .o + * | - | + + . . | - | . + o | - | . S | - | . | - | + | - | +. | - | E.oo | - +-----------------+ - ``` - - 2. 生成本机授权文件。 - - ``` - cat .ssh/id_rsa.pub >> ~/.ssh/authorized_keys - ``` - - 示例如下: - - ``` - plat1:~ # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys - ``` - -2. 收集所有的待建互信主机的公钥,写入到本机的known\_hosts文件中。此步骤需要在步骤1执行的主机上执行。需要收集plat1、plat2、plat3三个主机的公钥。 - 1. 收集plat1的公钥,写入到本机known\_hosts文件中。 - - ``` - ssh-keyscan -t rsa plat1 >> ~/.ssh/known_hosts - ``` - - 示例如下: - - ``` - plat1:~ # ssh-keyscan -t rsa plat1 >> ~/.ssh/known_hosts - # plat1 SSH-2.0-OpenSSH_5.1 - ``` - - 2. 收集plat2的公钥,写入到本机known\_hosts文件中。 - - ``` - ssh-keyscan -t rsa plat2 >> ~/.ssh/known_hosts - ``` - - 示例如下: - - ``` - plat1:~ # ssh-keyscan -t rsa plat2 >> ~/.ssh/known_hosts - # plat2 SSH-2.0-OpenSSH_5.1 - ``` - - 3. 收集plat3的公钥,写入到本机known\_hosts文件中。 - - ``` - ssh-keyscan -t rsa plat3 >> ~/.ssh/known_hosts - ``` - - 示例如下: - - ``` - plat1:~ # ssh-keyscan -t rsa plat3 >> ~/.ssh/known_hosts - # plat3 SSH-2.0-OpenSSH_5.1 - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known\_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分。 - >- 如果该主机上known\_hosts文件被删除,互信仍然可以使用,但是会有告警提示信息。如果需要规避告警提示信息,请将/etc/ssh/ssh\_config配置文件中,StrictHostKeyChecking参数设置为no。 - - -3. 将互信文件分发到其它所有主机上。在本例中,需要将plat1上的互信文件分发到plat2和plat3上。 - - 1、将互信文件分发到plat2上。Password输入拷贝目标主机的密码。 - - ``` - scp -r ~/.ssh plat2:~ - ``` - - 示例如下: - - ``` - plat1:~ # scp -r ~/.ssh plat2:~ - Password: - authorized_keys 100% 796 0.8KB/s 00:00 - id_rsa 100% 1675 1.6KB/s 00:00 - id_rsa.pub 100% 398 0.4KB/s 00:00 - known_hosts 100% 1089 1.1KB/s 00:00 - ``` - - 2、将互信文件分发到plat3上。Password输入拷贝目标主机的密码。 - - ``` - scp -r ~/.ssh plat3:~ - ``` - - 示例如下: - - ``` - plat1:~ # scp -r ~/.ssh plat3:~ - Password: - authorized_keys 100% 796 0.8KB/s 00:00 - id_rsa 100% 1675 1.6KB/s 00:00 - id_rsa.pub 100% 398 0.4KB/s 00:00 - known_hosts 100% 1089 1.1KB/s 00:00 - ``` - -4. 查看互信是否建成功,可以互相ssh主机名。输入exit退出。 - - ``` - plat1:~ # ssh plat2 - Last login: Sat Jun 20 14:01:07 2020 - plat2:~ # exit - logout - Connection to plat2 closed. - plat1:~ # - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >如果三个以上节点,和上述过程类似。假设节点名为plat1、plat2、plat3、......。第一步,需要在plat1上生成root用户的本机授权文件;第二步,需要收集所有待建互信主机\(plat1、plat2、plat3、......\)的公钥并写入到本机known\_hosts文件中;第三步,需要将互信文件分发到除本机外的所有其它主机\(plat2、plat3、......\)上;第四步,检查互信是否建立成功。 - - -## 删除root用户互信 - -为了避免Root用户互信可能存在的安全隐患,因此建议用户在使用完成后,立即删除各主机上root用户的互信。 - -1. 删除openGauss数据库各节点上的互信相关文件/root/.ssh。 - - rm –rf \~/.ssh - -2. 查看互信是否删除成功,可以互相ssh主机名,提示不能互信,互信删除成功。 - - plat1:\~ \# ssh plat2 - - he authenticity of host ' plssat2 \(plat2\)' can't be established. - - ECDSA key fingerprint is SHA256:Q4DPRedFytsjsJSKf4l2lHKuzVw4prq3bIUCNVKIa7M. - - ECDSA key fingerprint is MD5:e2:77:6c:aa:4c:43:5f:f2:c4:58:ec:d5:53:de:7c:fc. - - Are you sure you want to continue connecting \(yes/no\)? - - -## 示例 - -root用户建立互信示例: - -``` -plat1:~ # gs_sshexkey -f /opt/software/hostfile -W Gauss_123 -Checking network information. -All nodes in the network are Normal. -Successfully checked network information. -Creating SSH trust. -Creating the local key file. -Successfully created the local key files. -Appending local ID to authorized_keys. -Successfully appended local ID to authorized_keys. -Updating the known_hosts file. -Successfully updated the known_hosts file. -Appending authorized_key on the remote node. -Successfully appended authorized_key on all remote node. -Checking common authentication file content. -Successfully checked common authentication content. -Distributing SSH trust file to all node. -Successfully distributed SSH trust file to all node. -Verifying SSH trust on all hosts. -Successfully verified SSH trust on all hosts. -Successfully created SSH trust. -``` - -普通用户建立互信示例: - -``` -gaussdb@plat1:~ > gs_sshexkey -f /opt/software/hostfile -W Gauss_123 -Checking network information. -All nodes in the network are Normal. -Successfully checked network information. -Creating SSH trust. -Creating the local key file. -Successfully created the local key files. -Appending local ID to authorized_keys. -Successfully appended local ID to authorized_keys. -Updating the known_hosts file. -Successfully updated the known_hosts file. -Appending authorized_key on the remote node. -Successfully appended authorized_key on all remote node. -Checking common authentication file content. -Successfully checked common authentication content. -Distributing SSH trust file to all node. -Successfully distributed SSH trust file to all node. -Verifying SSH trust on all hosts. -Successfully verified SSH trust on all hosts. -Successfully created SSH trust. -``` - -安全模式下建立互信示例,需要用户根据提示,手动输入建立互信的用户密码(建议使用安全模式): - -``` -plat1:~ # gs_sshexkey -f /opt/software/hostfile -Please enter password for current user[root]. -Password: -Checking network information. -All nodes in the network are Normal. -Successfully checked network information. -Creating SSH trust. -Creating the local key file. -Appending local ID to authorized_keys. -Successfully appended local ID to authorized_keys. -Updating the known_hosts file. -Successfully updated the known_hosts file. -Appending authorized_key on the remote node. -Successfully appended authorized_key on all remote node. -Checking common authentication file content. -Successfully checked common authentication content. -Distributing SSH trust file to all node. -Successfully distributed SSH trust file to all node. -Verifying SSH trust on all hosts. -Successfully verified SSH trust on all hosts. -Successfully created SSH trust. -``` - diff --git "a/content/zh/docs/Quickstart/\346\235\203\351\231\220\350\265\213\344\272\210.md" "b/content/zh/docs/Quickstart/\346\235\203\351\231\220\350\265\213\344\272\210.md" deleted file mode 100644 index 7e795ad0c..000000000 --- "a/content/zh/docs/Quickstart/\346\235\203\351\231\220\350\265\213\344\272\210.md" +++ /dev/null @@ -1,259 +0,0 @@ -# 权限赋予 - -对角色和用户进行授权操作。 - -使用GRANT命令进行用户授权包括以下三种场景: - -- **将系统权限授权给角色或用户** - - 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。 - -- **将数据库对象授权给角色或用户** - - 将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户; - -- **将角色或用户的权限授权给其他角色或用户** - - 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 - - -## 语法格式 - -- 将表或视图的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES } [, ...] - | ALL [ PRIVILEGES ] } - ON { [ TABLE ] table_name [, ...] - | ALL TABLES IN SCHEMA schema_name [, ...] } - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - - ``` - -- 将表中字段的访问权限赋予指定的用户或角色。 - - ``` - GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )} [, ...] - | ALL [ PRIVILEGES ] ( column_name [, ...] ) } - ON [ TABLE ] table_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将数据库的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] - | ALL [ PRIVILEGES ] } - ON DATABASE database_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将域的访问权限赋予指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON DOMAIN domain_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本暂时不支持赋予域的访问权限。 - -- 将外部数据源的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON FOREIGN DATA WRAPPER fdw_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将外部服务器的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON FOREIGN SERVER server_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将函数的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { EXECUTE | ALL [ PRIVILEGES ] } - ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] - | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将过程语言的访问权限赋予给指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON LANGUAGE lang_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将大对象的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } - ON LARGE OBJECT loid [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本暂时不支持大对象。 - -- 将模式的访问权限赋予指定的用户或角色。 - - ``` - GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] } - ON SCHEMA schema_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的USAGE权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。 - -- 将表空间的访问权限赋予指定的用户或角色。 - - ``` - GRANT { CREATE | ALL [ PRIVILEGES ] } - ON TABLESPACE tablespace_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - -- 将类型的访问权限赋予指定的用户或角色。 - - ``` - GRANT { USAGE | ALL [ PRIVILEGES ] } - ON TYPE type_name [, ...] - TO { [ GROUP ] role_name | PUBLIC } [, ...] - [ WITH GRANT OPTION ]; - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本暂时不支持赋予类型的访问权限。 - -- 将角色的权限赋予其他用户或角色的语法。 - - ``` - GRANT role_name [, ...] - TO role_name [, ...] - [ WITH ADMIN OPTION ]; - ``` - -- 将sysadmin权限赋予指定的角色。 - - ``` - GRANT ALL { PRIVILEGES | PRIVILEGE } - TO role_name; - ``` - - -## 示例 - -**示例:将系统权限授权给用户或者角色。** - -创建名为joe的用户,并将sysadmin权限授权给他。 - -``` -postgres=# CREATE USER joe PASSWORD 'Bigdata@123'; -postgres=# GRANT ALL PRIVILEGES TO joe; -``` - -授权成功后,用户joe会拥有sysadmin的所有权限。 - -**示例:将对象权限授权给用户或者角色**。 - -1. 撤销joe用户的sysadmin权限,然后将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe。 - - ``` - postgres=# REVOKE ALL PRIVILEGES FROM joe; - postgres=# GRANT USAGE ON SCHEMA tpcds TO joe; - postgres=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; - ``` - - 授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。 - -2. 将tpcds.reason表中r\_reason\_sk、r\_reason\_id、r\_reason\_desc列的查询权限,r\_reason\_desc的更新权限授权给joe。 - - ``` - postgres=# GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; - ``` - - 授权成功后,用户joe对tpcds.reason表中r\_reason\_sk,r\_reason\_id的查询权限会立即生效。如果joe用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对joe用户进行授权。 - - ``` - postgres=# GRANT select (r_reason_sk, r_reason_id) ON tpcds.reason TO joe WITH GRANT OPTION; - ``` - - 将数据库postgres的连接权限授权给用户joe,并给予其在postgres中创建schema的权限,而且允许joe将此权限授权给其他用户。 - - ``` - postgres=# GRANT create,connect on database postgres TO joe WITH GRANT OPTION; - ``` - - 创建角色tpcds\_manager,将模式tpcds的访问权限授权给角色tpcds\_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其他人。 - - ``` - postgres=# CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123'; - postgres=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; - ``` - - 将表空间tpcds\_tbspc的所有权限授权给用户joe,但用户joe无法将权限继续授予其他用户。 - - ``` - postgres=# CREATE TABLESPACE tpcds_tbspc RELATIVE LOCATION 'tablespace/tablespace_1'; - postgres=# GRANT ALL ON TABLESPACE tpcds_tbspc TO joe; - ``` - - -**示例:将用户或者角色的权限授权给其他用户或角色。** - -1. 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人。 - - ``` - postgres=# CREATE ROLE manager PASSWORD 'Bigdata@123'; - postgres=# GRANT joe TO manager WITH ADMIN OPTION; - ``` - -2. 创建用户senior\_manager,将用户manager的权限授权给该用户。 - - ``` - postgres=# CREATE ROLE senior_manager PASSWORD 'Bigdata@123'; - postgres=# GRANT manager TO senior_manager; - ``` - -3. 撤销权限,并清理用户。 - - ``` - postgres=# REVOKE manager FROM joe; - postgres=# REVOKE senior_manager FROM manager; - postgres=# DROP USER manager; - ``` - - -**示例:撤销上述授予的权限,并清理角色和用户。** - -``` -postgres=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; -postgres=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; -postgres=# REVOKE ALL ON TABLESPACE tpcds_tbspc FROM joe; -postgres=# DROP TABLESPACE tpcds_tbspc; -postgres=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; -postgres=# DROP ROLE tpcds_manager; -postgres=# DROP ROLE senior_manager; -postgres=# DROP USER joe CASCADE; -``` - diff --git "a/content/zh/docs/Quickstart/\346\237\245\347\234\213\345\217\202\346\225\260\345\275\223\345\211\215\345\217\226\345\200\274.md" "b/content/zh/docs/Quickstart/\346\237\245\347\234\213\345\217\202\346\225\260\345\275\223\345\211\215\345\217\226\345\200\274.md" deleted file mode 100644 index f9d231f4a..000000000 --- "a/content/zh/docs/Quickstart/\346\237\245\347\234\213\345\217\202\346\225\260\345\275\223\345\211\215\345\217\226\345\200\274.md" +++ /dev/null @@ -1,70 +0,0 @@ -# 查看参数当前取值 - -openGauss安装后,有一套默认的运行参数,为了使openGauss与业务的配合度更高,用户需要根据业务场景和数据量的大小进行GUC参数调整。 - -## 操作步骤 - -1. 以操作系统用户omm登录数据库主节点。 -2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - -3. 查看数据库运行参数当前取值。 - - 方法一:使用SHOW命令。 - - 使用如下命令查看单个参数: - - ``` - postgres=# SHOW server_version; - ``` - - server\_version显示数据库版本信息的参数。 - - - 使用如下命令查看所有参数: - - ``` - postgres=# SHOW ALL; - ``` - - - - 方法二:使用pg\_settings视图。 - - 使用如下命令查看单个参数: - - ``` - postgres=# SELECT * FROM pg_settings WHERE NAME='server_version'; - ``` - - - 使用如下命令查看所有参数: - - ``` - postgres=# SELECT * FROM pg_settings; - ``` - - - - -## 示例 - -查看服务器的版本号。 - -``` -postgres=# SHOW server_version; - server_version ----------------- - 9.2.4 -(1 row) -``` - diff --git "a/content/zh/docs/Quickstart/\346\237\245\347\234\213\345\257\271\350\261\241.md" "b/content/zh/docs/Quickstart/\346\237\245\347\234\213\345\257\271\350\261\241.md" deleted file mode 100644 index e5720219a..000000000 --- "a/content/zh/docs/Quickstart/\346\237\245\347\234\213\345\257\271\350\261\241.md" +++ /dev/null @@ -1,49 +0,0 @@ -# 查看对象 - -- 查看帮助信息 - - ``` - \? - ``` - -- 切换数据库 - - ``` - \c dbname - ``` - -- 列举数据库 - - ``` - \l - ``` - - -- 列举表 - - ``` - \dt - ``` - - -- 查看表结构 - - ``` - \d tablename - ``` - - -- 列举schema - - ``` - \dn - ``` - - -- 查看索引 - - ``` - \di - ``` - - diff --git "a/content/zh/docs/Quickstart/\347\241\256\350\256\244\350\277\236\346\216\245\344\277\241\346\201\257.md" "b/content/zh/docs/Quickstart/\347\241\256\350\256\244\350\277\236\346\216\245\344\277\241\346\201\257.md" deleted file mode 100644 index ee1cfccd0..000000000 --- "a/content/zh/docs/Quickstart/\347\241\256\350\256\244\350\277\236\346\216\245\344\277\241\346\201\257.md" +++ /dev/null @@ -1,48 +0,0 @@ -# 确认连接信息 - -客户端工具通过数据库主节点连接数据库。因此连接前,需获取数据库主节点所在服务器的IP地址及数据库主节点的端口号信息。 - -## 操作步骤 - -1. 以操作系统用户omm登录数据库主节点。 -2. 使用“gs\_om -t status --detail”命令查询openGauss各实例情况。 - - ``` - gs_om -t status --detail - ``` - - ``` - [ DBnode State ] - - node node_ip instance state - ----------------------------------------------------------------------------- - 1 plat1 192.168.0.11 5001 /srv/BigData/gaussdb/data1/dbnode Normal - 2 plat2 192.168.0.12 5002 /srv/BigData/gaussdb/data1/dbnode Normal - 3 plat3 192.168.0.13 5003 /srv/BigData/gaussdb/data1/dbnode Normal - ``` - - 如上部署了数据库主节点实例的服务器IP地址分别为192.168.10.11、192.168.10.12和192.168.0.13。数据库主节点数据路径为“/srv/BigData/gaussdb/data1/dbnode”。 - -3. 确认数据库主节点的端口号。 - - 在[2](#zh-cn_topic_0242370176_zh-cn_topic_0237120290_zh-cn_topic_0062129725_li736435692628)查到的数据库主节点数据路径下的postgresql.conf文件中查看端口号信息。示例如下: - - ``` - cat /srv/BigData/gaussdb/data1/dbnode/postgresql.conf | grep port - ``` - - ``` - port = 8000 # (change requires restart) - #comm_sctp_port = 1024 # Assigned by installation (change requires restart) - #comm_control_port = 10001 # Assigned by installation (change requires restart) - # supported by the operating system: - # e.g. 'localhost=10.145.130.2 localport=12211 remotehost=10.145.130.3 remoteport=12212, localhost=10.145.133.2 localport=12213 remotehost=10.145.133.3 remoteport=12214' - # e.g. 'localhost=10.145.130.2 localport=12311 remotehost=10.145.130.4 remoteport=12312, localhost=10.145.133.2 localport=12313 remotehost=10.145.133.4 remoteport=12314' - # %r = remote host and port - alarm_report_interval = 10 - support_extended_features=true - ``` - - 8000为数据库主节点的端口号。 - - diff --git "a/content/zh/docs/Quickstart/\347\244\272\344\276\213.md" "b/content/zh/docs/Quickstart/\347\244\272\344\276\213.md" deleted file mode 100644 index 789a2dcdb..000000000 --- "a/content/zh/docs/Quickstart/\347\244\272\344\276\213.md" +++ /dev/null @@ -1,90 +0,0 @@ -# 示例 - -## 单节点配置文件 - -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - -## 一主一备配置文件 - -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -``` - diff --git "a/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\225\260\346\215\256\347\256\241\347\220\206.md" "b/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\225\260\346\215\256\347\256\241\347\220\206.md" index 885a06b27..e4a0f47d9 100644 --- "a/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\225\260\346\215\256\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\225\260\346\215\256\347\256\241\347\220\206.md" @@ -1,9 +1,788 @@ # 简单数据管理 -- **[创建数据库](创建数据库.md)** + -- **[创建表](创建表.md)** +- [简单数据管理](#简单数据管理a-namezh-cn_topic_0241704258a) + - [创建数据库](#创建数据库a-namezh-cn_topic_0241704259a) + - [注意事项](#注意事项a-namezh-cn_topic_0241234235_zh-cn_topic_0059778277_s818d4df5d095482f86d8e7258a75df1ba) + - [语法格式](#语法格式a-namezh-cn_topic_0241234235_zh-cn_topic_0059778277_s819ed4de9ed04006954df8016e5e4858a) + - [示例](#示例a-namezh-cn_topic_0241234235_section5221233281a) + - [创建表](#创建表a-namezh-cn_topic_0241704260a) + - [语法格式](#语法格式a-namezh-cn_topic_0241234236_zh-cn_topic_0059778169_sc7a49d08f8ac43189f0e7b1c74f877eba) + - [示例](#示例a-namezh-cn_topic_0241234236_zh-cn_topic_0059778169_s86758dcf05d442d2a9ebd272e76ed1b8a) + - [查看对象](#查看对象a-namezh-cn_topic_0241704261a) -- **[查看对象](查看对象.md)** + +## 创建数据库 + +创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。 + +### 注意事项 + +- 只有拥有CREATEDB权限的用户才可以创建新数据库,系统管理员默认拥有此权限。 +- 不能在事务块中执行创建数据库语句。 +- 在创建数据库过程中,若出现类似“could not initialize database directory”的错误提示,可能是由于文件系统上数据目录的权限不足或磁盘满等原因引起。 + +### 语法格式 + +``` +CREATE DATABASE database_name + [ [ WITH ] { [ OWNER [=] user_name ] | + [ TEMPLATE [=] template ] | + [ ENCODING [=] encoding ] | + [ LC_COLLATE [=] lc_collate ] | + [ LC_CTYPE [=] lc_ctype ] | + [ DBCOMPATIBILITY [=] compatibilty_type ] | + [ TABLESPACE [=] tablespace_name ] | + [ CONNECTION LIMIT [=] connlimit ]}[...] ]; +``` + +### 示例 + +``` +--创建jim和tom用户。 +postgres=# CREATE USER jim PASSWORD 'Bigdata@123'; +postgres=# CREATE USER tom PASSWORD 'Bigdata@123'; + +--创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK)。 +postgres=# CREATE DATABASE music ENCODING 'GBK' template = template0; + +--创建数据库music2,并指定所有者为jim。 +postgres=# CREATE DATABASE music2 OWNER jim; + +--用模板template0创建数据库music3,并指定所有者为jim。 +postgres=# CREATE DATABASE music3 OWNER jim TEMPLATE template0; + +--设置music数据库的连接数为10。 +postgres=# ALTER DATABASE music CONNECTION LIMIT= 10; + +--将music名称改为music4。 +postgres=# ALTER DATABASE music RENAME TO music4; + +--将数据库music2的所属者改为tom。 +postgres=# ALTER DATABASE music2 OWNER TO tom; + +--设置music3的表空间为PG_DEFAULT。 +postgres=# ALTER DATABASE music3 SET TABLESPACE PG_DEFAULT; + +--关闭在数据库music3上缺省的索引扫描。 +postgres=# ALTER DATABASE music3 SET enable_indexscan TO off; + +--重置enable_indexscan参数。 +postgres=# ALTER DATABASE music3 RESET enable_indexscan; + +--删除数据库。 +postgres=# DROP DATABASE music2; +postgres=# DROP DATABASE music3; +postgres=# DROP DATABASE music4; + +--删除jim和tom用户。 +postgres=# DROP USER jim; +postgres=# DROP USER tom; + +--创建兼容TD格式的数据库。 +postgres=# CREATE DATABASE td_compatible_db DBCOMPATIBILITY 'C'; + +--创建兼容ORA格式的数据库。 +postgres=# CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'A'; + +--删除兼容TD、ORA格式的数据库。 +postgres=# DROP DATABASE td_compatible_db; +postgres=# DROP DATABASE ora_compatible_db; +``` + +## 创建表 + +在当前数据库中创建一个新的空白表,该表由命令执行者所有。 + +创建表时,如未指定表的存储方式,默认创建的是行存表;如未指定分布列时,取表的主键列(如果有的话)或首个可以作为分布列的列。 + +### 语法格式 + +- 创建表。 + + ``` + CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name + ({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] + | table_constraint + | LIKE source_table [ like_option [...] ] } + [, ... ]) + [ WITH ( {storage_parameter = value} [, ... ] ) ] + [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] + [ COMPRESS | NOCOMPRESS ] + [ TABLESPACE tablespace_name ]; + ``` + + - 其中列约束column\_constraint为: + + ``` + [ CONSTRAINT constraint_name ] + { NOT NULL | + NULL | + CHECK ( expression ) | + DEFAULT default_expr | + UNIQUE index_parameters | + PRIMARY KEY index_parameters } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + - 其中列的压缩可选项compress\_mode为: + + ``` + { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } + ``` + + - 其中表约束table\_constraint为: + + ``` + [ CONSTRAINT constraint_name ] + { CHECK ( expression ) | + UNIQUE ( column_name [, ... ] ) index_parameters | + PRIMARY KEY ( column_name [, ... ] ) index_parameters | + PARTIAL CLUSTER KEY ( column_name [, ... ] ) } + [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] + ``` + + - 其中like选项like\_option为: + + ``` + { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | ALL } + ``` + + + +其中索引参数index\_parameters为: + +``` +[ WITH ( {storage_parameter = value} [, ... ] ) ] +[ USING INDEX TABLESPACE tablespace_name ] +``` + +### 示例 + +``` +--创建简单的表。 +postgres=# CREATE TABLE tpcds.warehouse_t1 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +postgres=# CREATE TABLE tpcds.warehouse_t2 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) DICTIONARY, + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); +``` + +``` +--创建表,并指定W_STATE字段的缺省值为GA。 +postgres=# CREATE TABLE tpcds.warehouse_t3 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) DEFAULT 'GA', + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建表,并在事务结束时检查W_WAREHOUSE_NAME字段是否有重复。 +postgres=# CREATE TABLE tpcds.warehouse_t4 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) UNIQUE DEFERRABLE, + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); +``` + +``` +--创建一个带有70%填充因子的表。 +postgres=# CREATE TABLE tpcds.warehouse_t5 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + UNIQUE(W_WAREHOUSE_NAME) WITH(fillfactor=70) +); + +--或者用下面的语法。 +postgres=# CREATE TABLE tpcds.warehouse_t6 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) UNIQUE, + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) WITH(fillfactor=70); + +--创建表,并指定该表数据不写入预写日志。 +postgres=# CREATE UNLOGGED TABLE tpcds.warehouse_t7 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建表临时表。 +postgres=# CREATE TEMPORARY TABLE warehouse_t24 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建本地临时表,并指定提交事务时删除该临时表数据。 +postgres=# CREATE TEMPORARY TABLE warehouse_t25 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) ON COMMIT DELETE ROWS; + +--创建全局临时表,并指定会话结束时删除该临时表数据。 +postgres=# CREATE GLOBAL TEMPORARY TABLE gtt1 +( + ID INTEGER NOT NULL, + NAME CHAR(16) NOT NULL, + ADDRESS VARCHAR(50) , + POSTCODE CHAR(6) +) ON COMMIT PRESERVE ROWS; + +--创建表时,不希望因为表已存在而报错。 +postgres=# CREATE TABLE IF NOT EXISTS tpcds.warehouse_t8 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--创建普通表空间。 +postgres=# CREATE TABLESPACE DS_TABLESPACE1 RELATIVE LOCATION 'tablespace/tablespace_1'; +--创建表时,指定表空间。 +postgres=# CREATE TABLE tpcds.warehouse_t9 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) TABLESPACE DS_TABLESPACE1; + +--创建表时,单独指定W_WAREHOUSE_NAME的索引表空间。 +postgres=# CREATE TABLE tpcds.warehouse_t10 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) UNIQUE USING INDEX TABLESPACE DS_TABLESPACE1, + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); +``` + +``` +--创建一个有主键约束的表。 +postgres=# CREATE TABLE tpcds.warehouse_t11 +( + W_WAREHOUSE_SK INTEGER PRIMARY KEY, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +---或是用下面的语法,效果完全一样。 +postgres=# CREATE TABLE tpcds.warehouse_t12 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + PRIMARY KEY(W_WAREHOUSE_SK) +); + +--或是用下面的语法,指定约束的名称。 +postgres=# CREATE TABLE tpcds.warehouse_t13 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CSTR_KEY1 PRIMARY KEY(W_WAREHOUSE_SK) +); + +--创建一个有复合主键约束的表。 +postgres=# CREATE TABLE tpcds.warehouse_t14 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CSTR_KEY2 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) +); + +--创建列存表。 +postgres=# CREATE TABLE tpcds.warehouse_t15 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) WITH (ORIENTATION = COLUMN); + +--创建局部聚簇存储的列存表。 +postgres=# CREATE TABLE tpcds.warehouse_t16 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + PARTIAL CLUSTER KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) +) WITH (ORIENTATION = COLUMN); + +--定义一个带压缩的列存表。 +postgres=# CREATE TABLE tpcds.warehouse_t17 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) WITH (ORIENTATION = COLUMN, COMPRESSION=HIGH); + +--定义一个带压缩的表。 +postgres=# CREATE TABLE tpcds.warehouse_t18 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +) COMPRESS; + +--定义一个检查列约束。 +postgres=# CREATE TABLE tpcds.warehouse_t19 +( + W_WAREHOUSE_SK INTEGER PRIMARY KEY CHECK (W_WAREHOUSE_SK > 0), + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +postgres=# CREATE TABLE tpcds.warehouse_t20 +( + W_WAREHOUSE_SK INTEGER PRIMARY KEY, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CONSTR_KEY2 CHECK(W_WAREHOUSE_SK > 0 AND W_WAREHOUSE_NAME IS NOT NULL) +); + +--定义一个表,表中每一个行存在数据库节点中。 +postgres=# CREATE TABLE tpcds.warehouse_t21 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2) +); + +--定义一个表,使用HASH分布。 +postgres=# CREATE TABLE tpcds.warehouse_t22 +( + W_WAREHOUSE_SK INTEGER NOT NULL, + W_WAREHOUSE_ID CHAR(16) NOT NULL, + W_WAREHOUSE_NAME VARCHAR(20) , + W_WAREHOUSE_SQ_FT INTEGER , + W_STREET_NUMBER CHAR(10) , + W_STREET_NAME VARCHAR(60) , + W_STREET_TYPE CHAR(15) , + W_SUITE_NUMBER CHAR(10) , + W_CITY VARCHAR(60) , + W_COUNTY VARCHAR(30) , + W_STATE CHAR(2) , + W_ZIP CHAR(10) , + W_COUNTRY VARCHAR(20) , + W_GMT_OFFSET DECIMAL(5,2), + CONSTRAINT W_CONSTR_KEY3 UNIQUE(W_WAREHOUSE_SK) +); + +--向tpcds.warehouse_t19表中增加一个varchar列。 +``` + +``` +postgres=# ALTER TABLE tpcds.warehouse_t19 ADD W_GOODS_CATEGORY varchar(30); + +--给tpcds.warehouse_t19表增加一个检查约束。 +postgres=# ALTER TABLE tpcds.warehouse_t19 ADD CONSTRAINT W_CONSTR_KEY4 CHECK (W_STATE IS NOT NULL); + +--在一个操作中改变两个现存字段的类型。 +postgres=# ALTER TABLE tpcds.warehouse_t19 + ALTER COLUMN W_GOODS_CATEGORY TYPE varchar(80), + ALTER COLUMN W_STREET_NAME TYPE varchar(100); + +--此语句与上面语句等效。 +postgres=# ALTER TABLE tpcds.warehouse_t19 MODIFY (W_GOODS_CATEGORY varchar(30), W_STREET_NAME varchar(60)); + +--给一个已存在字段添加非空约束。 +postgres=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY SET NOT NULL; + +--移除已存在字段的非空约束。 +postgres=# ALTER TABLE tpcds.warehouse_t19 ALTER COLUMN W_GOODS_CATEGORY DROP NOT NULL; + +--如果列存表中还未指定局部聚簇,向在一个列存表中添加局部聚簇列。 +postgres=# ALTER TABLE tpcds.warehouse_t17 ADD PARTIAL CLUSTER KEY(W_WAREHOUSE_SK); + +--查看约束的名称,并删除一个列存表中的局部聚簇列。 +postgres=# \d+ tpcds.warehouse_t17 + Table "tpcds.warehouse_t17" + Column | Type | Modifiers | Storage | Stats target | Description +-------------------+-----------------------+-----------+----------+--------------+------------- + w_warehouse_sk | integer | not null | plain | | + w_warehouse_id | character(16) | not null | extended | | + w_warehouse_name | character varying(20) | | extended | | + w_warehouse_sq_ft | integer | | plain | | + w_street_number | character(10) | | extended | | + w_street_name | character varying(60) | | extended | | + w_street_type | character(15) | | extended | | + w_suite_number | character(10) | | extended | | + w_city | character varying(60) | | extended | | + w_county | character varying(30) | | extended | | + w_state | character(2) | | extended | | + w_zip | character(10) | | extended | | + w_country | character varying(20) | | extended | | + w_gmt_offset | numeric(5,2) | | main | | +Partial Cluster : + "warehouse_t17_cluster" PARTIAL CLUSTER KEY (w_warehouse_sk) +Has OIDs: no +Location Nodes: ALL DATANODES +Options: compression=no, version=0.12 +postgres=# ALTER TABLE tpcds.warehouse_t17 DROP CONSTRAINT warehouse_t17_cluster; + +--将表移动到另一个表空间。 +postgres=# ALTER TABLE tpcds.warehouse_t19 SET TABLESPACE PG_DEFAULT; +--创建模式joe。 +postgres=# CREATE SCHEMA joe; + +--将表移动到另一个模式中。 +postgres=# ALTER TABLE tpcds.warehouse_t19 SET SCHEMA joe; + +--重命名已存在的表。 +postgres=# ALTER TABLE joe.warehouse_t19 RENAME TO warehouse_t23; + +--从warehouse_t23表中删除一个字段。 +postgres=# ALTER TABLE joe.warehouse_t23 DROP COLUMN W_STREET_NAME; + +--删除表空间、模式joe和模式表warehouse。 +postgres=# DROP TABLE tpcds.warehouse_t1; +postgres=# DROP TABLE tpcds.warehouse_t2; +postgres=# DROP TABLE tpcds.warehouse_t3; +postgres=# DROP TABLE tpcds.warehouse_t4; +postgres=# DROP TABLE tpcds.warehouse_t5; +postgres=# DROP TABLE tpcds.warehouse_t6; +postgres=# DROP TABLE tpcds.warehouse_t7; +postgres=# DROP TABLE tpcds.warehouse_t8; +postgres=# DROP TABLE tpcds.warehouse_t9; +postgres=# DROP TABLE tpcds.warehouse_t10; +postgres=# DROP TABLE tpcds.warehouse_t11; +postgres=# DROP TABLE tpcds.warehouse_t12; +postgres=# DROP TABLE tpcds.warehouse_t13; +postgres=# DROP TABLE tpcds.warehouse_t14; +postgres=# DROP TABLE tpcds.warehouse_t15; +postgres=# DROP TABLE tpcds.warehouse_t16; +postgres=# DROP TABLE tpcds.warehouse_t17; +postgres=# DROP TABLE tpcds.warehouse_t18; +postgres=# DROP TABLE tpcds.warehouse_t20; +postgres=# DROP TABLE tpcds.warehouse_t21; +postgres=# DROP TABLE tpcds.warehouse_t22; +postgres=# DROP TABLE joe.warehouse_t23; +postgres=# DROP TABLE tpcds.warehouse_t24; +postgres=# DROP TABLE tpcds.warehouse_t25; +postgres=# DROP TABLESPACE DS_TABLESPACE1; +postgres=# DROP SCHEMA IF EXISTS joe CASCADE; +``` + +## 查看对象 + +- 查看帮助信息 + + ``` + \? + ``` + +- 切换数据库 + + ``` + \c dbname + ``` + +- 列举数据库 + + ``` + \l + ``` + + +- 列举表 + + ``` + \dt + ``` + + +- 查看表结构 + + ``` + \d tablename + ``` + + +- 列举schema + + ``` + \dn + ``` + + +- 查看索引 + + ``` + \di + ``` + + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\235\203\351\231\220\347\256\241\347\220\206.md" "b/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\235\203\351\231\220\347\256\241\347\220\206.md" index 9aefa9823..1f08517de 100644 --- "a/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\235\203\351\231\220\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Quickstart/\347\256\200\345\215\225\346\235\203\351\231\220\347\256\241\347\220\206.md" @@ -1,9 +1,432 @@ # 简单权限管理 -- **[创建角色](创建角色.md)** + -- **[创建用户](创建用户.md)** +- [简单权限管理](#简单权限管理a-namezh-cn_topic_0241704262a) + - [创建角色](#创建角色a-namezh-cn_topic_0241704263a) + - [注意事项](#注意事项a-namezh-cn_topic_0241234239_zh-cn_topic_0059778189_sca46ba0a91d7470c94ec4197a5befe87a) + - [语法格式](#语法格式a-namezh-cn_topic_0241234239_zh-cn_topic_0059778189_se8fd2944bc8f42e2be5e7bd140f801fca) + - [示例](#示例a-namezh-cn_topic_0241234239_zh-cn_topic_0059778189_s0dea2f90b8474387aff0ab3f366a611ea) + - [创建用户](#创建用户a-namezh-cn_topic_0241704264a) + - [注意事项](#注意事项a-namezh-cn_topic_0241234240_zh-cn_topic_0059778166_sd48f2980b9464b1abca65a4747930552a) + - [语法格式](#语法格式a-namezh-cn_topic_0241234240_zh-cn_topic_0059778166_s93c6eaefe7c447408b7d42ff86e6035fa) + - [示例](#示例a-namezh-cn_topic_0241234240_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074faa) + - [权限赋予](#权限赋予a-namezh-cn_topic_0241704265a) + - [语法格式](#语法格式a-namezh-cn_topic_0241234241_zh-cn_topic_0059778755_s9b21365068e9482782f400457afa8a01a) + - [示例](#示例a-namezh-cn_topic_0241234241_zh-cn_topic_0059778755_s724dfb1c8978412b95cb308b64dfa447a) -- **[权限赋予](权限赋予.md)** + +## 创建角色 + +创建角色。 + +角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。 + +### 注意事项 + +- 在数据库中添加一个新角色,角色无登录权限。 +- 创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。 + +### 语法格式 + +``` +CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; +``` + +其中角色信息设置子句option语法为: + +``` +{SYSADMIN | NOSYSADMIN} + | {AUDITADMIN | NOAUDITADMIN} + | {CREATEDB | NOCREATEDB} + | {USEFT | NOUSEFT} + | {CREATEROLE | NOCREATEROLE} + | {INHERIT | NOINHERIT} + | {LOGIN | NOLOGIN} + | {REPLICATION | NOREPLICATION} + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | TEMP SPACE 'tmpspacelimit' + | SPILL SPACE 'spillspacelimit' + | IN ROLE role_name [, ...] + | IN GROUP role_name [, ...] + | ROLE role_name [, ...] + | ADMIN rol e_name [, ...] + | USER role_name [, ...] + | SYSID uid + | DEFAULT TABLESPACE tablespace_name + | PROFILE DEFAULT + | PROFILE profile_name + | PGUSER +``` + +### 示例 + +``` +--创建一个角色,名为manager,密码为Bigdata@123。 +postgres=# CREATE ROLE manager IDENTIFIED BY 'Bigdata@123'; + +--创建一个角色,从2015年1月1日开始生效,到2026年1月1日失效。 +postgres=# CREATE ROLE miriam WITH LOGIN PASSWORD 'Bigdata@123' VALID BEGIN '2015-01-01' VALID UNTIL '2026-01-01'; + +--修改角色manager的密码为abcd@123。 +postgres=# ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'Bigdata@123'; + +--修改角色manager为系统管理员。 +postgres=# ALTER ROLE manager SYSADMIN; + +--删除角色manager。 +postgres=# DROP ROLE manager; + +--删除角色miriam。 +postgres=# DROP ROLE miriam; +``` + +## 创建用户 + +创建一个用户。 + +### 注意事项 + +- 通过CREATE USER创建的用户,默认具有LOGIN权限; +- 通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。 +- 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。 + +### 语法格式 + +``` +CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; +``` + +其中option子句用于设置权限及属性等信息。 + +``` +{SYSADMIN | NOSYSADMIN} + | {AUDITADMIN | NOAUDITADMIN} + | {CREATEDB | NOCREATEDB} + | {USEFT | NOUSEFT} + | {CREATEROLE | NOCREATEROLE} + | {INHERIT | NOINHERIT} + | {LOGIN | NOLOGIN} + | {REPLICATION | NOREPLICATION} + | {INDEPENDENT | NOINDEPENDENT} + | {VCADMIN | NOVCADMIN} + | CONNECTION LIMIT connlimit + | VALID BEGIN 'timestamp' + | VALID UNTIL 'timestamp' + | RESOURCE POOL 'respool' + | PERM SPACE 'spacelimit' + | TEMP SPACE 'tmpspacelimit' + | SPILL SPACE 'spillspacelimit' + | IN ROLE role_name [, ...] + | IN GROUP role_name [, ...] + | ROLE role_name [, ...] + | ADMIN role_name [, ...] + | USER role_name [, ...] + | SYSID uid + | DEFAULT TABLESPACE tablespace_name + | PROFILE DEFAULT + | PROFILE profile_name + | PGUSER +``` + +### 示例 + +``` +--创建用户jim,登录密码为Bigdata@123。 +postgres=# CREATE USER jim PASSWORD 'Bigdata@123'; + +--下面语句与上面的等价。 +postgres=# CREATE USER kim IDENTIFIED BY 'Bigdata@123'; + +--如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。 +postgres=# CREATE USER dim CREATEDB PASSWORD 'Bigdata@123'; + +--将用户jim的登录密码由Bigdata@123修改为Abcd@123。 +postgres=# ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Bigdata@123'; + +--为用户jim追加CREATEROLE权限。 +postgres=# ALTER USER jim CREATEROLE; + +--将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。 +postgres=# ALTER USER jim SET enable_seqscan TO on; + +--重置jim的enable_seqscan参数。 +postgres=# ALTER USER jim RESET enable_seqscan; + +--锁定jim帐户。 +postgres=# ALTER USER jim ACCOUNT LOCK; + +--删除用户。 +postgres=# DROP USER kim CASCADE; +postgres=# DROP USER jim CASCADE; +postgres=# DROP USER dim CASCADE; +``` + +## 权限赋予 + +对角色和用户进行授权操作。 + +使用GRANT命令进行用户授权包括以下三种场景: + +- **将系统权限授权给角色或用户** + + 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。 + +- **将数据库对象授权给角色或用户** + + 将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户; + +- **将角色或用户的权限授权给其他角色或用户** + + 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 + + +### 语法格式 + +- 将表或视图的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES } [, ...] + | ALL [ PRIVILEGES ] } + ON { [ TABLE ] table_name [, ...] + | ALL TABLES IN SCHEMA schema_name [, ...] } + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + + ``` + +- 将表中字段的访问权限赋予指定的用户或角色。 + + ``` + GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )} [, ...] + | ALL [ PRIVILEGES ] ( column_name [, ...] ) } + ON [ TABLE ] table_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将数据库的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] + | ALL [ PRIVILEGES ] } + ON DATABASE database_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将域的访问权限赋予指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON DOMAIN domain_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >本版本暂时不支持赋予域的访问权限。 + +- 将外部数据源的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON FOREIGN DATA WRAPPER fdw_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将外部服务器的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON FOREIGN SERVER server_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将函数的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { EXECUTE | ALL [ PRIVILEGES ] } + ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] + | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将过程语言的访问权限赋予给指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON LANGUAGE lang_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将大对象的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } + ON LARGE OBJECT loid [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >本版本暂时不支持大对象。 + +- 将模式的访问权限赋予指定的用户或角色。 + + ``` + GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] } + ON SCHEMA schema_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的USAGE权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。 + +- 将表空间的访问权限赋予指定的用户或角色。 + + ``` + GRANT { CREATE | ALL [ PRIVILEGES ] } + ON TABLESPACE tablespace_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + +- 将类型的访问权限赋予指定的用户或角色。 + + ``` + GRANT { USAGE | ALL [ PRIVILEGES ] } + ON TYPE type_name [, ...] + TO { [ GROUP ] role_name | PUBLIC } [, ...] + [ WITH GRANT OPTION ]; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >本版本暂时不支持赋予类型的访问权限。 + +- 将角色的权限赋予其他用户或角色的语法。 + + ``` + GRANT role_name [, ...] + TO role_name [, ...] + [ WITH ADMIN OPTION ]; + ``` + +- 将sysadmin权限赋予指定的角色。 + + ``` + GRANT ALL { PRIVILEGES | PRIVILEGE } + TO role_name; + ``` + + +### 示例 + +**示例:将系统权限授权给用户或者角色。** + +创建名为joe的用户,并将sysadmin权限授权给他。 + +``` +postgres=# CREATE USER joe PASSWORD 'Bigdata@123'; +postgres=# GRANT ALL PRIVILEGES TO joe; +``` + +授权成功后,用户joe会拥有sysadmin的所有权限。 + +**示例:将对象权限授权给用户或者角色**。 + +1. 撤销joe用户的sysadmin权限,然后将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe。 + + ``` + postgres=# REVOKE ALL PRIVILEGES FROM joe; + postgres=# GRANT USAGE ON SCHEMA tpcds TO joe; + postgres=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; + ``` + + 授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。 + +2. 将tpcds.reason表中r\_reason\_sk、r\_reason\_id、r\_reason\_desc列的查询权限,r\_reason\_desc的更新权限授权给joe。 + + ``` + postgres=# GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; + ``` + + 授权成功后,用户joe对tpcds.reason表中r\_reason\_sk,r\_reason\_id的查询权限会立即生效。如果joe用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对joe用户进行授权。 + + ``` + postgres=# GRANT select (r_reason_sk, r_reason_id) ON tpcds.reason TO joe WITH GRANT OPTION; + ``` + + 将数据库postgres的连接权限授权给用户joe,并给予其在postgres中创建schema的权限,而且允许joe将此权限授权给其他用户。 + + ``` + postgres=# GRANT create,connect on database postgres TO joe WITH GRANT OPTION; + ``` + + 创建角色tpcds\_manager,将模式tpcds的访问权限授权给角色tpcds\_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其他人。 + + ``` + postgres=# CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123'; + postgres=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; + ``` + + 将表空间tpcds\_tbspc的所有权限授权给用户joe,但用户joe无法将权限继续授予其他用户。 + + ``` + postgres=# CREATE TABLESPACE tpcds_tbspc RELATIVE LOCATION 'tablespace/tablespace_1'; + postgres=# GRANT ALL ON TABLESPACE tpcds_tbspc TO joe; + ``` + + +**示例:将用户或者角色的权限授权给其他用户或角色。** + +1. 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人。 + + ``` + postgres=# CREATE ROLE manager PASSWORD 'Bigdata@123'; + postgres=# GRANT joe TO manager WITH ADMIN OPTION; + ``` + +2. 创建用户senior\_manager,将用户manager的权限授权给该用户。 + + ``` + postgres=# CREATE ROLE senior_manager PASSWORD 'Bigdata@123'; + postgres=# GRANT manager TO senior_manager; + ``` + +3. 撤销权限,并清理用户。 + + ``` + postgres=# REVOKE manager FROM joe; + postgres=# REVOKE senior_manager FROM manager; + postgres=# DROP USER manager; + ``` + + +**示例:撤销上述授予的权限,并清理角色和用户。** + +``` +postgres=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; +postgres=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; +postgres=# REVOKE ALL ON TABLESPACE tpcds_tbspc FROM joe; +postgres=# DROP TABLESPACE tpcds_tbspc; +postgres=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; +postgres=# DROP ROLE tpcds_manager; +postgres=# DROP ROLE senior_manager; +postgres=# DROP USER joe CASCADE; +``` + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\350\256\276\347\275\256openGauss\345\217\202\346\225\260.md" "b/content/zh/docs/Quickstart/\350\256\276\347\275\256openGauss\345\217\202\346\225\260.md" index ae10afd28..1d0a0fe9d 100644 --- "a/content/zh/docs/Quickstart/\350\256\276\347\275\256openGauss\345\217\202\346\225\260.md" +++ "b/content/zh/docs/Quickstart/\350\256\276\347\275\256openGauss\345\217\202\346\225\260.md" @@ -1,7 +1,188 @@ # 设置openGauss参数 -- **[设置客户端认证策略](设置客户端认证策略.md)** + -- **[设置配置文件参数](设置配置文件参数.md)** +- [设置openGauss参数](#设置opengauss参数a-namezh-cn_topic_0241704229a) + - [设置客户端认证策略](#设置客户端认证策略a-namezh-cn_topic_0241704250a) + - [语法](#语法a-namesection18231623182312a) + - [命令参考](#命令参考a-namezh-cn_topic_0241234206_zh-cn_topic_0059778019_s9f42fc33773a49829076e2e0121d9a5fa) + - [示例](#示例a-namezh-cn_topic_0241234206_section196405363211a) + - [设置配置文件参数](#设置配置文件参数a-namezh-cn_topic_0241704251a) + - [语法](#语法a-namezh-cn_topic_0241234207_section12202966262a) + - [命令参考](#命令参考a-namezh-cn_topic_0241234207_zh-cn_topic_0059778019_s9f42fc33773a49829076e2e0121d9a5fa) + - [示例](#示例a-namezh-cn_topic_0241234207_section53021226153217a) + +## 设置客户端认证策略 + +目前openGauss配置文件“pg\_hba.conf”中的参数默认值都是单机的配置模式。应用程序可以通过调用gs\_guc来设置适合自己的参数。更多配置请参见《开发者指南》。 + +### 语法 + +设置客户端认证策略,同时发送信号量到数据库进程。 + +``` +gs_guc [ set | reload ] [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -h "HOSTTYPE DATABASE USERNAME IPADDR-WITH-IPMASK AUTHMEHOD authentication-options" +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>authentication-options支持以下选项: +>- trust:不验密,禁止远程主机使用trust方式访问openGauss +>- reject:拒绝访问 +>- md5、sha256、cert:客户端证书认证 +>- gss:kerberos认证 + +### 命令参考 + +- set + + 表示只修改配置文件中的参数。 + +- reload + + 表示修改配置文件中的参数,同时发送信号量给数据库进程,使其重新加载配置文件。 + +- -N + + 需要设置的主机名称。 + + 取值范围:已有主机名称。 + + 当参数取值为ALL时,表示设置openGauss中所有的主机。 + +- -I INSTANCE-NAME + + 需要设置的实例名称。 + + 取值范围:已有实例名称。 + + 当参数取值为ALL时,表示设置主机中所有的实例。 + +- -D + + 需要执行命令的openGauss实例路径。使用encrypt命令时,此参数表示指定的密码文件生成的路径。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 与"-I" 不能一块使用 + +- -h host-auth-policy + + 指定需要在“pg\_hba.conf”增加的客户端认证策略。 + + 取值范围: + + - HOSTTYPE DATABASE USERNAME IPADDR IPMASK \[authentication-options\] + - HOSTTYPE DATABASE USERNAME IPADDR-WITH-IPMASK \[authentication-options\] + - HOSTTYPE DATABASE USERNAME HOSTNAME \[authentication-options \] + + HOSTTYPE是必输参数,取值范围如下: + + - local + - host + - hostssl + - hostnossl + + 其中“local”是一个Unix域套接字,“host”是普通或SSL加密的TCP / IP套接字,“hostssl”是SSL加密的TCP / IP套接字,“hostnossl”是一个纯TCP / IP套接字。 + + authentication-options是可选输入,取值范围如下: + + - trust + - reject + - md5 + - sha256 + - cert + - gss + + 详细的参数说明请参见“pg\_hba.conf”配置文件中的描述。 + + +### 示例 + +设置客户端认证策略 + +``` +gs_guc set -N all -I all -h "host replication testuser 10.252.95.191/32 sha256" + +Total instances: 2. Failed instances: 0. +Success to perform gs_guc! +``` + +## 设置配置文件参数 + +目前openGauss配置文件“postgresql.conf”中的参数默认值都是单机的配置模式。应用程序可以通过调用gs\_guc来设置适合自己的参数。 + +### 语法 + +- 同时修改配置文件中参数(postgresql.conf) + + ``` + gs_guc set [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -c "parameter = value" + ``` + +- 将已设置的参数值修改为默认值 + + ``` + gs_guc [ set | reload ] [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -c "parameter" + ``` + + +### 命令参考 + +- set + + 表示只修改配置文件中的参数。 + +- reload + + 表示修改配置文件中的参数,同时发送信号量给数据库进程,使其重新加载配置文件。 + +- -N + + 需要设置的主机名称。 + + 取值范围:已有主机名称。 + + 当参数取值为ALL时,表示设置openGauss中所有的主机。 + +- -I INSTANCE-NAME + + 需要设置的实例名称。 + + 取值范围:已有实例名称。 + + 当参数取值为ALL时,表示设置主机中所有的实例。 + +- -D + + 需要执行命令的openGauss实例路径。使用encrypt命令时,此参数表示指定的密码文件生成的路径。 + + >![](public_sys-resources/icon-note.gif) **说明:** + > + >- 与"-I" 不能一块使用 + +- -c parameter=value + + 要设定的openGauss配置参数的名称和参数值。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。 + >- 当使用gs\_guc set/reload为"log\_directory" 恢复默认值时,其默认值会被置为具体的data目录。 + + 取值范围:postgresql.conf中的所有参数。 + +- -U, --keyuser=USER + +### 示例 + +示例1:同时修改数据库节点的参数,例如修改数据库允许的最大连接数为800。修改后需要重启数据库才能生效。 + +``` +gs_guc set -N all -I all -c "max_connections = 800" + +Total instances: 21. Failed instances: 0. +Success to perform gs_guc! +``` + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\350\256\276\347\275\256root\347\224\250\346\210\267\350\277\234\347\250\213\347\231\273\345\275\225.md" "b/content/zh/docs/Quickstart/\350\256\276\347\275\256root\347\224\250\346\210\267\350\277\234\347\250\213\347\231\273\345\275\225.md" deleted file mode 100644 index da3ec2472..000000000 --- "a/content/zh/docs/Quickstart/\350\256\276\347\275\256root\347\224\250\346\210\267\350\277\234\347\250\213\347\231\273\345\275\225.md" +++ /dev/null @@ -1,60 +0,0 @@ -# 设置root用户远程登录 - -在openGauss安装时需要root帐户远程登录访问权限,本章介绍如何设置使用root用户远程登录。 - -1. 修改PermitRootLogin配置,允许用户远程登录。 - 1. 打开sshd\_config文件。 - - ``` - vim /etc/ssh/sshd_config - ``` - - 2. 修改权限配置,可以使用以下两种方式实现: - - 注释掉“PermitRootLogin no”。 - - ``` - #PermitRootLogin no - ``` - - - 将“PermitRootLogin“改为“yes“。 - - ``` - PermitRootLogin yes - ``` - - 3. 执行**:wq**保存并退出编辑页面。 - -2. 修改Banner配置,去掉连接到系统时,系统提示的欢迎信息。欢迎信息会干扰安装时远程操作的返回结果,影响安装正常执行。 - 1. 编辑sshd\_config文件。 - - ``` - vim /etc/ssh/sshd_config - ``` - - 2. 修改Banner配置,注释掉“Banner”所在的行。 - - ``` - #Banner XXXX - ``` - - 3. 执行**:wq**保存并退出编辑页面。 - -3. 使用如下命令使设置生效。 - - ``` - service sshd restart - ``` - - >![](public_sys-resources/icon-caution.gif) **注意:** - >若执行命令后返回提示信息“Redirecting to /bin/systemctl restart sshd.service”,请执行命令:/bin/systemctl restart sshd.service。 - -4. 以root用户身份重新登录。 - - ``` - ssh xxx.xxx.xxx.xxx - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >xxx.xxx.xxx.xxx为安装openGauss环境的ip。 - - diff --git "a/content/zh/docs/Quickstart/\350\256\276\347\275\256\345\256\242\346\210\267\347\253\257\350\256\244\350\257\201\347\255\226\347\225\245.md" "b/content/zh/docs/Quickstart/\350\256\276\347\275\256\345\256\242\346\210\267\347\253\257\350\256\244\350\257\201\347\255\226\347\225\245.md" deleted file mode 100644 index 27471be44..000000000 --- "a/content/zh/docs/Quickstart/\350\256\276\347\275\256\345\256\242\346\210\267\347\253\257\350\256\244\350\257\201\347\255\226\347\225\245.md" +++ /dev/null @@ -1,94 +0,0 @@ -# 设置客户端认证策略 - -目前openGauss配置文件“pg\_hba.conf”中的参数默认值都是单机的配置模式。应用程序可以通过调用gs\_guc来设置适合自己的参数。更多配置请参见《开发者指南》。 - -## 语法 - -设置客户端认证策略,同时发送信号量到数据库进程。 - -``` -gs_guc [ set | reload ] [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -h "HOSTTYPE DATABASE USERNAME IPADDR-WITH-IPMASK AUTHMEHOD authentication-options" -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->authentication-options支持以下选项: ->- trust:不验密,禁止远程主机使用trust方式访问openGauss ->- reject:拒绝访问 ->- md5、sha256、cert:客户端证书认证 ->- gss:kerberos认证 - -## 命令参考 - -- set - - 表示只修改配置文件中的参数。 - -- reload - - 表示修改配置文件中的参数,同时发送信号量给数据库进程,使其重新加载配置文件。 - -- -N - - 需要设置的主机名称。 - - 取值范围:已有主机名称。 - - 当参数取值为ALL时,表示设置openGauss中所有的主机。 - -- -I INSTANCE-NAME - - 需要设置的实例名称。 - - 取值范围:已有实例名称。 - - 当参数取值为ALL时,表示设置主机中所有的实例。 - -- -D - - 需要执行命令的openGauss实例路径。使用encrypt命令时,此参数表示指定的密码文件生成的路径。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 与"-I" 不能一块使用 - -- -h host-auth-policy - - 指定需要在“pg\_hba.conf”增加的客户端认证策略。 - - 取值范围: - - - HOSTTYPE DATABASE USERNAME IPADDR IPMASK \[authentication-options\] - - HOSTTYPE DATABASE USERNAME IPADDR-WITH-IPMASK \[authentication-options\] - - HOSTTYPE DATABASE USERNAME HOSTNAME \[authentication-options \] - - HOSTTYPE是必输参数,取值范围如下: - - - local - - host - - hostssl - - hostnossl - - 其中“local”是一个Unix域套接字,“host”是普通或SSL加密的TCP / IP套接字,“hostssl”是SSL加密的TCP / IP套接字,“hostnossl”是一个纯TCP / IP套接字。 - - authentication-options是可选输入,取值范围如下: - - - trust - - reject - - md5 - - sha256 - - cert - - gss - - 详细的参数说明请参见“pg\_hba.conf”配置文件中的描述。 - - -## 示例 - -设置客户端认证策略 - -``` -gs_guc set -N all -I all -h "host replication testuser 10.252.95.191/32 sha256" - -Total instances: 2. Failed instances: 0. -Success to perform gs_guc! -``` - diff --git "a/content/zh/docs/Quickstart/\350\256\276\347\275\256\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\346\225\260.md" "b/content/zh/docs/Quickstart/\350\256\276\347\275\256\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\346\225\260.md" deleted file mode 100644 index 7abac5b30..000000000 --- "a/content/zh/docs/Quickstart/\350\256\276\347\275\256\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\346\225\260.md" +++ /dev/null @@ -1,75 +0,0 @@ -# 设置配置文件参数 - -目前openGauss配置文件“postgresql.conf”中的参数默认值都是单机的配置模式。应用程序可以通过调用gs\_guc来设置适合自己的参数。 - -## 语法 - -- 同时修改配置文件中参数(postgresql.conf) - - ``` - gs_guc set [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -c "parameter = value" - ``` - -- 将已设置的参数值修改为默认值 - - ``` - gs_guc [ set | reload ] [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -c "parameter" - ``` - - -## 命令参考 - -- set - - 表示只修改配置文件中的参数。 - -- reload - - 表示修改配置文件中的参数,同时发送信号量给数据库进程,使其重新加载配置文件。 - -- -N - - 需要设置的主机名称。 - - 取值范围:已有主机名称。 - - 当参数取值为ALL时,表示设置openGauss中所有的主机。 - -- -I INSTANCE-NAME - - 需要设置的实例名称。 - - 取值范围:已有实例名称。 - - 当参数取值为ALL时,表示设置主机中所有的实例。 - -- -D - - 需要执行命令的openGauss实例路径。使用encrypt命令时,此参数表示指定的密码文件生成的路径。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 与"-I" 不能一块使用 - -- -c parameter=value - - 要设定的openGauss配置参数的名称和参数值。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >- 如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。 - >- 当使用gs\_guc set/reload为"log\_directory" 恢复默认值时,其默认值会被置为具体的data目录。 - - 取值范围:postgresql.conf中的所有参数。 - -- -U, --keyuser=USER - -## 示例 - -示例1:同时修改数据库节点的参数,例如修改数据库允许的最大连接数为800。修改后需要重启数据库才能生效。 - -``` -gs_guc set -N all -I all -c "max_connections = 800" - -Total instances: 21. Failed instances: 0. -Success to perform gs_guc! -``` - diff --git "a/content/zh/docs/Quickstart/\350\275\257\347\241\254\344\273\266\347\216\257\345\242\203\350\246\201\346\261\202.md" "b/content/zh/docs/Quickstart/\350\275\257\347\241\254\344\273\266\347\216\257\345\242\203\350\246\201\346\261\202.md" deleted file mode 100644 index 71577699d..000000000 --- "a/content/zh/docs/Quickstart/\350\275\257\347\241\254\344\273\266\347\216\257\345\242\203\350\246\201\346\261\202.md" +++ /dev/null @@ -1,136 +0,0 @@ -# 软硬件环境要求 - -介绍openGauss的软硬件环境要求。建议部署openGauss的各服务器具有等价的软硬件配置。 - -## 硬件环境要求 - -[表1](#zh-cn_topic_0249784577_zh-cn_topic_0241802565_zh-cn_topic_0085434629_zh-cn_topic_0059782022_t62cd0eed17004265b1b8ad98f302a4bc)列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。 - -**表 1** 硬件环境要求 - - - - - - - - - - - - - - - - - - - -

项目

-

配置描述

-

内存

-

功能调试建议32GB以上。

-

性能测试和商业部署时,单实例部署建议128GB以上。

-

复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。

-

CPU

-

功能调试最小1×8 核 2.0GHz。

-

性能测试和商业部署时,单实例部署建议1×16核 2.0GHz。

-

CPU超线程和非超线程两种模式都支持。但是,openGauss各节点的设置需保持一致。

-

硬盘

-

用于安装openGauss的硬盘需最少满足如下要求:

-
  • 至少1GB用于安装openGauss的应用程序包。
  • 每个主机需大约300MB用于元数据存储。
  • 预留70%以上的磁盘剩余空间用于数据存储。
-

建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。

-

openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。

-

网络要求

-

300兆以上以太网。

-

建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。

-

openGauss网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致openGauss工作异常。

-
- -## 软件环境要求 - -**表 2** 软件环境要求 - - - - - - - - - - - - - - - - - - - -

软件类型

-

配置描述

-

Linux操作系统

-

openEuler 20.3LTS和CentOS 7.6

-

Linux文件系统

-

剩余inode个数 > 15亿(推荐)

-

工具

-

bzip2

-

Python

-
  • openEuler:支持Python 3.7.X
  • CentOS:支持Python 3.6.X
-
- -## 软件依赖要求 - -openGauss的软件依赖要求如[表 软件依赖要求](#zh-cn_topic_0249784577_table1212531681911)所示。 - -建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。 - -**表 3** 软件依赖要求 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

所需软件

-

建议版本

-

libaio-devel

-

建议版本:0.3.109-13

-

flex

-

要求版本:2.5.31 以上

-

bison

-

建议版本:2.7-4

-

ncurses-devel

-

建议版本:5.9-13.20130511

-

glibc.devel

-

建议版本:2.17-111

-

patch

-

建议版本:2.7.1-10

-

lsb_release

-

建议版本:4.1

-
- diff --git "a/content/zh/docs/Quickstart/\351\205\215\347\275\256Host\345\237\272\346\234\254\344\277\241\346\201\257.md" "b/content/zh/docs/Quickstart/\351\205\215\347\275\256Host\345\237\272\346\234\254\344\277\241\346\201\257.md" deleted file mode 100644 index d2e3b518c..000000000 --- "a/content/zh/docs/Quickstart/\351\205\215\347\275\256Host\345\237\272\346\234\254\344\277\241\346\201\257.md" +++ /dev/null @@ -1,72 +0,0 @@ -# 配置Host基本信息 - ->![](public_sys-resources/icon-note.gif) **说明:** ->每台Host服务器都必须有如下信息,如下示例以node1为例。 - -加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。 - -``` - - - - - - - - - - - - -``` - -**表 1** 参数说明 - - - - - - - - - - - - - - - - - - - - - - - - -

实例类型

-

参数

-

说明

-

整体信息

-

name

-

主机名称。

-

azName

-

指定azName(Available Zone Name),字符串(不能含有特殊字符),例如AZ1、AZ2、AZ3。

-

azPriority

-

指定azPriority的优先级。

-

backIp1

-

主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通讯。

-

sshIp1

-

设置SSH可信通道IP地址(外网IP)。若无外网,则可以不设置该选项或者同backIp1设置相同IP。

-
- ->![](public_sys-resources/icon-note.gif) **说明:** ->配置文件中所有IP参数(包含backIp、sshIp、listenIp等)均只支持配置一个IP。如果配置第二个IP参数,则不会读取第二个参数的配置值。 ->示例:xml配置文件中同时配置backIp1和backIp2参数: ->在解析配置文件时仅读取backIp1参数的配置值,不会读取backIp2参数的配置值。 ->``` -> -> ->``` - diff --git "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" "b/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" deleted file mode 100644 index aa79392bb..000000000 --- "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" +++ /dev/null @@ -1,493 +0,0 @@ -# 配置操作系统参数 - -openGauss要求各主机上的操作系统参数设置成一定的值,以满足系统运行的性能要求等。 - -这些参数有些会在openGauss安装环境准备阶段完成设置,且这些参数将直接影响openGauss的运行状态,请仅在确认必要时进行手动调整。方法如下: - -1. 以root用户身份登录服务器。 -2. 对文件“/etc/sysctl.conf”进行编辑修改。 - - 具体参数的修改请参见[操作系统参数](#zh-cn_topic_0249784554_zh-cn_topic_0241805805_zh-cn_topic_0085434661_zh-cn_topic_0059782062_section3705271819540)。 - -3. 执行如下命令使修改配置生效。 - - ``` - sysctl -p - ``` - - -## 操作系统参数 - -**表 1** 操作系统参数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数名称

-

参数说明

-

推荐取值

-

net.ipv4.tcp_max_tw_buckets

-

表示同时保持TIME_WAIT状态的TCP/IP连接最大数量。如果超过所配置的取值,TIME_WAIT将立刻被释放并打印警告信息。

-

10000

-

net.ipv4.tcp_tw_reuse

-

允许将TIME-WAIT状态的sockets重新用于新的TCP连接。

-
  • 0表示关闭。
  • 1表示开启。
-

1

-

net.ipv4.tcp_tw_recycle

-

表示开启TCP连接中TIME-WAIT状态sockets的快速回收。

-
  • 0表示关闭。
  • 1表示开启。
-

1

-

net.ipv4.tcp_keepalive_time

-

表示当keepalive启用的时候,TCP发送keepalive消息的频度。

-

30

-

net.ipv4.tcp_keepalive_probes

-

在认定连接失效之前,发送TCP的keepalive探测包数量。这个值乘以tcp_keepalive_intvl之后决定了一个连接发送了keepalive之后可以有多少时间没有回应。

-

9

-

net.ipv4.tcp_keepalive_intvl

-

当探测没有确认时,重新发送探测的频度。

-

30

-

net.ipv4.tcp_retries1

-

在连接建立过程中TCP协议最大重试次数。

-

5

-

net.ipv4.tcp_syn_retries

-

TCP协议SYN报文最大重试次数。

-

5

-

net.ipv4.tcp_synack_retries

-

TCP协议SYN应答报文最大重试次数。

-

5

-

net.sctp.path_max_retrans

-

SCTP协议最大重试次数。

-

10

-

net.sctp.max_init_retransmits

-

SCTP协议INIT报文最大重试次数。

-

10

-

net.sctp.association_max_retrans

-

SCTP协议单个逻辑连接最大重试次数。

-

10

-

net.sctp.hb_interval

-

SCTP协议心跳检测包重传间隔。

-

30000

-

net.ipv4.tcp_retries2

-

控制内核向已经建立连接的远程主机重新发送数据的次数,低值可以更早的检测到与远程主机失效的连接,因此服务器可以更快的释放该连接。

-

发生“connection reset by peer”时可以尝试调大该值规避问题。

-

12

-

vm.overcommit_memory

-

控制在做内存分配的时候,内核的检查方式。

-
  • 0:表示系统会尽量精确计算当前可用的内存。
  • 1:表示不作检查直接返回成功。
  • 2:内存总量×vm.overcommit_ratio/100+SWAP的总量,如果申请空间超过此数值则返回失败。
-

内核默认是2过于保守,推荐设置为0,如果系统压力大可以设置为1。

-

0

-

net.sctp.sndbuf_policy

-

SCTP发送缓冲区分配原则。

-
  • 0为按连接。
  • 1为按耦联。
-

0

-

net.sctp.rcvbuf_policy

-

SCTP接收缓冲区分配原则。

-
  • 0为按连接。
  • 1为按耦联。
-

0

-

net.sctp.sctp_mem

-

内核SCTP协议栈的最大可用内存,分无压力,有压力,和压力大三个区间,压力大时会丢包,单位为页面。

-

94500000 915000000 927000000

-

net.sctp.sctp_rmem

-

内核SCTP协议栈的接收总可用内存,分无压力,有压力和压力大三个区间,压力大时会丢包,单位为页面。

-

8192 250000 16777216

-

net.sctp.sctp_wmem

-

内核SCTP协议栈的发送总可用内存,分无压力,有压力和压力大三个区间,压力大时会丢包,单位为页面。

-

8192 250000 16777216

-

net.ipv4.tcp_rmem

-

TCP协议接收端缓冲区的可用内存大小。分无压力,有压力,和压力大三个区间,单位为页面。

-

8192 250000 16777216

-

net.ipv4.tcp_wmem

-

TCP协议发送端缓冲区的可用内存大小。分无压力,有压力,和压力大三个区间,单位为页面。

-

8192 250000 16777216

-

net.core.wmem_max

-

socket发送端缓冲区大小的最大值。

-

21299200

-

net.core.rmem_max

-

socket接收端缓冲区大小的最大值。

-

21299200

-

net.core.wmem_default

-

socket发送端缓冲区大小的默认值。

-

21299200

-

net.core.rmem_default

-

socket接收端缓冲区大小的默认值。

-

21299200

-

net.ipv4.ip_local_port_range

-

物理机可用临时端口范围。

-

26000-65535

-

kernel.sem

-

内核信号量参数设置大小。

-

250 6400000 1000 25600

-

vm.min_free_kbytes

-

保证物理内存有足够空闲空间,防止突发性换页。

-

系统总内存的5%

-

net.core.somaxconn

-

定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。

-

65535

-

net.ipv4.tcp_syncookies

-

当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击。

-
  • 0表示关闭SYN Cookies。
  • 1表示开启SYN Cookies。
-

1

-

net.sctp.addip_enable

-

SCTP动态地址重置支持开关

-
  • 0表示关闭。
  • 1表示开启。
-

0

-

net.core.netdev_max_backlog

-

在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

-

65535

-

net.ipv4.tcp_max_syn_backlog

-

记录的那些尚未收到客户端确认信息的连接请求的最大值。

-

65535

-

net.ipv4.tcp_fin_timeout

-

系统默认的超时时间。

-

60

-

kernel.shmall

-

内核可用的共享内存总量。

-

1152921504606846720

-

kernel.shmmax

-

内核参数定义单个共享内存段的最大值。

-

18446744073709551615

-

net.ipv4.tcp_sack

-

启用有选择的应答,通过有选择地应答乱序接受到的报文来提高性能,让发送者只发送丢失的报文段(对于广域网来说)这个选项应该启用,但是会增加对CPU的占用。

-
  • 0表示关闭。
  • 1表示开启
-

1

-

net.ipv4.tcp_timestamps

-

TCP时间戳(会在TCP包头增加12节),以一种比重发超时更精确的方式(参考RFC 1323)来启用对RTT的计算,启用可以实现更好的性能。

-
  • 0表示关闭。
  • 1表示开启
-

1

-

vm.extfrag_threshold

-

系统内存不够用时,linux会为当前系统内存碎片情况打分,如果超过vm.extfrag_threshold的值,kswapd就会触发memory compaction。所以这个值设置的接近1000,说明系统在内存碎片的处理倾向于把旧的页换出,以符合申请的需要,而设置接近0,表示系统在内存碎片的处理倾向做memory compaction。

-

500

-

vm.overcommit_ratio

-

系统使用绝不过量使用内存的算法时,系统整个内存地址空间不得超过swap+RAM值的此参数百分比,当vm.overcommit_memory=2时此参数生效。

-

90

-

/sys/module/sctp/parameters/no_checksums

-

SCTP协议是否关闭checksum。

-

0

-

MTU

-

节点网卡最大传输单元。OS默认值为1500,调整为8192可以提升SCTP协议数据收发的性能。

-

8192

-
- -## 文件系统参数 - -- soft nofile - - 说明:soft nofile表示软限制,用户使用的文件句柄数量可以超过该限制,但是如果超过会有告警信息。 - - 推荐取值:1000000 - -- hard nofile - - 说明:hard nofile表示硬限制,是一个严格的限制,用户使用的文件句柄数量一定不能超过该设置。 - - 推荐取值:1000000 - -- stack size - - 说明:线程堆栈大小。 - - 推荐值:3072 - - -## transparent\_hugepage设置 - -openGauss默认关闭使用transparent\_hugepage服务,并将关闭命令写入操作系统启动文件。 - -## 文件句柄设置 - -需要对文件句柄数进行手动设置时,使用root用户执行如下命令进行参数修改: - -``` -echo "* soft nofile 1000000" >>/etc/security/limits.conf -echo "* hard nofile 1000000" >>/etc/security/limits.conf -``` - -完成修改后,需重启操作系统使得设置的参数生效。 - -**表 2** 文件句柄数设置 - - - - - - - - - - - - - - - - - - - -

参数名

-

说明

-

预安装时是否由脚本自动设置

-

推荐取值

-

* soft nofile

-

soft nofile表示软限制,即表示任何用户能打开的最大文件数量为1000000,不管它开启多少个shell。

-

-

1000000

-

* hard nofile

-

hard nofile表示硬限制,软限制要小于等于硬限制。

-

-

1000000

-
- -## 系统支持的最大进程数设置 - -需要对系统支持的最大进程数进行手动设置时,执行如下命令打开conf文件。 - -``` -vim /etc/security/limits.d/90-nproc.conf -``` - -修改\* soft nproc参数。 - -完成修改后,需重启操作系统使得设置的参数生效。 - -**表 3** 系统支持的最大进程数设置 - - - - - - - - - - - - - - -

参数名

-

说明

-

预安装时是否由脚本自动设置

-

推荐取值

-

* soft nproc

-

soft nproc参数用来限制每个用户的最大processes数量。

-

-

unlimited

-
- -## 网卡参数配置 - -**表 4** 网卡参数配置 - - - - - - - - - - - - - - - - - - - -

参数名

-

说明

-

预安装时是否由脚本自动设置

-

推荐取值

-

rx

-

网卡接收队列长度设置

-

-

4096

-

tx

-

网卡传送队列长度设置

-

-

4096

-
- ->![](public_sys-resources/icon-notice.gif) **须知:** ->- 网卡参数配置功能只针对万兆及万兆以上级别的业务网卡。即backIp1所绑定的网卡。 ->- 设置网卡参数的命令只有在设置成功后,才会被写入系统启动文件。执行失败的信息会被记入后台日志中。 - diff --git "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\344\270\273\350\212\202\347\202\271\344\277\241\346\201\257.md" "b/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\344\270\273\350\212\202\347\202\271\344\277\241\346\201\257.md" deleted file mode 100644 index b5341bb6a..000000000 --- "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\344\270\273\350\212\202\347\202\271\344\277\241\346\201\257.md" +++ /dev/null @@ -1,77 +0,0 @@ -# 配置数据库主节点信息 - -加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。 - -**数据库主节点配置以下信息。** - -``` - - - - - - - - -``` - -**表 1** 参数说明 - - - - - - - - - - - - - - - - - - - - - -

实例类型

-

参数

-

说明

-

DBnode

-

dataNum

-

当前主机上需要部署的数据库节点个数。

-

dataPortBase

-

数据库节点的基础端口号,默认值40000。

-

dataNode1

-

用于指定当前主机上的数据库节点的数据存储目录。此目录为数据库的数据存储目录。应规划到数据盘上。

-

dataNode1_syncNum

-

可选参数,用于指定当前集群中同步模式的节点数目。取值范围为0~数据库备机节点数。

-
- -**表 2** 数据库实例数据目录 - - - - - - - - - - - - - -

实例名称

-

实例数据目录

-

主DBnode

-

/opt/huawei/install/data/xxx

-

其中,xxx为当前主DBnode的名称。

-

备DBnode

-

/opt/huawei/install/data/slaveX

-

其中,slaveX为当前备DBnode的名称。

-
- diff --git "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\345\220\215\347\247\260\345\217\212\345\220\204\351\241\271\347\233\256\345\275\225.md" "b/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\345\220\215\347\247\260\345\217\212\345\220\204\351\241\271\347\233\256\345\275\225.md" deleted file mode 100644 index 8c8068e81..000000000 --- "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\346\225\260\346\215\256\345\272\223\345\220\215\347\247\260\345\217\212\345\220\204\351\241\271\347\233\256\345\275\225.md" +++ /dev/null @@ -1,99 +0,0 @@ -# 配置数据库名称及各项目录 - -在script/gspylib/etc/conf/cluster\_config\_template.xml获取XML文件模板。加粗字体内容为示例,可自行替换。每行信息均有注释进行说明。 - -``` - - - - - - - - - - - - - - - - - - - - - - -``` - ->![](public_sys-resources/icon-notice.gif) **须知:** ->- “/opt/huawei/install/om”存放互信等工具,避免权限问题,不要把实例数据目录放在此目录下。 ->- 安装目录和数据目录需为空或者不存在,否则可能导致安装失败。 ->- 在对数据库节点的实例进行具体配置时,需确保配置的目录之间不相互耦合。即各个配置目录不关联,删除其中任意一个目录,不会级联删除其它目录。如gaussdbAppPath为"/opt/huawei/install/app",gaussdbLogPath为"/opt/huawei/install/app/omm"。当gaussdbAppPath目录被删除时,会级联删除gaussdbLogPath目录,从而引起其它问题。 ->- 若需要安装脚本自动创建安装用户时各配置的目录需保证不与系统创建的默认用户目录耦合关联。 ->- 配置openGauss路径和实例路径时,路径中不能包含"|",";","&","$","<","\>","\`","\\\\","'","\\"","\{","\}","\(","\)","\[","\]","\~","\*","?"特殊字符。 ->- 配置数据库节点名称时,请通过hostname命令获取数据库节点的主机名称,替换示例中的**node1\_hostname**,**node2\_hostname**。 - -**表 1** 参数说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

实例类型

-

参数

-

说明

-

整体信息

-

clusterName

-

openGauss名称。

-

nodeNames

-

openGauss中主机名称。

-

backIp1s

-

主机在后端存储网络中的IP地址(内网IP)。所有openGauss主机使用后端存储网络通讯。

-

gaussdbAppPath

-

openGauss程序安装目录。此目录应满足如下要求:

-
  • 磁盘空间>1GB
  • 与数据库所需其它路径相互独立,没有包含关系。
-

gaussdbLogPath

-

openGauss运行日志和操作日志存储目录。此目录应满足如下要求:

-
  • 磁盘空间建议根据主机上的数据库节点数规划。数据库节点预留1GB空间的基础上,再适当预留冗余空间。
  • openGauss所需其它路径相互独立,没有包含关系。
-

此路径可选。不指定的情况下,openGauss安装时会默认指定“$GAUSSLOG/安装用户名”作为日志目录。

-

tmpdbPath

-

数据库临时文件存放目录。

-

若不配置tmpdbPath,默认存放在/opt/huawei/wisequery/perfadm_db目录下。

-

gaussdbToolPath

-

openGauss系统工具目录,主要用于存放互信工具等。此目录应满足如下要求:

-
  • 磁盘空间>100MB
  • 固定目录,与数据库所需其它目录相互独立,没有包含关系。
-

此目录可选。不指定的情况下,openGauss安装时会默认指定“/opt/huawei/wisequery”作为数据库系统工具目录。

-

corePath

-

openGauss core文件的指定目录。

-
- diff --git "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\350\277\220\350\241\214\345\217\202\346\225\260.md" "b/content/zh/docs/Quickstart/\351\205\215\347\275\256\350\277\220\350\241\214\345\217\202\346\225\260.md" index e07d1dfdf..8a529ac14 100644 --- "a/content/zh/docs/Quickstart/\351\205\215\347\275\256\350\277\220\350\241\214\345\217\202\346\225\260.md" +++ "b/content/zh/docs/Quickstart/\351\205\215\347\275\256\350\277\220\350\241\214\345\217\202\346\225\260.md" @@ -1,7 +1,735 @@ # 配置运行参数 -- **[查看参数当前取值](查看参数当前取值.md)** + -- **[重设参数](重设参数.md)** +- [配置运行参数](#配置运行参数a-namezh-cn_topic_0251900916a) + - [查看参数当前取值](#查看参数当前取值a-namezh-cn_topic_0251900917a) + - [操作步骤](#操作步骤a-namezh-cn_topic_0242370405_zh-cn_topic_0237121561_zh-cn_topic_0059778552_s188c1b9187954573b5701cc6013c78e8a) + - [示例](#示例a-namezh-cn_topic_0242370405_zh-cn_topic_0237121561_zh-cn_topic_0059778552_se13d2a46521a4500881363a56a68d6cfa) + - [重设参数](#重设参数a-namezh-cn_topic_0251900918a) + - [背景信息](#背景信息a-namezh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_s75c9285916664351b9c3e31f0735ea98a) + - [GUC参数设置](#guc参数设置a-namezh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_sb2763fa0003e4ff1815379339bffe994a) + - [操作步骤](#操作步骤a-namezh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_s049438204a0941efb4b85981fb594e7ca) + - [示例](#示例a-namezh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_s5b8255d8025640aba238bfb86b20807aa) + +## 查看参数当前取值 +openGauss安装后,有一套默认的运行参数,为了使openGauss与业务的配合度更高,用户需要根据业务场景和数据量的大小进行GUC参数调整。 + +### 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +3. 查看数据库运行参数当前取值。 + - 方法一:使用SHOW命令。 + - 使用如下命令查看单个参数: + + ``` + postgres=# SHOW server_version; + ``` + + server\_version显示数据库版本信息的参数。 + + - 使用如下命令查看所有参数: + + ``` + postgres=# SHOW ALL; + ``` + + + - 方法二:使用pg\_settings视图。 + - 使用如下命令查看单个参数: + + ``` + postgres=# SELECT * FROM pg_settings WHERE NAME='server_version'; + ``` + + - 使用如下命令查看所有参数: + + ``` + postgres=# SELECT * FROM pg_settings; + ``` + + + + +### 示例 + +查看服务器的版本号。 + +``` +postgres=# SHOW server_version; + server_version +---------------- + 9.2.4 +(1 row) +``` + +## 重设参数 + +### 背景信息 + +openGauss提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。 + +- 参数名称不区分大小写。 +- 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。 + - 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 + - 枚举类型的取值是在系统表pg\_settings的enumvals字段取值定义的。 + +- 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 + - 参数的默认单位在系统表pg\_settings的unit字段定义的。 + - 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。 + - 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。 + + +具体参数说明请参见[GUC参数说明](GUC参数说明.md#ZH-CN_TOPIC_0251900919)。 + +### GUC参数设置 + +openGauss提供了六类GUC参数,具体分类和设置方式请参考[表1](#zh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846): + +**表 1** GUC参数分类 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数类型

+

说明

+

设置方式

+

INTERNAL

+

固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。

+

+

POSTMASTER

+

数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。

+

支持表2中的方式一、方式四。

+

SIGHUP

+

数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。

+

支持表2中的方式一、方式二、方式四。

+

BACKEND

+

会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。

+

支持表2中的方式一、方式二、方式四。

+
说明:

设置该参数后,下一次建立会话连接时生效。

+
+

SUSET

+

数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。

+

支持表2中的方式一、方式二或由数据库管理员通过方式三设置。

+

USERSET

+

普通用户参数。可被任何用户在任何时刻设置。

+

支持表2中的方式一、方式二或方式三设置。

+
+ +openGauss提供了三种方式来修改GUC参数,具体操作请参考[表2](#zh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t290c8f15953843db8d8e53d867cd893d): + +**表 2** GUC参数设置方式 + + + + + + + + + + + + + + + + + + + + +

序号

+

设置方法

+

方式一

+
  1. 使用如下命令修改参数。
    gs_guc set -D datadir -c "paraname=value"
    +
    说明:

    如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。

    +

    使用以下命令在数据库节点上同时设置某个参数。

    +
    gs_guc set -N all -I all -c "paraname=value"
    +
    +
  2. 重启数据库使参数生效。
    说明:

    重启openGauss操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。

    +
    +
    gs_om -t stop && gs_om -t start
    +
+

方式二

+
gs_guc reload -D datadir -c "paraname=value"
+
说明:

使用以下命令在数据库节点上同时设置某个参数。

+
gs_guc reload -N all -I all -c "paraname=value"
+
+

方式三

+

修改指定数据库,用户,会话级别的参数。

+
  • 设置数据库级别的参数
    postgres=# ALTER DATABASE dbname SET paraname TO value;
    +

    在下次会话中生效。

    +
  • 设置用户级别的参数
    postgres=# ALTER USER username SET paraname TO value;
    +

    在下次会话中生效。

    +
  • 设置会话级别的参数
    postgres=# SET paraname TO value;
    +

    修改本次会话中的取值。退出会话后,设置将失效。

    +
+

方式四

+

使用ALTER SYSTEM SET修改数据库参数。

+
  • 设置POSTMASERT级别的参数
    postgres=# ALTER SYSTEM SET paraname TO value;
    +

    重启后生效。

    +
  • 设置SIGHUP级别的参数
    postgres=# ALTER SYSTEM SET paraname TO value;
    +

    立刻生效(实际等待线程重新加载参数略有延迟)。

    +
  • 设置BACKEND级别的参数
    postgres=# ALTER SYSTEM SET paraname TO value;
    +

    在下次会话中生效。

    +
+
+ + +### 操作步骤 + +使用方式一设置数据库参数,以在数据库主节点设置archive\_mode参数为例。 + +1. 以操作系统用户omm登录数据库主节点。 +2. 查看archive\_mode参数。 + + ``` + cat /gaussdb/data/dbnode/postgresql.conf | grep archive_mode + ``` + + ``` + archive_mode = on + ``` + + on表示日志要进行归档操作。 + +3. 设置archive\_mode参数为off,关闭日志的归档操作。 + + ``` + gs_guc set -D /gaussdb/data/dbnode -c "archive_mode=off" + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >可以使用以下命令在数据库节点上设置archive\_mode参数为off。 + >``` + >gs_guc set -N all -I all -c "archive_mode=off" + >``` + +4. 重启数据库使参数生效。 + + ``` + gs_om -t stop && gs_om -t start + ``` + +5. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +6. 检查参数设置的正确性。 + + ``` + postgres=# SHOW archive_mode; + archive_mode + -------------- + off + (1 row) + ``` + + +使用方式二设置参数,以在数据库主节点设置authentication\_timeout参数为例。 + +1. 以操作系统用户omm登录数据库主节点。 +2. 查看authentication\_timeout参数。 + + ``` + cat /gaussdb/data/dbnode/postgresql.conf | grep authentication_timeout + ``` + + ``` + authentication_timeout = 1min + ``` + +3. 设置authentication\_timeout参数为59s。 + + ``` + gs_guc reload -N all -I all -c "authentication_timeout = 59s" + + Total instances: 2. Failed instances: 0. + Success to perform gs_guc! + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >可以使用以下命令在数据库节点上设置authentication\_timeout参数为59s。 + >``` + >gs_guc reload -N all -I all -c "authentication_timeout = 59s" + >``` + +4. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +5. 检查参数设置的正确性。 + + ``` + postgres=# SHOW authentication_timeout; + authentication_timeout + ------------------------ + 59s + (1 row) + ``` + + +使用方式三设置参数,以设置explain\_perf\_mode参数为例。 + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +3. 查看explain\_perf\_mode参数。 + + ``` + postgres=# SHOW explain_perf_mode; + explain_perf_mode + ------------------- + normal + (1 row) + ``` + +4. 设置explain\_perf\_mode参数。 + + 使用以下任意方式进行设置: + + - 设置数据库级别的参数 + + ``` + postgres=# ALTER DATABASE postgres SET explain_perf_mode TO pretty; + ``` + + 当结果显示为如下信息,则表示设置成功。 + + ``` + ALTER DATABASE + ``` + + 在下次会话中生效。 + + - 设置用户级别的参数 + + ``` + postgres=# ALTER USER omm SET explain_perf_mode TO pretty; + ``` + + 当结果显示为如下信息,则表示设置成功。 + + ``` + ALTER ROLE + ``` + + 在下次会话中生效。 + + - 设置会话级别的参数 + + ``` + postgres=# SET explain_perf_mode TO pretty; + ``` + + 当结果显示为如下信息,则表示设置成功。 + + ``` + SET + ``` + +5. 检查参数设置的正确性。 + + ``` + postgres=# SHOW explain_perf_mode; + explain_perf_mode + -------------- + pretty + (1 row) + ``` + + +### 示例 + +- 示例1:使用方式一修改openGauss数据库主节点的最大连接数。 + 1. 以操作系统用户omm登录数据库主节点。 + 2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 3. 查看最大连接数。 + + ``` + postgres=# SHOW max_connections; + max_connections + ----------------- + 200 + (1 row) + ``` + + 4. 使用如下命令退出数据库。 + + ``` + postgres=# \q + ``` + + 5. 修改openGauss数据库主节点的最大连接数。 + + ``` + gs_guc set -N all -I all -c "max_connections = 800" + ``` + + 6. 重启openGauss。 + + ``` + gs_om -t stop && gs_om -t start + ``` + + 7. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 8. 查看最大连接数。 + + ``` + postgres=# SHOW max_connections; + max_connections + ----------------- + 800 + (1 row) + ``` + + +- 示例2:使用方式二设置数据库主节点的客户端认证最长时间参数“authentication\_timeout” + 1. 以操作系统用户omm登录数据库主节点。 + 2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 3. 查看客户端认证的最长时间。 + + ``` + postgres=# SHOW authentication_timeout; + authentication_timeout + ------------------------ + 1min + (1 row) + ``` + + 4. 使用如下命令退出数据库。 + + ``` + postgres=# \q + ``` + + 5. 修改openGauss数据库主节点的客户端认证最长时间。 + + ``` + gs_guc reload -N all -I all -c "authentication_timeout = 59s" + ``` + + 6. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 7. 查看客户端认证的最长时间。 + + ``` + postgres=# SHOW authentication_timeout; + authentication_timeout + ------------------------ + 59s + (1 row) + ``` + + +- 示例3:修改openGauss数据库节点的最大连接数。 + 1. 以操作系统用户omm登录数据库主节点。 + 2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 3. 查看最大连接数。 + + ``` + postgres=# SHOW max_connections; + max_connections + ----------------- + 200 + (1 row) + ``` + + 4. 使用如下命令退出数据库。 + + ``` + postgres=# \q + ``` + + 5. 修改openGauss数据库节点的最大连接数。 + + ``` + gs_guc set -N all -I all -c "max_connections = 500" + ``` + + 6. 重启openGauss。 + + ``` + gs_om -t stop + gs_om -t start + ``` + + 7. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 8. 查看最大连接数。 + + ``` + postgres=# SHOW max_connections; + max_connections + ----------------- + 500 + (1 row) + ``` + + +- 示例4:设置数据库节点的客户端认证最长时间参数“authentication\_timeout” + 1. 以操作系统用户omm登录数据库主节点。 + 2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 3. 查看客户端认证的最长时间。 + + ``` + postgres=# SHOW authentication_timeout; + authentication_timeout + ------------------------ + 1min + (1 row) + ``` + + 4. 使用如下命令退出数据库。 + + ``` + postgres=# \q + ``` + + 5. 修改openGauss数据库节点的客户端认证最长时间。 + + ``` + gs_guc reload -N all -I all -c "authentication_timeout = 30s" + ``` + + 6. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + + 7. 查看客户端认证的最长时间。 + + ``` + postgres=# SHOW authentication_timeout; + authentication_timeout + ------------------------ + 30s + (1 row) + ``` + + + + \ No newline at end of file diff --git "a/content/zh/docs/Quickstart/\351\207\215\350\256\276\345\217\202\346\225\260.md" "b/content/zh/docs/Quickstart/\351\207\215\350\256\276\345\217\202\346\225\260.md" deleted file mode 100644 index de3bb2735..000000000 --- "a/content/zh/docs/Quickstart/\351\207\215\350\256\276\345\217\202\346\225\260.md" +++ /dev/null @@ -1,649 +0,0 @@ -# 重设参数 - -## 背景信息 - -openGauss提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。 - -- 参数名称不区分大小写。 -- 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。 - - 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 - - 枚举类型的取值是在系统表pg\_settings的enumvals字段取值定义的。 - -- 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 - - 参数的默认单位在系统表pg\_settings的unit字段定义的。 - - 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。 - - 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。 - - -具体参数说明请参见[GUC参数说明](GUC参数说明.md#ZH-CN_TOPIC_0251900919)。 - -## GUC参数设置 - -openGauss提供了六类GUC参数,具体分类和设置方式请参考[表1](#zh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846): - -**表 1** GUC参数分类 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

参数类型

-

说明

-

设置方式

-

INTERNAL

-

固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。

-

-

POSTMASTER

-

数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。

-

支持表2中的方式一、方式四。

-

SIGHUP

-

数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。

-

支持表2中的方式一、方式二、方式四。

-

BACKEND

-

会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。

-

支持表2中的方式一、方式二、方式四。

-
说明:

设置该参数后,下一次建立会话连接时生效。

-
-

SUSET

-

数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。

-

支持表2中的方式一、方式二或由数据库管理员通过方式三设置。

-

USERSET

-

普通用户参数。可被任何用户在任何时刻设置。

-

支持表2中的方式一、方式二或方式三设置。

-
- -openGauss提供了三种方式来修改GUC参数,具体操作请参考[表2](#zh-cn_topic_0242370406_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t290c8f15953843db8d8e53d867cd893d): - -**表 2** GUC参数设置方式 - - - - - - - - - - - - - - - - - - - - -

序号

-

设置方法

-

方式一

-
  1. 使用如下命令修改参数。
    gs_guc set -D datadir -c "paraname=value"
    -
    说明:

    如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。

    -

    使用以下命令在数据库节点上同时设置某个参数。

    -
    gs_guc set -N all -I all -c "paraname=value"
    -
    -
  2. 重启数据库使参数生效。
    说明:

    重启openGauss操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。

    -
    -
    gs_om -t stop && gs_om -t start
    -
-

方式二

-
gs_guc reload -D datadir -c "paraname=value"
-
说明:

使用以下命令在数据库节点上同时设置某个参数。

-
gs_guc reload -N all -I all -c "paraname=value"
-
-

方式三

-

修改指定数据库,用户,会话级别的参数。

-
  • 设置数据库级别的参数
    postgres=# ALTER DATABASE dbname SET paraname TO value;
    -

    在下次会话中生效。

    -
  • 设置用户级别的参数
    postgres=# ALTER USER username SET paraname TO value;
    -

    在下次会话中生效。

    -
  • 设置会话级别的参数
    postgres=# SET paraname TO value;
    -

    修改本次会话中的取值。退出会话后,设置将失效。

    -
-

方式四

-

使用ALTER SYSTEM SET修改数据库参数。

-
  • 设置POSTMASERT级别的参数
    postgres=# ALTER SYSTEM SET paraname TO value;
    -

    重启后生效。

    -
  • 设置SIGHUP级别的参数
    postgres=# ALTER SYSTEM SET paraname TO value;
    -

    立刻生效(实际等待线程重新加载参数略有延迟)。

    -
  • 设置BACKEND级别的参数
    postgres=# ALTER SYSTEM SET paraname TO value;
    -

    在下次会话中生效。

    -
-
- - -## 操作步骤 - -使用方式一设置数据库参数,以在数据库主节点设置archive\_mode参数为例。 - -1. 以操作系统用户omm登录数据库主节点。 -2. 查看archive\_mode参数。 - - ``` - cat /gaussdb/data/dbnode/postgresql.conf | grep archive_mode - ``` - - ``` - archive_mode = on - ``` - - on表示日志要进行归档操作。 - -3. 设置archive\_mode参数为off,关闭日志的归档操作。 - - ``` - gs_guc set -D /gaussdb/data/dbnode -c "archive_mode=off" - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >可以使用以下命令在数据库节点上设置archive\_mode参数为off。 - >``` - >gs_guc set -N all -I all -c "archive_mode=off" - >``` - -4. 重启数据库使参数生效。 - - ``` - gs_om -t stop && gs_om -t start - ``` - -5. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - -6. 检查参数设置的正确性。 - - ``` - postgres=# SHOW archive_mode; - archive_mode - -------------- - off - (1 row) - ``` - - -使用方式二设置参数,以在数据库主节点设置authentication\_timeout参数为例。 - -1. 以操作系统用户omm登录数据库主节点。 -2. 查看authentication\_timeout参数。 - - ``` - cat /gaussdb/data/dbnode/postgresql.conf | grep authentication_timeout - ``` - - ``` - authentication_timeout = 1min - ``` - -3. 设置authentication\_timeout参数为59s。 - - ``` - gs_guc reload -N all -I all -c "authentication_timeout = 59s" - - Total instances: 2. Failed instances: 0. - Success to perform gs_guc! - ``` - - >![](public_sys-resources/icon-note.gif) **说明:** - >可以使用以下命令在数据库节点上设置authentication\_timeout参数为59s。 - >``` - >gs_guc reload -N all -I all -c "authentication_timeout = 59s" - >``` - -4. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - -5. 检查参数设置的正确性。 - - ``` - postgres=# SHOW authentication_timeout; - authentication_timeout - ------------------------ - 59s - (1 row) - ``` - - -使用方式三设置参数,以设置explain\_perf\_mode参数为例。 - -1. 以操作系统用户omm登录数据库主节点。 -2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - -3. 查看explain\_perf\_mode参数。 - - ``` - postgres=# SHOW explain_perf_mode; - explain_perf_mode - ------------------- - normal - (1 row) - ``` - -4. 设置explain\_perf\_mode参数。 - - 使用以下任意方式进行设置: - - - 设置数据库级别的参数 - - ``` - postgres=# ALTER DATABASE postgres SET explain_perf_mode TO pretty; - ``` - - 当结果显示为如下信息,则表示设置成功。 - - ``` - ALTER DATABASE - ``` - - 在下次会话中生效。 - - - 设置用户级别的参数 - - ``` - postgres=# ALTER USER omm SET explain_perf_mode TO pretty; - ``` - - 当结果显示为如下信息,则表示设置成功。 - - ``` - ALTER ROLE - ``` - - 在下次会话中生效。 - - - 设置会话级别的参数 - - ``` - postgres=# SET explain_perf_mode TO pretty; - ``` - - 当结果显示为如下信息,则表示设置成功。 - - ``` - SET - ``` - -5. 检查参数设置的正确性。 - - ``` - postgres=# SHOW explain_perf_mode; - explain_perf_mode - -------------- - pretty - (1 row) - ``` - - -## 示例 - -- 示例1:使用方式一修改openGauss数据库主节点的最大连接数。 - 1. 以操作系统用户omm登录数据库主节点。 - 2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 3. 查看最大连接数。 - - ``` - postgres=# SHOW max_connections; - max_connections - ----------------- - 200 - (1 row) - ``` - - 4. 使用如下命令退出数据库。 - - ``` - postgres=# \q - ``` - - 5. 修改openGauss数据库主节点的最大连接数。 - - ``` - gs_guc set -N all -I all -c "max_connections = 800" - ``` - - 6. 重启openGauss。 - - ``` - gs_om -t stop && gs_om -t start - ``` - - 7. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 8. 查看最大连接数。 - - ``` - postgres=# SHOW max_connections; - max_connections - ----------------- - 800 - (1 row) - ``` - - -- 示例2:使用方式二设置数据库主节点的客户端认证最长时间参数“authentication\_timeout” - 1. 以操作系统用户omm登录数据库主节点。 - 2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 3. 查看客户端认证的最长时间。 - - ``` - postgres=# SHOW authentication_timeout; - authentication_timeout - ------------------------ - 1min - (1 row) - ``` - - 4. 使用如下命令退出数据库。 - - ``` - postgres=# \q - ``` - - 5. 修改openGauss数据库主节点的客户端认证最长时间。 - - ``` - gs_guc reload -N all -I all -c "authentication_timeout = 59s" - ``` - - 6. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 7. 查看客户端认证的最长时间。 - - ``` - postgres=# SHOW authentication_timeout; - authentication_timeout - ------------------------ - 59s - (1 row) - ``` - - -- 示例3:修改openGauss数据库节点的最大连接数。 - 1. 以操作系统用户omm登录数据库主节点。 - 2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 3. 查看最大连接数。 - - ``` - postgres=# SHOW max_connections; - max_connections - ----------------- - 200 - (1 row) - ``` - - 4. 使用如下命令退出数据库。 - - ``` - postgres=# \q - ``` - - 5. 修改openGauss数据库节点的最大连接数。 - - ``` - gs_guc set -N all -I all -c "max_connections = 500" - ``` - - 6. 重启openGauss。 - - ``` - gs_om -t stop - gs_om -t start - ``` - - 7. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 8. 查看最大连接数。 - - ``` - postgres=# SHOW max_connections; - max_connections - ----------------- - 500 - (1 row) - ``` - - -- 示例4:设置数据库节点的客户端认证最长时间参数“authentication\_timeout” - 1. 以操作系统用户omm登录数据库主节点。 - 2. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 3. 查看客户端认证的最长时间。 - - ``` - postgres=# SHOW authentication_timeout; - authentication_timeout - ------------------------ - 1min - (1 row) - ``` - - 4. 使用如下命令退出数据库。 - - ``` - postgres=# \q - ``` - - 5. 修改openGauss数据库节点的客户端认证最长时间。 - - ``` - gs_guc reload -N all -I all -c "authentication_timeout = 30s" - ``` - - 6. 使用如下命令连接数据库。 - - ``` - gsql -d postgres -p 8000 - ``` - - postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 - - 连接成功后,系统显示类似如下信息: - - ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 - Non-SSL connection (SSL connection is recommended when requiring high-security) - Type "help" for help. - - postgres=# - ``` - - 7. 查看客户端认证的最长时间。 - - ``` - postgres=# SHOW authentication_timeout; - authentication_timeout - ------------------------ - 30s - (1 row) - ``` - - - diff --git "a/content/zh/docs/Technicalwhitepaper/\345\217\257\347\273\264\346\212\244\346\200\247.md" "b/content/zh/docs/Technicalwhitepaper/\345\217\257\347\273\264\346\212\244\346\200\247.md" deleted file mode 100644 index a67d489d9..000000000 --- "a/content/zh/docs/Technicalwhitepaper/\345\217\257\347\273\264\346\212\244\346\200\247.md" +++ /dev/null @@ -1,157 +0,0 @@ -# 可维护性 - -## 支持WDR诊断报告 - -WDR\(Workload Diagnosis Report\)基于两次不同时间点系统的性能快照数据, 生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 - -WDR主要依赖两个组件: - -- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个SNAPSHOT可以作为一个性能基线,其他SNAPSHOT与之比较的结果,可以分析出与基线的性能表现。 -- WDR Reporter:报表生成工具基于两个SNAPSHOT,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成SUMMARY 和DETAIL两个不同级别的性能数据。如[表1](#zh-cn_concept_0238164494_table14895120191613)、[表2](#zh-cn_concept_0238164494_table23331848193120)所示。 - -**表 1** SUMMARY级别诊断报告 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

诊断类别

-

描述

-

Database Stat

-

主要用于评估当前数据库上的负载,IO状况,负载和IO是衡量TP系统最最要的特性

-

包含当前连接到该数据库的session,提交、回滚的事务数,读取的磁盘块的数量,高速缓存中已经发现的磁盘块的次数,通过数据库查询返回、抓取、插入、更新、删除的行数,冲突、死锁发生的次数,临时文件的使用量,IO读写时间等

-

Load Profile

-

从时间,IO,事务,SQL几个维度评估当前系统负载的表现

-

包含作业运行elapse time、CPU time,事务日质量,逻辑和物理读的量,读写IO次数、大小,登入登出次数,SQL、事务执行量,SQL P85、P90响应时间等

-

Instance Efficiency Percentages

-

用于评估当前系统的缓存的效率。

-

主要包含数据库缓存命中率

-

Events

-

用于评估当前系统内核关键资源,关键事件的性能

-

主要包含数据库内核关键时间的发生次数,时间的等待时间

-

Wait Classes

-

用于评估当前系统关键事件类型的性能

-

主要包含数据内核在主要的等待事件的种类上的发布:STATUS、LWLOCK_EVENT、LOCK_EVENT、IO_EVENT

-

CPU

-

主要包含CPU在用户态、内核态、Wait IO、空闲状态下的时间发布

-

IO Profile

-

主要包含数据库Database IO次数、Database IO数据量、Redo IO次数、Redo IO量

-

Memory Statistics

-

包含最大进程内存、进程已经使用内存、最大共享内存、已经使用共享内存大小等

-
- -**表 2** DETAIL 级别诊断报告 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

诊断类别

-

描述

-

Time Model

-

主要用于评估当前系统在时间维度的性能表现

-

包含系统在各个阶段上消耗的时间:内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间

-

SQL Statistics

-

主要用于SQL语句性能问题的诊断

-

包含归一化的SQL的性能指标在多个维度上的排序:Elapsed Time、CPU Time、Rows Returned、Tuples Reads、Executions、Physical Reads、Logical Reads。这些指标的种类包括:执行时间,执行次数、行活动、Cache IO等

-

Wait Events

-

主要用于系统关键资源,关键时间的详细性能诊断

-

包含所有关键事件在一段时间内的表现,主要是事件发生的次数,消耗的时间

-

Cache IO Stats

-

用于诊断用户表和索引的性能

-

包含所有用户表、索引上的文件读写,缓存命中

-

Utility status

-

用于诊断后端作业性能的诊断

-

包含页面操作,复制等后端操作的性能

-

Object stats

-

用于诊断数据库对象的性能

-

包含用户表、索引上的表、索引扫描活动,insert、update、delete活动,有效行数量,表维护操作的状态等

-

Configuration settings

-

用于判断配置是够有变更

-

包含当前所有配置参数的快照

-
- -应用价值: - -- WDR报表是长期性能问题最主要的诊断手段。基于SNAPSHOT的性能基线,从多维度做性能分析,能帮助DBA 掌握系统负载繁忙程度,各个组件的性能表现,性能瓶颈。 -- SNAPSHOT也是后续性能问题自诊断和自优化建议的重要数据来源。 - -## 慢SQL诊断 - -慢SQL诊断分为两部分:实时慢SQL 和历史慢SQL。 - -- 实时慢SQL能根据用户提供的执行时间阈值,输出当前系统中正在执行的,且执行时间超过阈值的作业信息。 -- 历史慢SQL能根据用户提供的执行时间阈值,记录所有超过阈值的执行完毕的作业信息。 - -历史慢SQL提供表和文件两种维度的查询接口,用户从接口中能查询到作业的执行计划,开始、结束执行时间,执行查询的语句,行活动,内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间等。所有信息都是脱敏的。 - -应用价值: - -- 实时的慢SQL提供给用户管理尚未执行完毕的作业的接口,用户可以手动结束异常的,消耗过多资源的作业。 -- 历史慢SQL提供给用户对于慢SQL诊断所需的详细信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题。表和文件接口方便用户统计慢SQL指标,对接第三方平台。 - -## 支持一键式收集诊断信息 - -提供多种套件用于捕获、收集、分析诊断数据,使问题可以诊断,加速诊断过程。能根据开发和定位人员的需要,从生产环境中将必要的数据库日志、集群管理日志、堆栈信息等提取出来,定位人员根据获得信息进行问题的定界定位。 - -一键式收集工具,根据生产环境中问题的不同,从生产环境中获取不同的信息,从而提高问题定位定界的效率。用户可以通过改写配置文件,收集自己想要的信息: - -- 通过linux命令收集操作系统相关的信息 -- 通过查询系统表或者视图获得数据库系统相关的信息 -- 数据库系统运行日志和集群管理相关的日志 -- 数据库系统的配置信息 -- 数据库相关进程产生的Core文件 -- 数据库相关进程的堆栈信息 -- 数据库进程产生的trace信息 -- 数据库产生的redo日志文件xlog -- 计划复现信息 - diff --git "a/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" "b/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" deleted file mode 100644 index 4e0cd236b..000000000 --- "a/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" +++ /dev/null @@ -1,136 +0,0 @@ -# 数据库安全 - -## 访问控制 - -管理用户对数据库的访问控制权限,涵盖数据库系统权限和对象权限。 - -支持基于角色的访问控制机制,将角色和权限关联起来,通过将权限赋予给对应的角色,再将角色授予给用户,可实现用户访问控制权限管理。其中登录访问控制通过用户标识和认证技术来共同实现,而对象访问控制则基于用户在对象上的权限,通过对象权限检查实现对象访问控制。用户在为相关的数据库用户分配完成任务所需要的最小权限从而将数据库使用风险降到最低。 - -支持三权分立权限访问控制模型,数据库角色可分为系统管理员、安全管理员和审计管理员。其中安全管理员负责创建和管理用户,系统管理员负责授予和撤销用户权限,审计管理员负责审计所有用户的行为。 - -默认情况下,使用基于角色的访问控制模型。客户可通过设置参数来选择是否开启三权分立控制模型。 - -## 控制权和访问权分离 - -针对系统管理员用户,实现表对象的控制权和访问权分离,提高普通用户数据安全性,限制管理员对象访问权限。 - -该特性适用于如下场景,即对于有多个业务部门的企业,各部门间使用不同的数据库用户进行业务操作,同时存在同级别的数据库维护部门使用数据库管理员进行运维操作,业务部门希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权分离,提高用户数据的安全性。 - -系统管理员可以在创建用户时指定INDEPENDENT属性,表示该用户为私有用户。针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。 - -## 数据库加密认证 - -采用基于RFC5802机制的口令加密认证方法。 - -加密认证过程中采用单向Hash不可逆加密算法PBKDF2,可有效防止彩虹攻击。 - -创建用户所设置的口令被加密存储在系统表中。整个认证过程中口令加密存储和传输,通过计算相应的hash值并与服务端存储的值比较来进行正确性校验。 - -统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者口令的正确性。 - -## 数据库审计 - -审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。 - -用户可以通过参数配置对哪些语句或操作记录审计日志。 - -审计日志记录事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号以及详细信息。支持按起止时间段查询审计日志,并根据记录的字段进行筛选。 - -数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 - -## 网络通信安全特性 - -支持通过SSL加密客户端和服务器之间的通信数据,保证客户的客户端与服务器通信安全。 - -采用TLS 1.2协议标准,并使用安全强度较高的加密算法套件,支持的加密算法套件如[表1](#zh-cn_topic_0238166170_table13251121491017)所示。 - -**表 1** 加密算法套件 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IANA编码

-

IANA套件名

-

0x00,0x9F

-

TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

-

0x00,0x9E

-

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

-

0x00,0xA3

-

TLS_DHE_DSS_WITH_AES_256_GCM_SHA384

-

0x00,0xA2

-

TLS_DHE_DSS_WITH_AES_128_GCM_SHA256

-

0x00,0x6B

-

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

-

0x00,0x67

-

TLS_DHE_RSA_WITH_AES_128_CBC_SHA256

-

0x00,0x6A

-

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

-

0x00,0x40

-

TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

-

0xC0,0x9F

-

TLS_DHE_RSA_WITH_AES_256_CCM

-

0xC0,0x9E

-

TLS_DHE_RSA_WITH_AES_128_CCM

-

0x00,0x39

-

TLS_DHE_RSA_WITH_AES_256_CBC_SHA

-

0x00,0x33

-

TLS_DHE_RSA_WITH_AES_128_CBC_SHA

-

0x00,0x38

-

TLS_DHE_DSS_WITH_AES_256_CBC_SHA

-

0x00,0x32

-

TLS_DHE_DSS_WITH_AES_128_CBC_SHA

-
- -## 行级访问控制 - -行级访问控制特性将数据库访问粒度控制到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,按照行访问控制策略,读取到的结果可能是不同的。 - -用户可以在数据表创建行访问控制\(Row Level Security\)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性\(PERMISSIVE | RESTRICTIVE\)类型,通过AND或OR方式拼接,应用到执行计划上。 - -行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前行级访问控制支持的SQL语句包括SELECT,UPDATE,DELETE。 - diff --git "a/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md" "b/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md" index fcb12d232..67d5e006d 100644 --- "a/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md" +++ "b/content/zh/docs/Technicalwhitepaper/\346\225\260\346\215\256\345\272\223\346\240\270\345\277\203\346\212\200\346\234\257.md" @@ -1,15 +1,602 @@ # 数据库核心技术 -- **[面向应用开发的基本功能](面向应用开发的基本功能.md)** + -- **[高性能](高性能.md)** +- [数据库核心技术](#数据库核心技术a-namezh-cn_concept_0252569318a) + - [面向应用开发的基本功能](#面向应用开发的基本功能a-namezh-cn_concept_0252569319a) + - [高性能](#高性能a-namezh-cn_concept_0252569351a) + - [CBO优化器](#cbo优化器a-namesection191361958173919a) + - [行列混合存储](#行列混合存储a-namesection238822244016a) + - [自适应压缩](#自适应压缩a-namesection165674464017a) + - [分区](#分区a-namesection179995312414a) + - [SQL by pass](#sql-by-passa-namesection35179210428a) + - [鲲鹏NUMA架构优化](#鲲鹏numa架构优化a-namesection1133517227426a) + - [高扩展](#高扩展a-namezh-cn_concept_0252569367a) + - [高可用](#高可用a-namezh-cn_concept_0252569372a) + - [主备机](#主备机a-namesection3473135114413a) + - [逻辑备份](#逻辑备份a-namesection11293115015445a) + - [物理备份](#物理备份a-namesection1370220278457a) + - [可维护性](#可维护性a-namezh-cn_concept_0252569383a) + - [支持WDR诊断报告](#支持wdr诊断报告a-namesection16308432469a) + - [慢SQL诊断](#慢sql诊断a-namesection11920121884711a) + - [支持一键式收集诊断信息](#支持一键式收集诊断信息a-namesection38495113486a) + - [数据库安全](#数据库安全a-namezh-cn_concept_0252569391a) + - [访问控制](#访问控制a-namesection1518355319485a) + - [控制权和访问权分离](#控制权和访问权分离a-namesection74261220114919a) + - [数据库加密认证](#数据库加密认证a-namesection5666740124910a) + - [数据库审计](#数据库审计a-namesection1544614711502a) + - [网络通信安全特性](#网络通信安全特性a-namesection12318192310500a) + - [行级访问控制](#行级访问控制a-namesection135874520509a) -- **[高扩展](高扩展.md)** + -- **[高可用](高可用.md)** -- **[可维护性](可维护性.md)** +## 面向应用开发的基本功能 -- **[数据库安全](数据库安全.md)** +- 支持标准SQL + openGauss数据库支持标准的SQL。SQL标准是一个国际性的标准,定期会进行刷新。SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。遗憾的是,SQL特性的构筑成为了数据库厂商吸引用户和提高应用迁移成本的手段,新的SQL特性在厂商之间差异越来越大,目前还没有机构来进行权威的SQL标准度的测试。 + openGauss数据库支持SQL:2011大部分的核心特性,同时还支持部分的可选特性,具体的特性列表可以参考《openGauss 产品描述》。 + + 标准SQL的引入为所有的数据库厂商提供统一的SQL界面,减少使用者的学习成本和应用openGauss程序的迁移代价。 + +- 支持标准开发接口 + + 提供业界标准的ODBC及JDBC接口,保证用户业务快速迁移至openGauss。 + + 目前支持标准的ODBC 3.5及JDBC 4.0接口,其中ODBC支持SUSE、Win32、Win64平台,JDBC无平台差异。 + +- 事务支持 + + 事务支持指的就是系统提供事务的能力,支持全局事务的ACID,保证事务的原子性、一致性、隔离性和持久性。 + + 事务支持及数据一致性保证是绝大多数数据库的基本功能,只有支持了事务,才能满足事务化的应用需求。 + + - A:atomicity 原子性 + + 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。 + + - C:consistency 一致性 + + 事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务的数量。 + + - I: Isolation 隔离性 + + 隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。 + + - D:Durability 持久性 + + 在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。 + + 支持事务的默认隔离级别是读已提交。保证不会读到脏数据。 + + 事务分为单语句事务和事务块,相关基础接口: + + - Start transaction; 事务开启 + - Commit; 事务提交 + - Rollback; 事务回滚 + + 另有Set transaction可设置隔离级别、读写模式或可推迟模式。详细语法参见《openGauss 开发者指南》。 + +- 函数及存储过程支持 + + 函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。 + + 存储过程是SQL、PL/SQL的组合。存储过程可以使执行商业规则的代码从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 + + 1. 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。 + 2. 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。 + 3. 系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 + 4. 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 + 5. 支持6种异常信息级别方便客户对存储过程进行调试。 + + openGauss支持SQL标准中的函数及存储过程增强了存储过程的易用性。存储过程具体的使用方式可以参考《openGauss 开发者指南》。 + +- PG接口兼容 + + 兼容PSQL客户端,兼容PostgreSQL标准接口。 + +- 支持SQL hint + + 支持SQL hint影响执行计划生成、提升SQL查询性能。 + + Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,等多个手段来进行执行计划的调优,以提升查询的性能。 + +- Copy接口支持容错机制 + + openGauss提供用户封装好的Copy错误表创建函数,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。 + + +## 高性能 + +### CBO优化器 + +openGauss优化器是典型的基于代价的优化 \(Cost-Based Optimization,简称CBO\)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价\(cost\),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。 + +CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。 + +### 行列混合存储 + +openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。 + +一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不很多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。 + +列存储方式如[图1](#zh-cn_topic_0242724708_fig4487133722819)所示。 + +**图 1** 列存储示意图 +![](figures/列存储示意图.png "列存储示意图") + +在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如气象局的场景,单表有200\~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 + +行存表和列存表各有优劣,建议根据实际情况选择。 + +- 行存表 + + 默认创建表的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。 + +- 列存表 + + 数据按列进行存储,即一列所有数据紧挨着存储。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询,insert插入单条记录性能差。 + + +行存表和列存表的选择原则如下: + +- 更新频繁程度 + + 数据如果频繁更新,选择行存表。 + +- 插入频繁程度 + + 频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。 + +- 表的列数 + + 表的列数很多,选择列存表。 + +- 查询的列数 + + 如果每次查询时,只涉及了表的少数(<50%总列数)几个列,选择列存表。 + +- 压缩率 + + 列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。 + + +### 自适应压缩 + +当前主流数据库通常都会采用数据压缩技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适用压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。 + +数据入库和频繁的海量数据查询是用户的主要应用场景。 在数据入库场景中,自适应压缩可以大幅度地减少数据量,成倍提高IO操作效率,将数据簇集存储,从而获得快速的入库性能。当用户进行数据查询时,少量的IO操作和快速的数据解压可以加快数据获取的速率,从而在更短的时间内得到查询结果。 + +目前,数据库已实现了RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等多种压缩算法。数据库支持的数据类型与压缩算法的映射关系如下表所示。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-

+

RLE

+

DELTA

+

BITPACK/BYTEPACK

+

LZ4

+

ZLIB

+

LOCAL DICTIONARY

+

Smallint/int/bigint/Oid

+

Decimal/real/double

+

Money/time/date/

+

timestamp

+

+

+

+

+

+

-

+

Tinterval/interval/Time with time zone/

+

-

+

-

+

-

+

-

+

+

-

+

Numeric/char/varchar/text/nvarchar2

+

以及其他支持数据类型

+

+

+

+

+

+

+
+ +例如,支持类手机号字符串的大整数压缩、支持numeric类型的大整数压缩、支持对压缩算法进行不同压缩水平的调整。 + +### 分区 + +在openGauss系统中,数据分区是在一个实例内部对数据按照用户指定的策略对数据做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分。 + +对于大多数用户使用场景,分区表和普通表相比具有以下优点: + +- 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 +- 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 +- 方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。 +- 均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。 + +目前openGauss数据库支持的分区表为范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的。 + +范围分区功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。 + +用户可以在实际使用中根据需要调整建表时的分区键,使每次查询结果尽可能存储在相同或者最少的分区内(称为“分区剪枝”),通过获取连续I/O大幅度提升查询性能。 + +实际业务中,时间经常被作为查询对象的过滤条件。因此,用户可考虑选择时间列为分区键,键值范围可根据总数据量、一次查询数据量调整。 + +### SQL by pass + +在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了SQL-BY-PASS框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。 + +### 鲲鹏NUMA架构优化 + +鲲鹏NUMA架构优化图如下。 + +**图 2** 鲲鹏NUMA架构优化图 +![](figures/鲲鹏NUMA架构优化图.png "鲲鹏NUMA架构优化图") + +1. openGauss根据鲲鹏处理器的多核NUMA架构特点,进行针对性一系列NUMA架构相关优化,一方面尽量减少跨核内存访问的时延问题,另一方面重分发挥鲲鹏多核算力优势,所提供的关键技术包括重做日志批插,热点数据NUMA分布,CLog分区等,大幅提升TP系统的处理性能。 +2. openGauss基于鲲鹏芯片所使用的ARMv8.1架构,利用LSE扩展指令集实现高效的原子操作,有效提升CPU利用率,从而提升多线程间同步性能,XLog写入性能等。 +3. openGauss基于鲲鹏芯片提供的更宽的L3缓存cacheline,针对热点数据访问进行优化,有效提高缓存访问命中率,降低Cache缓存一致性维护开销,大幅提升系统整体的数据访问性能。 + +## 高扩展 + +**线程池高并发** + +在OLTP领域中,数据库需要处理大量的客户端连接。因此,高并发场景的处理能力是数据库的重要能力之一。 + +对于外部连接最简单的处理模式是per-thread-per-connection模式,即来一个用户连接产生一个线程。这个模式好处是架构上处理简单,但是高并发下,由于线程太多,线程切换和数据库轻量级锁区域的冲突过大导致性能急剧下降,使得系统性能(吞吐量)严重下降,无法满足用户性能的SLA。 + +因此,需要通过线程资源池化复用的技术来解决该问题。线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接session,这样把session和thread进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行session的调度管理。 + +## 高可用 + +### 主备机 + +为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。主备环境可以支持主备和一主多备两种模式。主备模式下,备机需要重做日志,可以升主。在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备主要用于一般可靠性的OLTP系统能够节省一定的存储资源。而一主多备提供更高的容灾能力,适合于更高可靠性事务处理的OLTP系统。 + +主备之间可以通过switchover进行角色切换,主机故障后可以通过failover对备机进行升主。 + +初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主拉齐。Build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。 + +### 逻辑备份 + +openGauss提供逻辑备份能力,可以将用户表的数据以通用的text或者csv格式备份到本地磁盘文件、,并在同构/异构数据库中恢复该用户表的数据。 + +### 物理备份 + +openGauss提供物理备份能力,可以将整个实例的数据以数据库内部格式备份到本地磁盘文件、中,并在同构数据库中恢复整个实例的数据。 + +物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。当前openGauss只支持全量备份。 + +## 可维护性 + +### 支持WDR诊断报告 + +WDR\(Workload Diagnosis Report\)基于两次不同时间点系统的性能快照数据, 生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。 + +WDR主要依赖两个组件: + +- SNAPSHOT性能快照:性能快照可以配置成按一定时间间隔从内核采集一定量的性能数据,持久化在用户表空间。任何一个SNAPSHOT可以作为一个性能基线,其他SNAPSHOT与之比较的结果,可以分析出与基线的性能表现。 +- WDR Reporter:报表生成工具基于两个SNAPSHOT,分析系统总体性能表现,并能计算出更多项具体的性能指标在这两个时间段之间的变化量,生成SUMMARY 和DETAIL两个不同级别的性能数据。如[表1](#zh-cn_concept_0238164494_table14895120191613)、[表2](#zh-cn_concept_0238164494_table23331848193120)所示。 + +**表 1** SUMMARY级别诊断报告 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

诊断类别

+

描述

+

Database Stat

+

主要用于评估当前数据库上的负载,IO状况,负载和IO是衡量TP系统最最要的特性

+

包含当前连接到该数据库的session,提交、回滚的事务数,读取的磁盘块的数量,高速缓存中已经发现的磁盘块的次数,通过数据库查询返回、抓取、插入、更新、删除的行数,冲突、死锁发生的次数,临时文件的使用量,IO读写时间等

+

Load Profile

+

从时间,IO,事务,SQL几个维度评估当前系统负载的表现

+

包含作业运行elapse time、CPU time,事务日质量,逻辑和物理读的量,读写IO次数、大小,登入登出次数,SQL、事务执行量,SQL P85、P90响应时间等

+

Instance Efficiency Percentages

+

用于评估当前系统的缓存的效率。

+

主要包含数据库缓存命中率

+

Events

+

用于评估当前系统内核关键资源,关键事件的性能

+

主要包含数据库内核关键时间的发生次数,时间的等待时间

+

Wait Classes

+

用于评估当前系统关键事件类型的性能

+

主要包含数据内核在主要的等待事件的种类上的发布:STATUS、LWLOCK_EVENT、LOCK_EVENT、IO_EVENT

+

CPU

+

主要包含CPU在用户态、内核态、Wait IO、空闲状态下的时间发布

+

IO Profile

+

主要包含数据库Database IO次数、Database IO数据量、Redo IO次数、Redo IO量

+

Memory Statistics

+

包含最大进程内存、进程已经使用内存、最大共享内存、已经使用共享内存大小等

+
+ +**表 2** DETAIL 级别诊断报告 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

诊断类别

+

描述

+

Time Model

+

主要用于评估当前系统在时间维度的性能表现

+

包含系统在各个阶段上消耗的时间:内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间

+

SQL Statistics

+

主要用于SQL语句性能问题的诊断

+

包含归一化的SQL的性能指标在多个维度上的排序:Elapsed Time、CPU Time、Rows Returned、Tuples Reads、Executions、Physical Reads、Logical Reads。这些指标的种类包括:执行时间,执行次数、行活动、Cache IO等

+

Wait Events

+

主要用于系统关键资源,关键时间的详细性能诊断

+

包含所有关键事件在一段时间内的表现,主要是事件发生的次数,消耗的时间

+

Cache IO Stats

+

用于诊断用户表和索引的性能

+

包含所有用户表、索引上的文件读写,缓存命中

+

Utility status

+

用于诊断后端作业性能的诊断

+

包含页面操作,复制等后端操作的性能

+

Object stats

+

用于诊断数据库对象的性能

+

包含用户表、索引上的表、索引扫描活动,insert、update、delete活动,有效行数量,表维护操作的状态等

+

Configuration settings

+

用于判断配置是够有变更

+

包含当前所有配置参数的快照

+
+ +应用价值: + +- WDR报表是长期性能问题最主要的诊断手段。基于SNAPSHOT的性能基线,从多维度做性能分析,能帮助DBA 掌握系统负载繁忙程度,各个组件的性能表现,性能瓶颈。 +- SNAPSHOT也是后续性能问题自诊断和自优化建议的重要数据来源。 + +### 慢SQL诊断 + +慢SQL诊断分为两部分:实时慢SQL 和历史慢SQL。 + +- 实时慢SQL能根据用户提供的执行时间阈值,输出当前系统中正在执行的,且执行时间超过阈值的作业信息。 +- 历史慢SQL能根据用户提供的执行时间阈值,记录所有超过阈值的执行完毕的作业信息。 + +历史慢SQL提供表和文件两种维度的查询接口,用户从接口中能查询到作业的执行计划,开始、结束执行时间,执行查询的语句,行活动,内核时间、CPU时间、执行时间、解析时间、编译时间、查询重写时间、计划生成时间、网络时间、IO时间等。所有信息都是脱敏的。 + +应用价值: + +- 实时的慢SQL提供给用户管理尚未执行完毕的作业的接口,用户可以手动结束异常的,消耗过多资源的作业。 +- 历史慢SQL提供给用户对于慢SQL诊断所需的详细信息,用户无需通过复现就能离线诊断特定慢SQL的性能问题。表和文件接口方便用户统计慢SQL指标,对接第三方平台。 + +### 支持一键式收集诊断信息 + +提供多种套件用于捕获、收集、分析诊断数据,使问题可以诊断,加速诊断过程。能根据开发和定位人员的需要,从生产环境中将必要的数据库日志、集群管理日志、堆栈信息等提取出来,定位人员根据获得信息进行问题的定界定位。 + +一键式收集工具,根据生产环境中问题的不同,从生产环境中获取不同的信息,从而提高问题定位定界的效率。用户可以通过改写配置文件,收集自己想要的信息: + +- 通过linux命令收集操作系统相关的信息 +- 通过查询系统表或者视图获得数据库系统相关的信息 +- 数据库系统运行日志和集群管理相关的日志 +- 数据库系统的配置信息 +- 数据库相关进程产生的Core文件 +- 数据库相关进程的堆栈信息 +- 数据库进程产生的trace信息 +- 数据库产生的redo日志文件xlog +- 计划复现信息 + +## 数据库安全 + +### 访问控制 + +管理用户对数据库的访问控制权限,涵盖数据库系统权限和对象权限。 + +支持基于角色的访问控制机制,将角色和权限关联起来,通过将权限赋予给对应的角色,再将角色授予给用户,可实现用户访问控制权限管理。其中登录访问控制通过用户标识和认证技术来共同实现,而对象访问控制则基于用户在对象上的权限,通过对象权限检查实现对象访问控制。用户在为相关的数据库用户分配完成任务所需要的最小权限从而将数据库使用风险降到最低。 + +支持三权分立权限访问控制模型,数据库角色可分为系统管理员、安全管理员和审计管理员。其中安全管理员负责创建和管理用户,系统管理员负责授予和撤销用户权限,审计管理员负责审计所有用户的行为。 + +默认情况下,使用基于角色的访问控制模型。客户可通过设置参数来选择是否开启三权分立控制模型。 + +### 控制权和访问权分离 + +针对系统管理员用户,实现表对象的控制权和访问权分离,提高普通用户数据安全性,限制管理员对象访问权限。 + +该特性适用于如下场景,即对于有多个业务部门的企业,各部门间使用不同的数据库用户进行业务操作,同时存在同级别的数据库维护部门使用数据库管理员进行运维操作,业务部门希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权分离,提高用户数据的安全性。 + +系统管理员可以在创建用户时指定INDEPENDENT属性,表示该用户为私有用户。针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。 + +### 数据库加密认证 + +采用基于RFC5802机制的口令加密认证方法。 + +加密认证过程中采用单向Hash不可逆加密算法PBKDF2,可有效防止彩虹攻击。 + +创建用户所设置的口令被加密存储在系统表中。整个认证过程中口令加密存储和传输,通过计算相应的hash值并与服务端存储的值比较来进行正确性校验。 + +统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者口令的正确性。 + +### 数据库审计 + +审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。 + +用户可以通过参数配置对哪些语句或操作记录审计日志。 + +审计日志记录事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号以及详细信息。支持按起止时间段查询审计日志,并根据记录的字段进行筛选。 + +数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 + +### 网络通信安全特性 + +支持通过SSL加密客户端和服务器之间的通信数据,保证客户的客户端与服务器通信安全。 + +采用TLS 1.2协议标准,并使用安全强度较高的加密算法套件,支持的加密算法套件如[表1](#zh-cn_topic_0238166170_table13251121491017)所示。 + +**表 1** 加密算法套件 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

IANA编码

+

IANA套件名

+

0x00,0x9F

+

TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

+

0x00,0x9E

+

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

+

0x00,0xA3

+

TLS_DHE_DSS_WITH_AES_256_GCM_SHA384

+

0x00,0xA2

+

TLS_DHE_DSS_WITH_AES_128_GCM_SHA256

+

0x00,0x6B

+

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

+

0x00,0x67

+

TLS_DHE_RSA_WITH_AES_128_CBC_SHA256

+

0x00,0x6A

+

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

+

0x00,0x40

+

TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

+

0xC0,0x9F

+

TLS_DHE_RSA_WITH_AES_256_CCM

+

0xC0,0x9E

+

TLS_DHE_RSA_WITH_AES_128_CCM

+

0x00,0x39

+

TLS_DHE_RSA_WITH_AES_256_CBC_SHA

+

0x00,0x33

+

TLS_DHE_RSA_WITH_AES_128_CBC_SHA

+

0x00,0x38

+

TLS_DHE_DSS_WITH_AES_256_CBC_SHA

+

0x00,0x32

+

TLS_DHE_DSS_WITH_AES_128_CBC_SHA

+
+ +### 行级访问控制 + +行级访问控制特性将数据库访问粒度控制到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,按照行访问控制策略,读取到的结果可能是不同的。 + +用户可以在数据表创建行访问控制\(Row Level Security\)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性\(PERMISSIVE | RESTRICTIVE\)类型,通过AND或OR方式拼接,应用到执行计划上。 + +行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段将满足条件的表达式应用到执行计划上,影响最终的执行结果。当前行级访问控制支持的SQL语句包括SELECT,UPDATE,DELETE。 + + \ No newline at end of file diff --git "a/content/zh/docs/Technicalwhitepaper/\351\235\242\345\220\221\345\272\224\347\224\250\345\274\200\345\217\221\347\232\204\345\237\272\346\234\254\345\212\237\350\203\275.md" "b/content/zh/docs/Technicalwhitepaper/\351\235\242\345\220\221\345\272\224\347\224\250\345\274\200\345\217\221\347\232\204\345\237\272\346\234\254\345\212\237\350\203\275.md" deleted file mode 100644 index dc9e95dce..000000000 --- "a/content/zh/docs/Technicalwhitepaper/\351\235\242\345\220\221\345\272\224\347\224\250\345\274\200\345\217\221\347\232\204\345\237\272\346\234\254\345\212\237\350\203\275.md" +++ /dev/null @@ -1,77 +0,0 @@ -# 面向应用开发的基本功能 - -- 支持标准SQL - - openGauss数据库支持标准的SQL。SQL标准是一个国际性的标准,定期会进行刷新。SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。遗憾的是,SQL特性的构筑成为了数据库厂商吸引用户和提高应用迁移成本的手段,新的SQL特性在厂商之间差异越来越大,目前还没有机构来进行权威的SQL标准度的测试。 - - openGauss数据库支持SQL:2011大部分的核心特性,同时还支持部分的可选特性,具体的特性列表可以参考《openGauss 产品描述》。 - - 标准SQL的引入为所有的数据库厂商提供统一的SQL界面,减少使用者的学习成本和应用openGauss程序的迁移代价。 - -- 支持标准开发接口 - - 提供业界标准的ODBC及JDBC接口,保证用户业务快速迁移至openGauss。 - - 目前支持标准的ODBC 3.5及JDBC 4.0接口,其中ODBC支持SUSE、Win32、Win64平台,JDBC无平台差异。 - -- 事务支持 - - 事务支持指的就是系统提供事务的能力,支持全局事务的ACID,保证事务的原子性、一致性、隔离性和持久性。 - - 事务支持及数据一致性保证是绝大多数数据库的基本功能,只有支持了事务,才能满足事务化的应用需求。 - - - A:atomicity 原子性 - - 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。 - - - C:consistency 一致性 - - 事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务的数量。 - - - I: Isolation 隔离性 - - 隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。 - - - D:Durability 持久性 - - 在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。 - - 支持事务的默认隔离级别是读已提交。保证不会读到脏数据。 - - 事务分为单语句事务和事务块,相关基础接口: - - - Start transaction; 事务开启 - - Commit; 事务提交 - - Rollback; 事务回滚 - - 另有Set transaction可设置隔离级别、读写模式或可推迟模式。详细语法参见《openGauss 开发者指南》。 - -- 函数及存储过程支持 - - 函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。 - - 存储过程是SQL、PL/SQL的组合。存储过程可以使执行商业规则的代码从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 - - 1. 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。 - 2. 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。 - 3. 系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 - 4. 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 - 5. 支持6种异常信息级别方便客户对存储过程进行调试。 - - openGauss支持SQL标准中的函数及存储过程增强了存储过程的易用性。存储过程具体的使用方式可以参考《openGauss 开发者指南》。 - -- PG接口兼容 - - 兼容PSQL客户端,兼容PostgreSQL标准接口。 - -- 支持SQL hint - - 支持SQL hint影响执行计划生成、提升SQL查询性能。 - - Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,等多个手段来进行执行计划的调优,以提升查询的性能。 - -- Copy接口支持容错机制 - - openGauss提供用户封装好的Copy错误表创建函数,并允许用户在使用Copy From指令时指定容错选项,使得Copy From语句在执行过程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在Copy From的目标文件即使有少量数据错误也可以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。 - - diff --git "a/content/zh/docs/Technicalwhitepaper/\351\253\230\345\217\257\347\224\250.md" "b/content/zh/docs/Technicalwhitepaper/\351\253\230\345\217\257\347\224\250.md" deleted file mode 100644 index 8bc94e620..000000000 --- "a/content/zh/docs/Technicalwhitepaper/\351\253\230\345\217\257\347\224\250.md" +++ /dev/null @@ -1,20 +0,0 @@ -# 高可用 - -## 主备机 - -为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。主备环境可以支持主备和一主多备两种模式。主备模式下,备机需要重做日志,可以升主。在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备主要用于一般可靠性的OLTP系统能够节省一定的存储资源。而一主多备提供更高的容灾能力,适合于更高可靠性事务处理的OLTP系统。 - -主备之间可以通过switchover进行角色切换,主机故障后可以通过failover对备机进行升主。 - -初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主拉齐。Build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。 - -## 逻辑备份 - -openGauss提供逻辑备份能力,可以将用户表的数据以通用的text或者csv格式备份到本地磁盘文件、,并在同构/异构数据库中恢复该用户表的数据。 - -## 物理备份 - -openGauss提供物理备份能力,可以将整个实例的数据以数据库内部格式备份到本地磁盘文件、中,并在同构数据库中恢复整个实例的数据。 - -物理备份主要分为全量备份和增量备份,区别如下:全量备份包含备份时刻点上数据库的全量数据,耗时时间长(和数据库数据总量成正比),自身即可恢复出完整的数据库;增量备份只包含从指定时刻点之后的增量修改数据,耗时时间短(和增量数据成正比,和数据总量无关),但是必须要和全量备份数据一起才能恢复出完整的数据库。当前openGauss只支持全量备份。 - diff --git "a/content/zh/docs/Technicalwhitepaper/\351\253\230\346\200\247\350\203\275.md" "b/content/zh/docs/Technicalwhitepaper/\351\253\230\346\200\247\350\203\275.md" deleted file mode 100644 index 2385554e8..000000000 --- "a/content/zh/docs/Technicalwhitepaper/\351\253\230\346\200\247\350\203\275.md" +++ /dev/null @@ -1,168 +0,0 @@ -# 高性能 - -## CBO优化器 - -openGauss优化器是典型的基于代价的优化 \(Cost-Based Optimization,简称CBO\)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价\(cost\),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。 - -CBO优化器能够在众多计划中依据代价选出最高效的执行计划,最大限度的满足客户业务要求。 - -## 行列混合存储 - -openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。 - -一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不很多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。 - -列存储方式如[图1](#zh-cn_topic_0242724708_fig4487133722819)所示。 - -**图 1** 列存储示意图 -![](figures/列存储示意图.png "列存储示意图") - -在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如气象局的场景,单表有200\~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。 - -行存表和列存表各有优劣,建议根据实际情况选择。 - -- 行存表 - - 默认创建表的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。 - -- 列存表 - - 数据按列进行存储,即一列所有数据紧挨着存储。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询,insert插入单条记录性能差。 - - -行存表和列存表的选择原则如下: - -- 更新频繁程度 - - 数据如果频繁更新,选择行存表。 - -- 插入频繁程度 - - 频繁的少量插入,选择行存表。一次插入大批量数据,选择列存表。 - -- 表的列数 - - 表的列数很多,选择列存表。 - -- 查询的列数 - - 如果每次查询时,只涉及了表的少数(<50%总列数)几个列,选择列存表。 - -- 压缩率 - - 列存表比行存表压缩率高。但高压缩率会消耗更多的CPU资源。 - - -## 自适应压缩 - -当前主流数据库通常都会采用数据压缩技术。数据类型不同,适用于它的压缩算法不同。对于相同类型的数据,其数据特征不同,采用不同的压缩算法达到的效果也不相同。自适用压缩正是从数据类型和数据特征出发,采用相应的压缩算法,实现了良好的压缩比、快速的入库性能以及良好的查询性能。 - -数据入库和频繁的海量数据查询是用户的主要应用场景。 在数据入库场景中,自适应压缩可以大幅度地减少数据量,成倍提高IO操作效率,将数据簇集存储,从而获得快速的入库性能。当用户进行数据查询时,少量的IO操作和快速的数据解压可以加快数据获取的速率,从而在更短的时间内得到查询结果。 - -目前,数据库已实现了RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等多种压缩算法。数据库支持的数据类型与压缩算法的映射关系如下表所示。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-

-

RLE

-

DELTA

-

BITPACK/BYTEPACK

-

LZ4

-

ZLIB

-

LOCAL DICTIONARY

-

Smallint/int/bigint/Oid

-

Decimal/real/double

-

Money/time/date/

-

timestamp

-

-

-

-

-

-

-

-

Tinterval/interval/Time with time zone/

-

-

-

-

-

-

-

-

-

-

-

-

Numeric/char/varchar/text/nvarchar2

-

以及其他支持数据类型

-

-

-

-

-

-

-
- -例如,支持类手机号字符串的大整数压缩、支持numeric类型的大整数压缩、支持对压缩算法进行不同压缩水平的调整。 - -## 分区 - -在openGauss系统中,数据分区是在一个实例内部对数据按照用户指定的策略对数据做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分。 - -对于大多数用户使用场景,分区表和普通表相比具有以下优点: - -- 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 -- 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 -- 方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。 -- 均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。 - -目前openGauss数据库支持的分区表为范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的。 - -范围分区功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。 - -用户可以在实际使用中根据需要调整建表时的分区键,使每次查询结果尽可能存储在相同或者最少的分区内(称为“分区剪枝”),通过获取连续I/O大幅度提升查询性能。 - -实际业务中,时间经常被作为查询对象的过滤条件。因此,用户可考虑选择时间列为分区键,键值范围可根据总数据量、一次查询数据量调整。 - -## SQL by pass - -在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,提出了SQL-BY-PASS框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。 - -## 鲲鹏NUMA架构优化 - -鲲鹏NUMA架构优化图如下。 - -**图 2** 鲲鹏NUMA架构优化图 -![](figures/鲲鹏NUMA架构优化图.png "鲲鹏NUMA架构优化图") - -1. openGauss根据鲲鹏处理器的多核NUMA架构特点,进行针对性一系列NUMA架构相关优化,一方面尽量减少跨核内存访问的时延问题,另一方面重分发挥鲲鹏多核算力优势,所提供的关键技术包括重做日志批插,热点数据NUMA分布,CLog分区等,大幅提升TP系统的处理性能。 -2. openGauss基于鲲鹏芯片所使用的ARMv8.1架构,利用LSE扩展指令集实现高效的原子操作,有效提升CPU利用率,从而提升多线程间同步性能,XLog写入性能等。 -3. openGauss基于鲲鹏芯片提供的更宽的L3缓存cacheline,针对热点数据访问进行优化,有效提高缓存访问命中率,降低Cache缓存一致性维护开销,大幅提升系统整体的数据访问性能。 - diff --git "a/content/zh/docs/Technicalwhitepaper/\351\253\230\346\211\251\345\261\225.md" "b/content/zh/docs/Technicalwhitepaper/\351\253\230\346\211\251\345\261\225.md" deleted file mode 100644 index ed7cd64de..000000000 --- "a/content/zh/docs/Technicalwhitepaper/\351\253\230\346\211\251\345\261\225.md" +++ /dev/null @@ -1,10 +0,0 @@ -# 高扩展 - -**线程池高并发** - -在OLTP领域中,数据库需要处理大量的客户端连接。因此,高并发场景的处理能力是数据库的重要能力之一。 - -对于外部连接最简单的处理模式是per-thread-per-connection模式,即来一个用户连接产生一个线程。这个模式好处是架构上处理简单,但是高并发下,由于线程太多,线程切换和数据库轻量级锁区域的冲突过大导致性能急剧下降,使得系统性能(吞吐量)严重下降,无法满足用户性能的SLA。 - -因此,需要通过线程资源池化复用的技术来解决该问题。线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接session,这样把session和thread进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行session的调度管理。 - diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index 36c7675ad..4ecd1809c 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -31,12 +31,6 @@ headless: true - [典型组网]({{< relref "./docs/Technicalwhitepaper/典型组网.md" >}}) - [软硬件配置要求]({{< relref "./docs/Technicalwhitepaper/软硬件配置要求.md" >}}) - [数据库核心技术]({{< relref "./docs/Technicalwhitepaper/数据库核心技术.md" >}}) - - [面向应用开发的基本功能]({{< relref "./docs/Technicalwhitepaper/面向应用开发的基本功能.md" >}}) - - [高性能]({{< relref "./docs/Technicalwhitepaper/高性能.md" >}}) - - [高扩展]({{< relref "./docs/Technicalwhitepaper/高扩展.md" >}}) - - [高可用]({{< relref "./docs/Technicalwhitepaper/高可用.md" >}}) - - [可维护性]({{< relref "./docs/Technicalwhitepaper/可维护性.md" >}}) - - [数据库安全]({{< relref "./docs/Technicalwhitepaper/数据库安全.md" >}}) - [技术指标]({{< relref "./docs/Technicalwhitepaper/技术指标.md" >}}) - [术语表]({{< relref "./docs/Technicalwhitepaper/术语表.md" >}}) @@ -69,46 +63,23 @@ headless: true - [了解安装流程]({{< relref "./docs/Quickstart/了解安装流程.md" >}}) - [获取安装包]({{< relref "./docs/Quickstart/获取安装包.md" >}}) - [准备软硬件安装环境]({{< relref "./docs/Quickstart/准备软硬件安装环境.md" >}}) - - [软硬件环境要求]({{< relref "./docs/Quickstart/软硬件环境要求.md" >}}) - - [修改操作系统配置]({{< relref "./docs/Quickstart/修改操作系统配置.md" >}}) - - [设置root用户远程登录]({{< relref "./docs/Quickstart/设置root用户远程登录.md" >}}) - - [了解安装用户及用户组]({{< relref "./docs/Quickstart/了解安装用户及用户组.md" >}}) + - [了解安装用户及用户组]({{< relref "./docs/Quickstart/了解安装用户及用户组.md" >}}) - [安装openGauss]({{< relref "./docs/Quickstart/安装openGauss.md" >}}) - [创建XML配置文件]({{< relref "./docs/Quickstart/创建XML配置文件.md" >}}) - - [配置数据库名称及各项目录]({{< relref "./docs/Quickstart/配置数据库名称及各项目录.md" >}}) - - [配置Host基本信息]({{< relref "./docs/Quickstart/配置Host基本信息.md" >}}) - - [配置数据库主节点信息]({{< relref "./docs/Quickstart/配置数据库主节点信息.md" >}}) - - [示例]({{< relref "./docs/Quickstart/示例.md" >}}) - [初始化安装环境]({{< relref "./docs/Quickstart/初始化安装环境.md" >}}) - - [准备安装用户及环境]({{< relref "./docs/Quickstart/准备安装用户及环境.md" >}}) - - [手工建立互信]({{< relref "./docs/Quickstart/手工建立互信.md" >}}) - - [配置操作系统参数]({{< relref "./docs/Quickstart/配置操作系统参数.md" >}}) - [执行安装]({{< relref "./docs/Quickstart/执行安装.md" >}}) - [初始化数据库]({{< relref "./docs/Quickstart/初始化数据库.md" >}}) - [(可选)设置备机可读]({{< relref "./docs/Quickstart/(可选)设置备机可读.md" >}}) - [安装验证]({{< relref "./docs/Quickstart/安装验证.md" >}}) - [检查健康状态]({{< relref "./docs/Quickstart/检查健康状态.md" >}}) - [开始使用产品]({{< relref "./docs/Quickstart/开始使用产品.md" >}}) - - [设置openGauss参数]({{< relref "./docs/Quickstart/设置openGauss参数.md" >}}) - - [设置客户端认证策略]({{< relref "./docs/Quickstart/设置客户端认证策略.md" >}}) - - [设置配置文件参数]({{< relref "./docs/Quickstart/设置配置文件参数.md" >}}) + - [设置openGauss参数]({{< relref "./docs/Quickstart/设置openGauss参数.md" >}}) - [gsql客户端连接]({{< relref "./docs/Quickstart/gsql客户端连接.md" >}}) - - [确认连接信息]({{< relref "./docs/Quickstart/确认连接信息.md" >}}) - - [使用gsql本地连接]({{< relref "./docs/Quickstart/使用gsql本地连接.md" >}}) - - [使用gsql远程连接]({{< relref "./docs/Quickstart/使用gsql远程连接.md" >}}) - [简单数据管理]({{< relref "./docs/Quickstart/简单数据管理.md" >}}) - - [创建数据库]({{< relref "./docs/Quickstart/创建数据库.md" >}}) - - [创建表]({{< relref "./docs/Quickstart/创建表.md" >}}) - - [查看对象]({{< relref "./docs/Quickstart/查看对象.md" >}}) - [简单权限管理]({{< relref "./docs/Quickstart/简单权限管理.md" >}}) - - [创建角色]({{< relref "./docs/Quickstart/创建角色.md" >}}) - - [创建用户]({{< relref "./docs/Quickstart/创建用户.md" >}}) - - [权限赋予]({{< relref "./docs/Quickstart/权限赋予.md" >}}) - - [通过客户端工具执行SQL]({{< relref "./docs/Quickstart/通过客户端工具执行SQL.md" >}}) - - [通过JDBC执行SQL]({{< relref "./docs/Quickstart/通过JDBC执行SQL.md" >}}) + - [通过客户端工具执行SQL]({{< relref "./docs/Quickstart/通过客户端工具执行SQL.md" >}}) + - [通过JDBC执行SQL]({{< relref "./docs/Quickstart/通过JDBC执行SQL.md" >}}) - [配置运行参数]({{< relref "./docs/Quickstart/配置运行参数.md" >}}) - - [查看参数当前取值]({{< relref "./docs/Quickstart/查看参数当前取值.md" >}}) - - [重设参数]({{< relref "./docs/Quickstart/重设参数.md" >}}) - [GUC参数说明]({{< relref "./docs/Quickstart/GUC参数说明.md" >}}) - [GUC使用说明]({{< relref "./docs/Quickstart/GUC使用说明.md" >}}) - [文件位置]({{< relref "./docs/Quickstart/文件位置.md" >}}) -- Gitee