1.前言

大家都知道openGauss数据库是基于PostgreSQL9.2的基础上二次开发的一个数据库,增加了很多功能。中启乘数科技经过一段时间的研究,把openGauss相对与PostgreSQL一些变化总结出来,让新手可以快速入门。

如果想先从大方面上了解openGauss与PostgreSQL区别,可以见:

2.一些工具的改变

下面的命令行工具出现了改名:

  • pg_ctl改名成gs_ctl,同时增加了一些功能,可以用gs_ctl —help看到这些变化
  • psql改名为gsql
  • initdb改名为gs_initdb
  • pg_basebackup改名为gs_basebackup
  • pg_dump改名为gs_dump
  • pg_dumpall改名为gs_dumpall
  • pg_restore改名为gs_restore

注意默认情况下,我们以psql的习惯用gsql登录数据库后,会发现不能用上下光标键翻历史命令,也不能补全。这时只需要在gsql的命令行加上-r参数后,就与psql的使用习惯完全一样了。

下面的工具没有改名:

  • pg_config
  • pg_controldata
  • pg_receivexlog
  • pg_recvlogical
  • pg_resetxlog

增加的工具:

  • gs_probackup: 类型pg_rman的备份集管理工具
  • gs_guc: 配置数据参数的工具

3.数据库配置参数的变化

3.1 superuser_reserved_connections

这个参数用户控制超级用户占用的连接数,防止大量的应用连接上来后,导致DBA也无法连接到数据库去解决问题,专门为DBA保留的连接数。

这个参数在openGauss中被改名为sysadmin_reserved_connections。

3.2 connection_info

此参数是新增的参数,用于显示本连接的信息:

  1. postgres=# show connection_info;
  2. connection_info
  3. -------------------------------------------------------------------------------------------------------------------------------
  4. -
  5. {"driver_name":"libpq","driver_version":"(openGauss 2.0.1 build d97c0e8a) compiled at 2021-06-02 19:37:17 commit 0 last mr "}
  6. (1 row)

3.3 standby_shared_buffers_fraction

很多时候我们需要让备库占用的内存比主库少。但是在一个1主多备的集群中,备库也可能激活成主库,主库也可能转换为备库。openGauss增加了此参数,可以实现数据库在不同的主、备模式下占用不同的内存。

  • 参数说明:备实例所在服务器使用shared_buffers内存缓冲区大小的比例。
  • 该参数属于SIGHUP类型参数。
  • 取值范围:双精度浮点型,0.1~1.0
  • 默认值:0.3

3.4 double write的功能

openGauss实现了类似MySQL的double write的功能来防止操作系统异常宕机、断电等故障导致的数据文件坏块。这个功能是通过参数enable_double_write来控制,默认是on,当启用这个功能后full_page_writes关闭后也可以防止坏块。

  1. postgres=# show enable_double_write;
  2. enable_double_write
  3. ---------------------
  4. on
  5. (1 row)
  6. postgres=# show wal_log_hints;
  7. wal_log_hints
  8. ---------------
  9. on
  10. (1 row)

3.5 增量检查点参数

openGauss为了让数据库运行更平稳,实现了增量检查点的功能,这个功能由参数enable_incremental_checkpoint控制,默认是on:

  1. postgres=# show enable_incremental_checkpoint;
  2. enable_incremental_checkpoint
  3. -------------------------------
  4. on
  5. (1 row)

3.6 防止WAL日志把空间撑爆

由于openGauss的物理备库也会建复制槽,为了防止备库把主库的空间撑爆,openGauss增加了两个参数:

  • enable_xlog_prune: 默认为on,控制是否开启此功能。
  • max_size_for_xlog_prune:WAL日志占用的最大空间。

当enable_xlog_prune为on时,不管复制槽需要WAL是否同步到备库,只要WAL占用的空间超过max_size_for_xlog_prune参数指定的值时,就会强制删除WAL日志。

  1. postgres=# show max_size_for_xlog_prune;
  2. max_size_for_xlog_prune
  3. -------------------------
  4. 2147483647kB
  5. (1 row)

3.7 most_available_sync

参数说明:在有同步备机故障时,主机事务不因同步备机故障而被阻塞。比如有两个同步备机,一个故障,另一个正常,这个时候主机事务只会等好的这个同步备,而不被故障的同步备所阻塞; 再比如走quorum协议时,一主三同步备,配置ANY 2(node1,node2,node3),当node1、node3故障,node2正常时,主机业务同样不被阻塞。

该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

  • on表示在有同步备机故障时,不阻塞主机。
  • off表示在有同步备机故障时,阻塞主机。
  • 默认值:off

3.8 防止数据库异常停止后,重新启动是恢复时间过长的参数

openGauss使用参数max_redo_log_size强制限制恢复点和当前日志位置之前的日志量大小,这样让数据库在异常停机之后,再启动时,数据库的恢复时间不会太常:

  1. postgres=# show max_redo_log_size;
  2. max_redo_log_size
  3. -------------------
  4. 1GB
  5. (1 row)

3.9 并行回放WAL功能

openGauss可以并行回放WAL,并行回放有一下参数:

  • recovery_max_workers: 控制并行回放的最大并行度
  • recovery_redo_workers: 控制并行回放的并行度
  • recovery_parse_workers: 控制解析WAL的并行度, 但这个参数仅在开启极致RTO情况下可以设置大于1。此参数需要配合recovery_redo_workers使用。若同时开启recovery_parse_workers和recovery_max_workers,以开启极致RTO的recovery_parse_workers为准,并行回放特性失效。因极致RTO不支持hot standby模式和主备从模式,仅在参数hot_standby设置成off,replication_type设置成1时可以设置recovery_parse_workers为>1。另外,极致RTO也不支持列存,在已经使用列存表或者即将使用列存表的系统中,请关闭极致RTO.
  • recovery_parallelism:只读,仅用于查询实际的并行度。
  1. postgres=# show recovery_max_workers;
  2. recovery_max_workers
  3. ----------------------
  4. 1
  5. (1 row)
  6. postgres=# show recovery_parse_workers;
  7. recovery_parse_workers
  8. ------------------------
  9. 1
  10. (1 row)

3.10 数据页lsn检查开关

参数名:enable_page_lsn_check
参数说明:数据页lsn检查开关。回放时,检查数据页当前的lsn是否是期望的lsn。

openGauss支持延迟备库:

recovery_min_apply_delay
参数说明:设置延迟备份库时间。

openGauss也应该支持备库归档:

archive_mode可以设置为:always on off

openGauss 增加了参数archive_dest,当设置archive_dest参数时,archive_command不起作用。

3.11 enable_mix_replication

参数说明:控制主备、主从之间WAL日志及数据复制的方式。
该参数属于INTERNAL类型参数,默认值为off,不允许外部修改。
须知: 此参数目前不允许正常业务场景下改变其值,即关闭WAL日志、数据页混合复制模式。

取值范围:布尔型

  • on表示打开WAL日志、数据页混合复制模式。
  • off表示关闭WAL日志、数据页混合复制模式。
  • 默认值:off

3.12 enable_incremental_catchup

参数说明:控制主备之间数据追赶(catchup)的方式。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型

  • on表示备机catchup时用增量catchup方式,即从从备本地数据文件扫描获得主备差异数据文件列表,进行主备之间的catchup。
  • off表示备机catchup时用全量catchup方式,即从主机本地所有数据文件扫描获得主备差异数据文件列表,进行主备之间的catchup。
  • 默认值:on

3.13 bgwriter_thread_num 参数

openGauss可以有多个bgwriter写线程:

  1. postgres=# show bgwriter_thread_num;
  2. bgwriter_thread_num
  3. ---------------------
  4. 2
  5. (1 row)

4. 快速安装体验

可以安装中启高斯数据库(zqgauss)来快速体验openGauss数据库。中启高斯数据库是openGauss的一个发行版本,完全兼容openGauss,是由中启乘数科技发行。

4.1 环境需要

操作系统:CentOS7.6
内存:4GB
磁盘空间:10GB空闲空间。

可以用一台虚拟机来体验

4.2 下载安装包

https://gitee.com/csudata/openGauss-server/releases/v2.0.1
下载:

下载zqgauss2.0.1.1

把下载下来的zqgauss2.0.1.1_centos7.6.tar.xz.1.dat和zqgauss2.0.1.1_centos7.6.tar.xz.2.dat放到/opt目录下, 安装:

  1. cd /opt
  2. cat zqgauss2.0.1.1_centos7.6.tar.xz.*.dat |tar Jxvf -

这时在/opt目录下产生了一个子目录zqgauss2.0.1.1和一个链接zqgauss

  1. [root@tc-zqgauss01 opt]# ls -l
  2. total 151592
  3. lrwxrwxrwx. 1 root root 14 Jul 13 19:13 zqgauss -> zqgauss2.0.1.1
  4. drwxr-xr-x. 8 root root 78 Jul 13 18:48 zqgauss2.0.1.1
  5. -rw-r--r--. 1 root root 83886080 Jul 13 21:15 zqgauss2.0.1.1_centos7.6.tar.xz.1.dat
  6. -rw-r--r--. 1 root root 71340900 Jul 13 20:29 zqgauss2.0.1.1_centos7.6.tar.xz.2.dat

这样就完成了软件的安装。

4.3 配置环境

关闭selinux,修改文件/etc/selinux/config,修改配置项:

  1. SELINUX=disabled

上面的修改需要重启机器后才生效。执行下面的命令,临时关闭selinux:

  1. setenforce 0

关闭防火墙:

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service

建用户:

  1. groupadd -g 750 zqgauss
  2. useradd -g 750 -u 750 -m zqgauss

在用户zqgauss的.bashrc中配置:

  1. export GAUSSHOME=/opt/zqgauss
  2. export PATH=$GAUSSHOME/bin:$PATH
  3. export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
  4. export GS_CLUSTER_NAME=dbCluster
  5. export PGDATA=/home/zqgauss/pgdata
  6. export PGDATABASE=postgres

4.4 建数据库

进到操作系统用户zqgauss下,建数据目录:

  1. su - zqgauss
  2. mkdir pgdata
  3. chmod 700 pgdata

初始化数据库:

  1. /opt/zqgauss/bin/gs_initdb --nodename=zqgauss01

启动数据库:

  1. gs_ctl start

用gsql登录数据库:

  1. [zqgauss@mkopengauss ~]$ gsql -r postgres
  2. gsql ((GaussDB Kernel V500R001C20 build ab25cf94) compiled at 2021-07-08 15:39:11 commit 0 last mr debug)
  3. Non-SSL connection (SSL connection is recommended when requiring high-security)
  4. Type "help" for help.
  5. postgres=# \du
  6. ERROR: Please use "ALTER ROLE user_name PASSWORD 'password';" to set the password of user zqgauss before other operation!

第一次登录数据库时需要修改密码,如果不修改,任何SQL都执行不了。我们修改密码:

  1. postgres=# alter user zqgauss password 'zQ9gussdb';
  2. ALTER ROLE

修改之后就可以执行命令了,我们建一张测试表试试:

  1. postgres=# create table test01(id int primary key, t text);
  2. NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test01_pkey" for table "test01"
  3. CREATE TABLE
  4. postgres=# insert into test01 values(1, '111'),(2,'222');
  5. INSERT 0 2
  6. postgres=# select * from test01;
  7. id | t
  8. ----+-----
  9. 1 | 111
  10. 2 | 222
  11. (2 rows)

与PostgreSQL数据库的使用方法上没有区别。

本站文章,未经作者同意,请勿转载,如需转载,请邮件customer@csudata.com.
0 评论  
添加一条新评论