尝试使用OCI数据库与PostgreSQL

首先

OCI最新推出的服务中,现已推出了针对PostgreSQL的托管服务,我将尝试使用一下。
顺便提一下,我之前没有过使用PostgreSQL的经验。

 

设置政策

根据需要确定政策。

 

创建数据库。

 

在 OCI 控制台中,点击数据库→PostgreSQL→数据库,然后点击创建 PostgreSQL 数据库。

点击以创建新数据库

スクリーンショット 2023-11-15 12.51.40.png

数据库架构

スクリーンショット 2023-11-15 12.53.32.png

数据库系统

节点数的上限在手册中没有提及,但似乎最多可以设置为8个节点。本次我们设为1个节点。
如果超过2个节点,则一个节点将成为主节点,其余的将成为副本节点。
副本节点可以通过升级变成主节点。(自动进行?)

任何读副本节点都可以升级为主节点。

目前,性能层级只能选择300K IOPS。

スクリーンショット 2023-11-15 12.56.41.png

硬件配置

实例的形状是灵活形状,但内存会根据CPU自动变化。
最小的CPU是2 OCPU,最大的CPU是64 OCPU。(2, 4, 8, 16, 32, 64)
此外,只有E4实例(AMD)可用。

スクリーンショット 2023-11-15 13.11.05.png

网络设置

选择要配置的VCN。您可以选择公共子网,但只能在私有子网中配置。
(如果选择了公共子网,将导致错误)

スクリーンショット 2023-11-15 13.16.47.png

数据库管理员资格证明

我们将设置管理用户。
同时,密码可以通过控制台进行设置,或者使用Vault。本次我们将使用事先创建的Vault和Secret。
以下是密码要求。Secret中的密码也必须符合这些要求。

密码长度必须介于8到32个字符之间,并且必须包含至少一个大写字母、一个小写字母、一个数字和一个特殊字符。

スクリーンショット 2023-11-15 13.20.23.png

管理政策

这是关于备份和维护设置的内容。这次我们保持默认设置。

スクリーンショット 2023-11-15 13.24.33.png

以上是设定内容,确认摘要并创建数据库。

稍等一下,确保状态已更改为”活动”。
我会在稍后连接到数据库时将需要的终端点记下来。

スクリーンショット 2023-11-15 13.30.42.png

连接到数据库

安装PostgreSQL CLI。

请按照以下方法在Oracle Linux服务器上安装PostgreSQL CLI:

 

当您在此选择操作系统、版本和架构后,将显示安装脚本。

 

这次将使用此脚本进行安装。

#!/bin/bash

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
$ chmod +x install.sh 
$ ./install.sh 
This system is receiving updates from OSMS server.
Last metadata expiration check: 1:39:55 ago on Wed 15 Nov 2023 01:21:30 AM GMT.
pgdg-redhat-repo-latest.noarch.rpm                                                                                 7.6 kB/s |  13 kB     00:01    
Dependencies resolved.
===================================================================================================================================================
 Package                                Architecture                 Version                              Repository                          Size
===================================================================================================================================================
Installing:
 pgdg-redhat-repo                       noarch                       42.0-35PGDG                          @commandline                        13 k

Transaction Summary
===================================================================================================================================================
Install  1 Package

Total size: 13 k
Installed size: 15 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                           1/1 
  Installing       : pgdg-redhat-repo-42.0-35PGDG.noarch                                                                                       1/1 
  Verifying        : pgdg-redhat-repo-42.0-35PGDG.noarch                                                                                       1/1 

Installed:
  pgdg-redhat-repo-42.0-35PGDG.noarch                                                                                                              

Complete!
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
This system is receiving updates from OSMS server.
Last metadata expiration check: 0:00:15 ago on Wed 15 Nov 2023 03:02:25 AM GMT.
Dependencies resolved.
===================================================================================================================================================
 Package                              Architecture            Version                              Repository                                 Size
===================================================================================================================================================
Installing:
 postgresql14-server                  x86_64                  14.10-1PGDG.rhel8                    pgdg14                                    5.7 M
Installing dependencies:
 lz4                                  x86_64                  1.8.3-3.el8_4                        ol8_baseos_latest-x86_64                  103 k
 postgresql14                         x86_64                  14.10-1PGDG.rhel8                    pgdg14                                    1.5 M
 postgresql14-libs                    x86_64                  14.10-1PGDG.rhel8                    pgdg14                                    280 k

Transaction Summary
===================================================================================================================================================
Install  4 Packages

Total download size: 7.6 M
Installed size: 32 M
Downloading Packages:
(1/4): lz4-1.8.3-3.el8_4.x86_64.rpm                                                                                4.8 MB/s | 103 kB     00:00    
(2/4): postgresql14-libs-14.10-1PGDG.rhel8.x86_64.rpm                                                              103 kB/s | 280 kB     00:02    
(3/4): postgresql14-14.10-1PGDG.rhel8.x86_64.rpm                                                                   463 kB/s | 1.5 MB     00:03    
(4/4): postgresql14-server-14.10-1PGDG.rhel8.x86_64.rpm                                                            1.3 MB/s | 5.7 MB     00:04    
---------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                              1.7 MB/s | 7.6 MB     00:04     
PostgreSQL 14 for RHEL / Rocky 8 - x86_64                                                                          1.6 MB/s | 1.7 kB     00:00    
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                           1/1 
  Installing       : postgresql14-libs-14.10-1PGDG.rhel8.x86_64                                                                                1/4 
  Running scriptlet: postgresql14-libs-14.10-1PGDG.rhel8.x86_64                                                                                1/4 
  Installing       : lz4-1.8.3-3.el8_4.x86_64                                                                                                  2/4 
  Installing       : postgresql14-14.10-1PGDG.rhel8.x86_64                                                                                     3/4 
  Running scriptlet: postgresql14-14.10-1PGDG.rhel8.x86_64                                                                                     3/4 
  Running scriptlet: postgresql14-server-14.10-1PGDG.rhel8.x86_64                                                                              4/4 
  Installing       : postgresql14-server-14.10-1PGDG.rhel8.x86_64                                                                              4/4 
  Running scriptlet: postgresql14-server-14.10-1PGDG.rhel8.x86_64                                                                              4/4 
  Verifying        : lz4-1.8.3-3.el8_4.x86_64                                                                                                  1/4 
  Verifying        : postgresql14-14.10-1PGDG.rhel8.x86_64                                                                                     2/4 
  Verifying        : postgresql14-libs-14.10-1PGDG.rhel8.x86_64                                                                                3/4 
  Verifying        : postgresql14-server-14.10-1PGDG.rhel8.x86_64                                                                              4/4 

Installed:
  lz4-1.8.3-3.el8_4.x86_64                           postgresql14-14.10-1PGDG.rhel8.x86_64       postgresql14-libs-14.10-1PGDG.rhel8.x86_64      
  postgresql14-server-14.10-1PGDG.rhel8.x86_64      

Complete!
Initializing database ... OK

Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-14.service → /usr/lib/systemd/system/postgresql-14.service.

我确认一下。

$ psql -V
psql (PostgreSQL) 14.10

连接到数据库

使用控制台确认的终端点和在创建数据库时设置的管理用户(本次为admin)来进行连接。
密码是设置在Secret中的密码。

$ psql -h <endpoint_IP> -U <admin_username> -d postgres
Password for user admin: 
psql (14.10, server 14.9)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=> 

确认和创建表格

我們將檢查PostgreSQL系統目錄之一的pg_tables。

postgres=> select schemaname, tablename, tableowner from pg_tables;
     schemaname     |        tablename        |  tableowner   
--------------------+-------------------------+---------------
 pg_catalog         | pg_statistic            | oci_superuser
 pg_catalog         | pg_type                 | oci_superuser
 pg_catalog         | pg_foreign_table        | oci_superuser
 pg_catalog         | pg_authid               | oci_superuser
 pg_catalog         | pg_statistic_ext_data   | oci_superuser
 pg_catalog         | pg_user_mapping         | oci_superuser
 pg_catalog         | pg_subscription         | oci_superuser
 pg_catalog         | pg_attribute            | oci_superuser
 pg_catalog         | pg_proc                 | oci_superuser
 pg_catalog         | pg_class                | oci_superuser
 pg_catalog         | pg_attrdef              | oci_superuser
 pg_catalog         | pg_constraint           | oci_superuser
 pg_catalog         | pg_inherits             | oci_superuser
 pg_catalog         | pg_index                | oci_superuser
 pg_catalog         | pg_operator             | oci_superuser
 pg_catalog         | pg_opfamily             | oci_superuser
 pg_catalog         | pg_opclass              | oci_superuser
 pg_catalog         | pg_am                   | oci_superuser
 pg_catalog         | pg_amop                 | oci_superuser
 pg_catalog         | pg_amproc               | oci_superuser
 pg_catalog         | pg_language             | oci_superuser
 pg_catalog         | pg_largeobject_metadata | oci_superuser
 pg_catalog         | pg_aggregate            | oci_superuser
 pg_catalog         | pg_statistic_ext        | oci_superuser
 pg_catalog         | pg_rewrite              | oci_superuser
 pg_catalog         | pg_trigger              | oci_superuser
 pg_catalog         | pg_event_trigger        | oci_superuser
 pg_catalog         | pg_description          | oci_superuser
 pg_catalog         | pg_cast                 | oci_superuser
 pg_catalog         | pg_enum                 | oci_superuser
 pg_catalog         | pg_namespace            | oci_superuser
 pg_catalog         | pg_conversion           | oci_superuser
 pg_catalog         | pg_depend               | oci_superuser
 pg_catalog         | pg_database             | oci_superuser
 pg_catalog         | pg_db_role_setting      | oci_superuser
 pg_catalog         | pg_tablespace           | oci_superuser
 pg_catalog         | pg_auth_members         | oci_superuser
 pg_catalog         | pg_shdepend             | oci_superuser
 pg_catalog         | pg_shdescription        | oci_superuser
 pg_catalog         | pg_ts_config            | oci_superuser
 pg_catalog         | pg_ts_config_map        | oci_superuser
 pg_catalog         | pg_ts_dict              | oci_superuser
 pg_catalog         | pg_ts_parser            | oci_superuser
 pg_catalog         | pg_ts_template          | oci_superuser
 pg_catalog         | pg_extension            | oci_superuser
 pg_catalog         | pg_foreign_data_wrapper | oci_superuser
 pg_catalog         | pg_foreign_server       | oci_superuser
 pg_catalog         | pg_policy               | oci_superuser
 pg_catalog         | pg_replication_origin   | oci_superuser
 pg_catalog         | pg_default_acl          | oci_superuser
 pg_catalog         | pg_init_privs           | oci_superuser
 pg_catalog         | pg_seclabel             | oci_superuser
 pg_catalog         | pg_shseclabel           | oci_superuser
 pg_catalog         | pg_collation            | oci_superuser
 pg_catalog         | pg_partitioned_table    | oci_superuser
 pg_catalog         | pg_range                | oci_superuser
 pg_catalog         | pg_transform            | oci_superuser
 pg_catalog         | pg_sequence             | oci_superuser
 pg_catalog         | pg_publication          | oci_superuser
 pg_catalog         | pg_publication_rel      | oci_superuser
 pg_catalog         | pg_subscription_rel     | oci_superuser
 pg_catalog         | pg_largeobject          | oci_superuser
 information_schema | sql_parts               | oci_superuser
 information_schema | sql_implementation_info | oci_superuser
 information_schema | sql_features            | oci_superuser
 information_schema | sql_sizing              | oci_superuser
(66 rows)

创建一个新的表并插入数据。

postgres=> CREATE TABLE accounts (
postgres(> user_id serial primary key,
postgres(> username VARCHAR ( 50 ) UNIQUE NOT NULL
postgres(> );
CREATE TABLE
postgres=> insert into accounts (user_id, username)
postgres-> values ('100','tanaka');
INSERT 0 1
postgres=> select * from accounts;
 user_id | username 
---------+----------
     100 | tanaka
(1 row)

虽然这是我第一次使用PostgreSQL,但我已经完成了从配置到创建表和插入数据的过程。

bannerAds