《如何做好 openGauss 企业级部署.docx》由会员分享,可在线阅读,更多相关《如何做好 openGauss 企业级部署.docx(14页珍藏版)》请在第壹文秘上搜索。
1、OpenGauss数据库作为开源数据库的后起之秀,这两年开源社区蓬勃发展,越来越多的公司和企业加入到OPenGaUSS开源社区.作为纯国产开源的关系型数据库,当前部分银行已经尝试在生产应用OPenGaUSS数据库,同时也有很多合作伙伴在OPenGaUSS内核的基础上推出各自的商业版本.OpenGauss数据库至今为止基本保持三月一次发版的节奏.每次发版都会发现内容非常多,不仅包含大功能的新增和改进,同时也有非常多的问题技修豆.可以说OPenGaUSS开源社区的投入,并不逊色于传统的大型商业数据库公司.国内几家合作伙伴的加入和贡献,也让OPenGaUSS数据库生态越来越好,这也给企业在生产使用O
2、PenGaUSS数据库带来更大的信心.作为新的数据库,如何做好企业及部署,这是值得探讨的地方,这篇文常并不是一个细致的安装教程,网上也不缺乏该类教程而是结合商业数据库应用和部署的经脸,讨论下OPenGaUSS数据库企业级应用需求下需要考虑的方方面面.数据库架构设计OPenGaUSS作为集中式的单机数据摩,这里的架构设计主要是讨论高可用怎么做.同城和异地容灾怎么做。本地高可用传统的数据库本地高可用有两种比较流行的方式:集中式存储方式和数据库复制方式.Db2和OraCIe等商业数据库的部罟大部分都是采用集中式存储的模式.而MySQ1.数据库就基本都是通过数据库复制的模式来实现高可用。集中式存储官方
3、的架构图也是推荐使用这种方式.OPenGaUSS数据库提供了Om工具来帮助部署和萱理OPenGaUSS数据库的主管集群节点.OPenGaUSS数据库的物理豆制支持一主多备和级联备等功能,未来也会加入延时宜制功能.OPenGaUSS的备机是支持只读操作的,可以实现读写分离,减少主库的读负载.建议本地高可用就通过数据库物理同步来实现.建议打开备机可读,设首Wa1.IeVel为hot,standby.为了保障数据一致性.SynChrOnOUS.commit建议修改为remote,write或者remote.receive.如果只有一主一从的情况下,建议设者most.available,sync为on
4、.最后通过第三方的高可用集群软件来监视OPenGaUSS的主从状态,实现故障自动切换等商可用场景.客户端访问方式OpenGauss数据库主从架构下,客户端如何连接到主数据库呢?又怎么做读写分黑?这个时候就需要讨论下客户端连接数据库的几种方式:VIP,DNS和主机列表.因为OPenGaUSS数据库的jdbc驱动里支持设置多个主机,并提供参数设置只连主节点还是只连备节点,这也应对了读写分寓的需求.VIP传统的VlP模式只能支持应用连接到主节点上,从节点的读诘求是不太好设宜的.增加读VIP的菅理对于高可用软件来说就太复杂了。VIP管理还有一个限制是必须属于同一网段.对于同城双中心不能采用相同网段的情
5、况下,VIP漂移就不能实现。DNSDNS也具备高可用性,但是只能检测到机器IP是否存在,不能检测OPenGaUSS的服务,所以采用DNS的高可用相对来说不太适合数据库来使用.主机列表例如下面这个例子就是只连主库的客户端设置:url=jdbc:postgresql:/:26000,:26000/?connectTimeout=SSitargetServerType=master&tcpKeepAlive=true我比较偏向于采用主机列表的方式,通过配置客户端参数,实现自动主库发现,负载均衡,只读从库等各类应用场景需求.这种方式也避免了VIP,DNS在不同架构下的管理豆杂性,相对更通用一些.缺点是
6、增加了一点客户端数据源配2S的复杂性.同城容灾系统用户操作系统用户主要是安装OPenGaUSS的用户和组,以及需要使用gsql客户端访问OPenGaUSS数据库的操作系统用户.例如华为的OPenGaUSS数据库默认采用Omm用户和dbgrp用户组,这在华为的高斯分布式产品里都是这个设计的。我们使用OPenGaUSS的时候也延续了这个习惯.超级用户Omm操作系统用户具有OPenGaUSS数据库程序的访问权限能执行gsql、gs.ctl等工具,而这些工具的权限一般是700,也就是说只有Omm用户能使用。而通常Omm用户访问本地的OPenGaUSS是通过socket,可以使用超级用户,还可以免密,因
7、此这个用户完全是交给系统管理员的,不适合交给用户使用.应用用户那么如果应用用户需要使用gsql等工具怎么办?这种情况下建议设计一个系统用户叩PUSer,并为它安装一个单独的gsql等工具客户端通过IO连接数据库.数据库用户数据库用户也应该分为几种类型:超级省理员、监控管理员.数据库管理员和普通数据库用户.超级管理员一开始initdb的初始用户就是超级管理员用户,具有sysadmin的权限。这个用户通常不会交给应用来使用,甚至不应该当做超级管理员来使用.这个用户只能是作为能够登录到这个操作系统上应急的免密超级用户。所以为了管理OPenGaUSS数据库,我们还需要创建一个单独的管理员用户具备sys
8、admin角色权限.例如设计一个gsadmin用户,在运维工具平台通过这个用户远程管理所有的OPenGaUSS数据库。createusergsadminwithsysadminpassword,xxxxx,还有一种用户是远程备份用户,建议创建单独的用户并sysadmin角色权限。监控管理员OpenGauss数据库从2.0.0版本开始提供了monadmin角色.这个角色权限能终访问所有的系统视图.因此对于监控用户,建议配背这个角色即可.createusermonadminwithmonadminpassword,xxxxxx数据库首理员OPenGaUSS的数据库是相互隔离的.对于每一个独立的数据
9、库,可以设置一个数据库管理员角色的用户,给予全库的管理权限。grantallprivilegesondatabaseto这种用户通常也是作为应用来连接的用户,具备全库的对象管理能力,也具备数据修改查询能力.这是一种很常见的用法,很少有在应用数据源配普连接用户的时候还继续做细致的权限分离。当然数据库权限管理是具备相关能力的。普通数据库用户除了本应用系统使用的数据库管理员用户,可能还存在类似若系统访问的特殊需求情况.例如抽取数据的用户,只读访问的用户等.这些用户建议创建单独的最小授权用户.白名单在OPenGaUSS数据库的目录下,设计了pg.hba.conf配置文件,用来定义用户访问数据库的方式,
10、也可以称作是白名单管理.定义了在什么访问类型下,访问哪个数据库,是哪个用户,从哪里来访问,采用何种验证方式。这些组合可以实现很复杂的白名单过滤规则.这种可以过滤IP的用户访问控制有点像mysql,但是又完全不一样.OpenGauss里的数据库用户名对应的就是一个用户角色,不像mysql,如果用户名里的IP不一样,其实算是不同的用户.不过从金融行业的实践来看,数据库服务器和应用服务器等在隔寓的网络区内,主机间的访问控制通过网络来管理,基本不需要底层数据库来实现豆杂的管控.为了管理方便,不如全部放开数据库级别的ip管控.下面这个例子使用gs_guc工具配置整个集群所有的白名单:gs_gucrelo
11、ad-Nall-Iall-hhostallall0.0.0.0/0sha256M译过来就是任何IP基于host请求过来的所有用户访问所有数据库都果用Sha256加密算法验证用户。文件系统设计OPenGaUSS数据库建议配置至少两个独立的文件系统.一个用来放数据库,一个用来放数据库运行中产生的归档日志,诊断日志等.数据库数据库存放的路径建议放在单独的文件系统上.部分*要的业务系统也建议将在线日志pg,og放在单独的文件系统上,与数据data分开.然而从实际情况来者,data和xlog采用不同的文件系统,除非底层的盘也是独立的,性能是没有什么区别的.因此暂时建议采用一个就可以了.诊断日志数据库运行
12、中产生的诊断日志,审计日志,归档日志,core文件等,都是不影响数据库运行的,但是又持续不断的产生的。因此需要单独规划一个文件系统来存放,同时做好这些日志的清理策略.这个文件系统也可以用来规划存放脚本文件,备份文件,跑批文件等临时文件.例如将归档日志路径、审计日志路径、Core文件路径和诊断日志路径都设置到这个文件系统下面.gs_gucset-carchive_Command=,cp%p/gausslogarchive%fgs_gucset-caudil_direcIory=gaussloglogo11mPg_aUditgs_gucset-c*bboxdump_path-ZgausslogZc
13、orefiIegsgcset-clogdirectory=gaussloglogoaunpglog其他运维设计规划好了数据库安装,下一步是设计相关运维需求方案.性能参数设25安装完成之后最先需要的是根据业务负载需求设置相关参数.这些参数细节比较多,需要好好阅读相关资料再做选择.其中max_PrOCeSS.memory和ShareC1.bUfferS是比较关键的内存参数,建议按照操作系统内存总量(数据库独占资源)的70%和50%来设冒.增JB检查点和双写开关应该打开.这个是OPenGaUSS相对于postgresql比较大的改进机制,解决了全量检查点的性能瓶颈问题。enable.OPfUSion
14、开关也建议打开,对于高并发小事务的竞争会有改善.gs_gucset-c,cstore-buffers=128MB-gs_gucset-cenable_alarm=offgs_gucset-c,enable_delta_store=on-gs_gucset-cenable_double_write=ongs_gucset-c,enableJncrementa1.checkpoint=ongs_gucset-cenable_wdr_snapshot=offgs_gucset-c,enable_xlog_prune=ongs_gucset-clog_min_duration_Statement=Is
15、-gs_gucset-cmaintenance.work.memxlGBgs_gucset-cmax_ConneCtionS=2000gs_gucset-cmax-files.per-process=10000,gs_gucset-cmax_PrePared.transactions=2000gs_gucset-csessionjimeot=0gs_gucset-c,shared-buffers=2GBgs_gucset-ctemp_bUfferS=128MBgs_gucset-cupdate。CkWaijtimeOUt=lmings_gucset-cwa1.bUfferS=64MBgs_gucset-cewdr_snapshot_interval=10min-gs_gucset-cwork,mem=512MBgs_gucset-ceIogJempJiIes=100MBgs_gucSet-c,enable-mergejoin=ONgs_gucset-cenable_nestloop=ONgs_gucset-cadvance_xlog_file_num=10”gs_gucset-cpagewriter,sleep=1000ms-gs_gucset-cXloginse