GaussDB国庆献礼】GaussDB 100 HA架构技术建议书(1)

网友投稿 1113 2022-05-28

1      前言

GaussDB 100是一款对标Oracle的OLTP数据库,支持HA和分布式架构部署。本文是针对HA架构的技术建议书,从使用者的角度介绍数据库的关键技术点和使用注意事项,帮助读者快速了解数据库的能力和优化数据库配置,从而达到最优的应用效果。

2      安装部署和配置

2.1      架构

GaussDB 100支持主备复制(包括级联备)和冷双机两种HA架构。主备复制的方式通过物理复制的方式实现增量同步,是推荐的架构,下面对比下两种架构的对比:

主备复制

冷双机

RTO

同城AZ之间切换时间小于30s,异地小于2分钟

3-5分钟

RPO

同城AZ间为0,异地小于10s

0

存储类型

本地磁盘或共享存储

必须用共享存储

数据副本

每个备机是一个副本

数据只有一个副本,存储需要做RAID

读写分离

支持,备机支持只读

不支持

双机软件

高斯提供

业务提供

浮动IP

需要

需要

主备复制支持一主多备还支持级联备,数据最多有9个副本。级联备是把备机作为同步的主机,可以减轻主机的压力。级联备增加了集群的复杂度,一般不建议使用。

下面是三种架构的示意图:

冷双机

技术建议:

1.主备复制是推荐的架构,支持两地三中心部署,支持failover检测和切换。

2.如果使用冷双机,需要业务提供双机监控和切换软件,存储的高可用由RAID保证。

2.3.6        归档模式

商用系统一般使用归档模式,主备模式必须使用归档模式。

Ø  归档日志的最大空间占用

需要配置归档日志的最大大小,默认是16GB,对应系统参数MAX_ARCH_FILES_SIZE。归档日志建议放在磁盘阵列或者单独磁盘上,支持配置多个路径。

Ø  归档日志的清理

默认情况下,如果数据没有做过备份或者没有同步到备机,即使归档日志空间占用达到上限后台仍然不会自动清理。如果希望强制清理,需要配置对应参数。

ARCH_CLEAN_IGNORE_STANDBY建议配置为TRUE,否则备机故障会导致REDO一直无法清理;如果不会定期做物理备份,ARCH_CLEAN_IGNORE_STANDBY需要配置为TRUE,否则会导致REDO一直无法清理。

参数名

描述

默认值

建议配置

动态生效

MAX_ARCH_FILES_SIZE

数据库产生的归档日志允许占据的最大空间。当归档日志超过最大容量空间时,系统会按时间顺序对这些日志进行清除。

16G

根据业务产生redo的速度和空间配置

ARCH_CLEAN_IGNORE_BACKUP

是否忽略归档日志已经做过物理备份

FALSE

如果不做备份,归档日志不会清理

ARCH_CLEAN_IGNORE_STANDBY

在归档自动清理时,是否忽略备机

FALSE

如果备机宕机并且配置为FALSE会导致归档日志无法清理,建议配置为TRUE

技术建议:

1.推荐使用归档模式,有备机必须使用归档模式。

2.归档日志建议放在磁盘阵列或者单独磁盘上。

3. ARCH_CLEAN_IGNORE_STANDBY建议配置为TRUE,否则备机故障会导致REDO一直无法清理;如果不会定期做物理备份,ARCH_CLEAN_IGNORE_STANDBY需要配置为TRUE,否则会导致REDO一直无法清理。

2.3.7        兼容性配置

下面是涉及不同数据库兼容性的系统级配置:

参数名

描述

默认值

建议配置

动态生效

UPPER_CASE_TABLE_NAMES

是否将对象名称转为大写

TRUE

如果要兼容Mysql和Sybase,配置为FALSE,对象名大小写敏感

EMPTY_STRING_AS_NULL

空串是否等价于NULL

TRUE

如果要兼容Mysql和Sybase,配置为FALSE,null和空串不等价

ZERO_DIVISOR_ACCEPTED

是否允许除数为0开关,开启后如果除数为0则计算结果为NULL,关闭时如果除数为0则直接抛出异常

FALSE

如果要兼容Mysql,配置为FALSE

USE_NATIVE_DATATYPE

解决不同数据库之间的兼容性,丰富数据库的数据类型,GaussDB 100提供参数USE_NATIVE_DATATYPE用于区分数值类型的关键词, 对一些混淆的数值类型关键词进行映射。

TRUE

建议配置为True

USE_NATIVE_DATATYPE配置为FALSE,类型的映射关系如下:

USE_NATIVE_DATATYPE配置为FALSE会有一些使用限制,不建议修改为FALSE。

技术建议:

1.如果从Oracle迁移,UPPER_CASE_TABLE_NAMES、EMPTY_STRING_AS_NULL建议配置为TRUE,ZERO_DIVISOR_ACCEPTED配置为FALSE,其他数据库根据源数据库的特性修改。

2. USE_NATIVE_DATATYPE建议配置为TRUE,使用原生类型性能好、问题少。不过需要注意,高斯int的最大值是2^32-1,而Oracle的int是number(38),比高斯的范围大。

2.3.8        数据库字符集

技术建议:

服务端支持UTF8和GBK,推荐使用UTF8。

2.4      系统资源配置

2.4.1        内存配置

(1)内存池

内存池的内存都是预分配的,即使没用到也需要占用,备机同样需要,所以主备合设时配置内存参数时一定要考虑备机对内存的占用。

参数名

描述

默认值

建议配置

动态生效

DATA_BUFFER_SIZE

数据BUFFER区用于缓存最近访问的数据

128M

可用物理内存的40%左右

SHARED_POOL_SIZE

共享池大小,包括对象和SQL解析的缓冲

128M

可用物理内存的5%左右

TEMP_BUFFER_SIZE

类似Oracle的PGA

32M

可用物理内存的10%左右

CR_POOL_SIZE

一致性读页面缓存区(即CR pool )的大小,PCR时有效

32M

DATA_BUFFER_SIZE的10%,不超过2G

(2)会话和连接

1)每个session大概占用2M的内存,所以session数量对内存占用影响较大。

2)_AGENT_STACK_SIZE跟工作线程数相关,当单个SQL有较多的变量和表达式时需要配置较大的值,否则SQL执行会报错。

3)MAX_ALLOWED_PACKET跟工作线程数相关,默认值为64M,建议调整为16M,该参数预计会在930版本废弃。

参数名

描述

默认值

建议配置

动态生效

_AGENT_STACK_SIZE

设置线程数据栈的大小,与工作线程数相关

1M

当单个SQL有较多的变量和表达式时需要配置较大的值,否则SQL执行会报错

_THREAD_STACK_SIZE

设置线程栈大小,和C语言调用深度有关,与工作线程数相关

512K

一般不用修改

_INIT_CURSORS

一个session上的初始游标个数

32

如果内存紧张,可以配置为1,可以动态申请游标

MAX_ALLOWED_PACKET

通信允许的最大报文大小

64M

建议配置为16M

技术建议:

1.内存池要根据可用内存配置,主备合设时备机也要占用同样的内存。

2.会话数和工作线程数对内存影响较大,需要合理设置。

3. MAX_ALLOWED_PACKET默认64M,不合理,建议修改为16M,预计930版本废弃。

2.4.2        连接配置

高斯是多线程模式,数据库的线程池的线程数由参数OPTIMIZED_WORKER_THREADS配置,默认值100。当session数量小于工作线程数时,线程是独占模式;反之则进入共享模式,后台线程在多个session之前切换。

共享模式切换的前提不是按照时间片切换的,而是要执行完当前的消息请求,包括一次SQL/存储过程执行或者一次FETCH。

线程数和Session数的配置大小对系统资源尤其是内存影响较大,需要合理配置。

参数名

描述

默认值

建议配置

动态生效

OPTIMIZED_WORKER_THREADS

工作线程数,并发数超过该值变为共享模式

100

如果内存紧张,可以适当调小

SESSIONS

最大会话数,上限是8000

200

根据业务需要设置,过多的会话会占用较多内存

技术建议:

1. SESSIONS最大支持8000,需要根据系统资源和业务应用配置。

2. OPTIMIZED_WORKER_THREADS根据系统资源和负载情况配置,如果系统资源充足并且对性能要求较高,建议OPTIMIZED_WORKER_THREADS和SESSIONS配置一样。

2.4.3        IO配置

Ø  异步IO & directIO

高斯当前只支持文件系统,文件系统会有缓存,默认不是direct IO。direct IO是绕过文件系统缓存直接读磁盘。

默认是同步IO,如果配置为异步IO可以提升预读(多块读)和后台写的效率,通过合并IO减少物理IO的次数。异步IO默认使用direct IO。

正常情况下,异步IO效果比同步IO好。

不过,当读多(尤其是索引读)写少,并且IO能力很差时,使用文件系统缓存比direct IO效果好。

如果使用异步IO,FILESYSTEMIO_OPTIONS配置为ASYNCH。如果配置为NONE则为同步IO。对于同步IO并且IO能力特别差的场景,FILESYSTEMIO_OPTIONS参数还提供了两个优化选项:DSYNC和FDATASYNC,具体用法参考版本资料。

Ø  DBWR_PROCESSES

高斯后台通过DBWR_PROCESSE将脏页刷盘,如果配置异步IO,DBWR_PROCESSES建议配置为1,这样可以最大的发挥异步IO的效果;如果是同步IO,DBWR_PROCESSES需要配置为4-8,配置太小可能导致脏页无法及时刷盘。脏页刷新情况可以通过视图DV_BUFFER_POOL_STATS(CNUM_WRITE列)了解。

(3)CHECKPOINT_PERIOD和CHECKPOINT_PAGES

这两个参数是对CHECKPOINT的配置,描述见下表,一般不用修改。

参数名

描述

默认值

建议配置

动态生效

FILESYSTEMIO_OPTIONS

在支持的平台上,对文件系统开启或关闭Direct I/O或异步I/O功能

NONE

ASYNCH:启用异步I/O。该参数对IO影响较大。

CHECKPOINT_PERIOD

设定两次checkpoint之间的间隔时间,当达到预设值时,则触发一次增量checkpoint,单位:秒

300

如果希望即时让脏页落盘,可以改小

CHECKPOINT_PAGES

两次checkpoint之间的脏页数,当该数目达到此设定值将触发checkpoint

100000

如果希望即时让脏页落盘,可以改小

DBWR_PROCESSES

后台写脏页面线程的个数

1

如果未开启异步IO,建议设置为8,否则设置为1

技术建议:

1. 一般建议使用异步IO,可以减少物理IO次数,需要操作系统支持。

2. 当读多(尤其是索引读)写少,并且IO能力很差时,使用文件系统缓存比同步IO(direct IO)效果更好。

3. 异步IO的 DBWR_PROCESSES配置为1;同步IO的DBWR_PROCESSES要配置大些。

2.5      系统空间配置

高斯的表空间默认是bigfile,单个文件支持到8T。

2.5.1        SYSTEM表空间

在930版本前,System表空间保存数据字典、统计信息、锁、WSR快照等信息,至少需要规划15G的表空间;930版本把统计信息和WSR快照转移到了单独的表空间SYSAUX中,至少需要规划5G。

2.5.2        SYSAUX表空间

WSR快照默认保留2天,SYSAUX表空间至少需要预留10G,如果增加WSR快照的保留时间,需要相应增大SYSAUX表空间。

2.5.3        Undo和Undo2表空间

UNDO表空间要根据UNDO_RETENTION_TIME配置,建议不要配置过大, UNDO的大小一般要小于DATA_BUFFER_SIZE/2。UNDO一般不使用自动扩展,如果使用的话必须设置合理的上限。

如果DB_ISOLEVEL=CC,UNDO_RETENTION_TIME和UNDO表空间都可以配置为较小的值。

UNDO对应非NOLOGGING表,类似ORACLE的UNDO表空间,UNDO2对应NOLOGGING表;如果没有大量使用NOLOGGING表,UNDO2表空间可以配置为较小的值。

UNDO_RETENTION_TIME类似ORACLE的UNDO_RETENTION,如果需要对长SQL执行一致读或者闪回,需要配置为一个较大的值。。

参数名

描述

默认值

建议配置

动态生效

UNDO_RETENTION_TIME

回滚段commit后保留时间,单位:秒

100

如果DB_ISOLEVEL=CC模式,建议调整为32以下,减少undo占用data buffer

2.5.4        Temp和Temp2表空间

一般不使用自动扩展,如果使用的话必须设置合理的上限。

Temp类似Oracle的Temp表空间;Temp2对应nologging表,如果没有大量使用nologging表,Temp2表空间可以配置为较小的值。

技术建议:

1.系统相关表空间要设置一个合理的值。

2. UNDO和TEMP不能无限扩展。

3. UNDO_RETENTION_TIME需要根据业务情况配置,UNDO的大小一般要小于DATA_BUFFER_SIZE/2。

2.5.5        REDO

REDO的配置对DML语句的性能有较大影响。如果业务有大批量的DML操作,建议REDO配置大小,避免出现Redo切换的等待事件log file switch (checkpoint incomplete)。

技术建议:

REDO的总大小:根据业务负载,中等负载建议配置为10-20G。

单个REDO文件的大小:单个REDO文件建议为0.5-2G;每个REDO文件最好配置一样的大小。

2.6      安全配置

2.6.1        访问控制

Ø  IP白名单和IP**

GaussDB 100 支持配置IP白名单和IP**,对远程客户端进行访问控制。

IP白名单:配置TCP_INVITED_NODES参数,限制只能从指定IP访问数据库。

IP**:配置TCP_EXCLUDED_NODES参数,限制不能从指定IP访问数据库。

IP检测开关:配置TCP_VALID_NODE_CHECKING参数,开启或关闭IP检测功能。

Ø  用户白名单

GaussDB 100 也支持配置用户白名单,建立用户和IP映射关系,对远程客户端进行访问控制。用户白名单:可通过添加zhba.conf有效条目,以限制指定用户只能从限定的IP访问数据库。

2.6.2        SSL连接

GaussDB 100 支持通过SSL加密客户端和服务器之间、主机和备机之间的通讯,为敏感数据在Internet上的传输提供了一种安全保障手段。需要从CA认证中心申请到正式的服务器、客户端的证书和密钥。

SSL开销主要在建立连接上,需要使用连接池避免频繁建立连接。

2.6.3        用户管理

数据库用户(USER) 主要用途是连接数据库、访问数据库对象和执行SQL语句。

角色(ROLE)是一组权限(系统权限和对象权限)的集合,不具有登录数据库并执行SQL语句的能力。

可以使用角色(ROLE)进行权限组织及划分,角色赋予用户,则用户具有了此角色的所有权限。

系统默认用户

描述

SYS

数据库初始超级管理员用户,具有数据库的最高权限,并且具有所有的系统权限和对象权限,建议数据库安装后及时修改SYS初始密码。

PUBLIC

系统预置的公共用户(无法登录数据库),它表示所有数据库用户的集合。如果某个权限赋于了PUBLIC,那么所有数据库的用户都可以有这个权限。为了保障数据库的数据安全,请勿向PUBLIC用户授予对象权限。

系统默认角色

描述

DBA

系统管理员角色,拥有系统所有权限。建议用户限制赋予其他用户DBA角色。

RESOURCE

创建基础对象的角色,拥有CREATE PROCEDURE、CREATE SEQUENCE、CREATE TABLE和CREATE TRIGGER共4种权限。

CONNECT

连接角色,拥有CREATE      SESSION权限。

STATISTICS

具有创建、删除、查看WSR快照、生成WSR报告的权限。

2.6.4        账户安全策略

create profile为用户创建安全策略。

alter profile为用户修改安全策略。

drop profile为用户删除安全策略。

支持的安全策略如下:

参数名

描述

取值

FAILED_LOGIN_ATTEMPTS

帐户被锁定之前所允许尝试登录的最大次数。

默认值:10次

PASSWORD_LIFE_TIME

指用户密码所允许使用的天数

默认值:180天

可以设置分数,例如1分钟 =(1/1440)天,(1秒钟=1/86400)天。

PASSWORD_LOCK_TIME

指定登录尝试失败次数到达后帐户的锁定时间

默认值:1天,可设置分数

PASSWORD_GRACE_TIME

指定宽限天数,数据库发出警告到登录失效前的天数。

默认值:7天,可设置分数

PASSWORD_REUSE_TIME

指定密码在多少天内不能重复使用。

默认值:       UNLIMITED没有限制

【GaussDB国庆献礼】GaussDB 100 HA架构技术建议书(1)

,可设置分数

PASSWORD_REUSE_MAX

指密码经过多少次变更之后才可以重用

默认值:       UNLIMITED没有限制

SESSIONS_PER_USER

用户会话最大连接数

默认值:       UNLIMITED没有限制

2.6.5        权限管理

Ø  系统中的权限

系统权限:是指用户进行创建、删除、更改、查询对象和其他如登录、授权等操作的能力。

对象权限:是指对数据库对象执行各种操作的权限,对象权限包括SELECT、INSERT、UPDATE、DELETE等。

Ø  通过角色继承权限:

当给一组权限相同的用户授权时,不需对这些用户逐一授权;

通过将角色赋给一个用户可使得该用户拥有这个角色中的所有权限;

一个用户可以属于不同的角色,拥有不同角色的权限;

2.6.6        安全审计

GaussDB 100支持将用户对数据库的所有操作写入审计日志。

数据库管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。

各审计项的参数支持动态加载,在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。

配置项

描述

AUDIT_LEVEL

审计开关,设置审计日志的级别,默认值为3,表示DDL及DCL审计打开。

_AUDIT_MAX_FILE_SIZE

单个日志文件大小,默认单位为字节,默认值为10M。

_AUDIT_BACKUP_FILE_COUNT

备份日志文件的最大个数,默认值为10,最大值不能超过128。

_LOG_FILE_PERMISSIONS

日志文件权限,默认值为600。备份日志文件权限会自动去除写权限(拥有者、群组、其他)。

_LOG_PATH_PERMISSIONS

日志目录权限,默认值为700。可影响run日志、debug日志和audit日志本层及上层目录,alarm日志本层目录的权限。

通过设置AUDIT_LEVEL参数,开启审计功能,默认值为3,表示审计DDL和DCL级别。

日志类型

审计范围

十进制取值

二进制取值

DDL

数据库对象的创建、修改、删除,包括:表、索引、视图、同名词、数据库、序列、用户、角色、表空间、profile、会话等

1

00000001

DCL

设置或更改数据库事务、用户权限、锁表等

2

00000010

DML

对数据库表中的数据进行操作,如插入、更新、删除,也包括查询审计

4

00000100

PL

对存储过程的解析与执行进行审计,如EXECUTE(可简写为EXEC)与CALL等操作的调用。

8

00001000

ALL

审计所有项

255

11111111

技术建议:

1.根据业务需要选择安全配置。

2. SSL要用连接池,对传输性能会有10%左右的性能损失。

2.7      内核其他配置

2.7.1        回收站和闪回

如果开启了回收站,truncate和drop表会把数据保留到回收站中,支持数据flashback。如果希望彻底删除可以在truncate和drop命令上使用purge或者直接用purge命令清空回收站。

Ø  基于时间点的闪回

基于时间点的闪回依赖回滚段保留时间和回滚段的大小,如果回滚段的数据已经被覆盖了,那么闪回会报错。

技术建议:

1.要特别注意,回收站对truncate也生效。

2.如果开启回收站,注意定期清理回收站。表空间满了会覆盖回收站中最老的内容。

3.基于时间点的闪回依赖回滚表空间保留时间和回滚表空间的大小。

2.7.2        WSR任务

WSR定时主任务默认每30分钟收集一次快照,收集系统、SQL、Segement、LongSQL等数据;准实时任务默认每30秒收集一次快照,收集session、事务、锁等数据。

默认保留两天的快照,每天凌晨删除过期快照,实际最多保留三天的数据,平均每个快照大约50M。

WSR提供了系统级、SQL级、会话级和Segment级的性能统计数据,还提供了每30秒的关键资源的快照信息,可以分析出绝大部分性能问题。

技术建议:

1.根据需要修改WSR的配置,需要预留足够的空间保留快照数据。

2.WSR报告是性能问题分析的重要工具,建议开启该功能。

GaussDB

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:两个通宵熬出来的互联网大厂最新面试题收集整理1000道(四-Redis),欢迎点赞收藏!!!
下一篇:MapReduce数据倾斜与优化
相关文章