• [集群异常] 操作系统core文件配置指南
    数据库在使用的过程中,经常会出现cn或dn实例重启的情况,有些是用户自己kill,有些就是代码bug导致的实例重启,代码bug导致的core问题需要core文件才能进一步定位根因,GaussDB 的bbox生成的core文件在一些情况下无法解析,所以该文档介绍下如何配置OS的core配置1.在集群内OMS主节点(之所以在主oms节点,是为了第2步使用集群的分发和执行指令,如果节点数较少,或者第2步没有集群执行脚本,可以单独在集群内所有数据节点上单独创建core.sh脚本)的/tmp目录下新建core.sh文件内容如下:sed -i '/^.*hard.*core.*$/d' /etc/security/limits.confsed -i '/^.*soft.*core.*$/d' /etc/security/limits.confecho "* soft core unlimited" >> /etc/security/limits.confecho "* hard core unlimited" >> /etc/security/limits.confecho "core" > /proc/sys/kernel/core_patternsed -i '/^kernel.core_pattern.*$/d' /etc/sysctl.confecho "kernel.core_pattern=core" >> /etc/sysctl.confecho "0" > /proc/sys/kernel/core_uses_pid/sbin/sysctl -p2.在新集群OMS主节点用root执行如下命令(该方法使用集群脚本,一次在所有的节点上设置,也可以手动在每个节点运行core.sh脚本)dos2unix /tmp/core.shcd /opt/FusionInsight_SetupTool/preinstall/tools/cluster./clusterscp.sh put /tmp/core.sh /tmp/./clustercmd.sh "sh /tmp/core.sh"3.查看是否配置成功1) ps -ef|grep master,找到主DN(备DN,需要把master改为slave)的进程号2) cd /proc/进程号。3) view limits(查看 core file size是否是unlimited)4) cat /proc/sys/kernel/core_pattern(查看该配置文件是否配置的是core)5)cat /etc/security/limits.conf | grep core是否存在soft core unlimited与hard core unlimited6)cat /proc/sys/kernel/core_uses_pid是否为07)cat /etc/sysctl.conf | grep core_pattern是否为kernel.core_pattern=core4.kill om_monitor并重启集群,切换到omm用户下,source环境变量,执行如下操作gs_ssh -c "killall -u omm om_monitor"等待3分钟,等待om_monitor全部启动,后执行如下指令重启集群生效cm_ctl stopcm_ctl start5.验证是否成功kill -11 备DN进程号,会在数据库的数据目录(/srv/BigData/mppdb/data1/master1)下生成core文件
  • [实践系列] GaussDB(DWS)实践系列- 数据仓库自动化清理功能实现
    GaussDB(DWS)实践系列-数据仓库自动化清理功能实现 摘要:定期清理数据库中垃圾数据、更新统计信息可以提升系统整体运行效率。本文旨在对3种常用的清理和收集命令进行讲解,并汇总整理自动化清理脚本。(1)vacuum介绍:VACUUM回收表或B-Tree索引中已经删除的行所占据的存储空间。在一般的数据库操作里,那些已经DELETE的行并没有从它们所属的表中物理删除,在完成VACUUM之前它们仍然存在。因此有必要周期地运行VACUUM,特别是在经常更新的表上。 VACUUM FULL通常要比单纯的VACUUM收缩更多的表尺寸,但是需要耗时更多。如果导入过程中,进行了大量的更新或删除行时,会产生大量的磁盘页面碎片,从而逐渐降低查询的效率。应运行VACUUM FULL命令将磁盘页面碎片恢复并交还操作系统,然后运行ANALYZE命令更新统计信息。 (2)analyze介绍:在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。analyze命令可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。查询优化器会使用这些统计数据,以生成最有效的执行计划。建议在执行了大批量插入/删除操作后,例行对表或全库执行ANALYZE语句更新统计信息。 (3)reindex介绍:REINDEX功能描述为表中的数据重建索引。VACUUM FULL通常要比单纯的VACUUM收缩更多的表尺寸,但是FULL选项并不清理索引,所以推荐周期性的运行REINDEX命令。在以下几种情况下需要使用REINDEX重建索引:1、索引崩溃,并且不再包含有效的数据。2、索引变得“臃肿”,包含大量的空页或接近空页。3、为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效。  自动化清理脚本如下:#!/bin/bash PGPORT=25308parallel=20 source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile function do_vaccumm_full_systable{     TABLELIST=" '\"'|| nspname || '\".\"' || relname   || '\";' FROM pg_class c    INNER JOIN   pg_namespace n ON c.relnamespace = n.oid    WHERE   c.oid < 16384 AND relkind = 'r'    AND   reloptions::text NOT LIKE '%internal_mask%'";     echo   "********Start Vacuum Full Systable For Database "$1`date   "+%Y-%m-%d %H:%M:%S"`    gsql -p   $PGPORT -d $1 -tc "SELECT 'VACUUM FULL ' || $TABLELIST" | gsql -p   $PGPORT -d $1    gsql -p   $PGPORT -d $1 -tc "SELECT 'REINDEX    table ' || $TABLELIST" | gsql -p $PGPORT -d $1    gsql -p   $PGPORT -d $1 -tc "SELECT 'ANALYZE ' || $TABLELIST" | gsql -p   $PGPORT -d $1} function do_vaccumm_full_udt{     TABLELIST=" '\"'|| nspname || '\".\"' || relname   || '\";' FROM pg_class c    INNER JOIN   pg_namespace n ON c.relnamespace = n.oid    WHERE   c.oid >=16384 AND relkind = 'r'    AND   reloptions::text NOT LIKE '%internal_mask%'";     echo   "********Start Vacuum Full User-Define Table For Database "$1`date   "+%Y-%m-%d %H:%M:%S"`    echo   "\parallel on "$parallel > /dev/shm/vacuum_full_list    gsql -p   $PGPORT -d $1 -tc "SELECT 'VACUUM FULL ' || $TABLELIST"  >> /dev/shm/vacuum_full_list    echo   "\parallel off" >> /dev/shm/vacuum_full_list    gsql -p   $PGPORT -d $1 -f /dev/shm/vacuum_full_list     echo   "********Start Reinex User-Define Table For Database "$1`date   "+%Y-%m-%d %H:%M:%S"`    echo   "\parallel on "$parallel > /dev/shm/reindex_list    gsql -p   $PGPORT -d $1 -tc "SELECT 'REINDEX TABLE ' || $TABLELIST"  >> /dev/shm/reindex_list    echo   "\parallel off" >> /dev/shm/reindex_list    gsql -p   $PGPORT -d $1 -f /dev/shm/reindex_list     echo   "********Start Analyze User-Define Table For Database "$1`date   "+%Y-%m-%d %H:%M:%S"`    echo   "\parallel on "$parallel > /dev/shm/analyze_list    gsql -p   $PGPORT -d $1 -tc "SELECT 'ANALYZE ' || $TABLELIST"  >> /dev/shm/analyze_list    echo   "\parallel off" >> /dev/shm/analyze_list    gsql -p   $PGPORT -d $1 -f /dev/shm/analyze_list} function do_vaccumm_full{      do_vaccumm_full_systable $1      do_vaccumm_full_udt $1} function main{      do_vaccumm_full  gn_province_cz      do_vaccumm_full  gn_shb_cz} main @  博客链接:https://bbs.huaweicloud.com/blogs/175440 华为云社区论坛链接:https://bbs.huaweicloud.com/forum/forum-598-1.html 
  • [技术干货] GaussDB(DWS)高危操作
    表1中描述了在GaussDB A操作与维护阶段,进行日常操作时应注意的禁用操作。表1 禁用操作类别操作风险严禁JDBCServer主备节点频繁倒换频繁主备倒换将导致业务中断严禁修改节点主机名主机名修改后会导致该主机上相关实例和上层组件无法正常提供服务,且无法修复严禁修改数据目录下文件名,权限,内容不能修改,不能删除内容导致DN实例出现严重错误,并且无法修复严禁删除数据库系统表或系统表数据删除系统表将导致无法正常进行业务操作表2中描述了在GaussDB A操作与维护阶段,进行日常操作时应注意的高危操作。表2 高危操作操作分类操作名称操作风险风险等级规避措施重大操作观察项目Manager修改OMS密码该操作会重启OMS各进程,影响集群的管理维护★★★修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常导入证书该操作会重启OMS进程和整个集群,影响集群的管理维护和业务★★★修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常升级该操作会重启Manager和整个集群,影响集群的管理维护和业务分配集群管理权限的用户,需要严格管控,以防范可能的安全风险★★★修改时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常补丁该操作会重启Manager和整个集群,影响集群的管理维护和业务分配集群管理权限的用户,需要严格管控,以防范可能的安全风险★★★修改时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常恢复OMS该操作会重启Manager和整个集群,影响集群的管理维护和业务★★★修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常修改IP该操作会重启Manager和整个集群,影响集群的管理维护和业务★★★修改时确保同一时间无其它管理维护操作,且修改的IP填写正确无误观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常修改日志级别如果修改为DEBUG,会导致Manager运行速度明显降低★★修改前确认操作的必要性,并及时修改回默认设定无更换控制节点该操作会导致部署在该节点上的服务中断,且当该节点同时为管理节点时,更换节点会导致重启OMS各进程,影响集群的管理维护★★★更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 更换管理节点该操作会导致部署在该节点上的服务中断,会导致重启OMS各进程,影响集群的管理维护★★★★更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常重启下层服务时,如果勾选同时重启上层服务该操作会导致上层服务业务中断,影响集群的管理维护和业务★★★★操作前确认操作的必要性,操作时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常修改OLDAP端口修改该参数时,会重启LdapServer和Kerberos服务和其关联的所有服务,会影响业务运行  ★★★★★操作前确认操作的必要性,操作时确保同一时间无其它管理维护操作无重装主机该操作会对指定主机上的软件进行重新安装,并可能因清理数据目录造成数据丢失★★★操作前请确认重新安装的必要性,并谨慎选择清理数据选项观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常重装实例该操作会对指定主机上的实例进行重新安装,并可能因清理数据目录造成数据丢失★★★操作前请确认重新安装的必要性,并谨慎选择清理数据选项观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常重启服务重启过程中会中断服务,如果勾选同时重启上层服务会导致依赖该服务的上层服务中断★★★操作前确认重启的必要性观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常系统下电、上电非标准化下电、上电操作,会导致系统再次上电后,集群启动异常,如Ldap数据不同步、controller启动失败等★★★请参考系统上下电进行标准的系统下电、上电操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常KrbServer 修改KrbServer的参数“KADMIN_PORT”修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行★★★★★修改该参数后,请重启KrbServer服务和其关联的所有服务无修改KrbServer的参数“kdc_ports”修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行★★★★★修改该参数后,请重启KrbServer服务和其关联的所有服务无修改KrbServer的参数“KPASSWD_PORT”修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行★★★★★修改该参数后,请重启KrbServer服务和其关联的所有服务无修改KrbServer的参数“default_realm”修改该参数后,若没有及时重启KrbServer服务和其关联的所有服务,会导致集群内部KrbClient的配置参数异常,影响业务运行★★★★★修改该参数后,请重启KrbServer服务和其关联的所有服务无配置跨集群互信该操作会重启KrbServer服务和其关联的所有服务,影响集群的管理维护和业务★★★★★更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常LdapServer修改LdapServer的参数“LDAP_SERVER_PORT”修改该参数后,若没有及时重启LdapServer服务和其关联的所有服务,会导致集群内部LdapClient的配置参数异常,影响业务运行★★★★★修改该参数后,请重启LdapServer服务和其关联的所有服务无修改LdapServer的参数“LDAP_EXTERNAL_IP”修改该参数后,若没有及时重启LdapServer服务和其关联的所有服务,会导致集群内部LdapClient的配置参数异常,影响业务运行★★★★★修改该参数后,请重启LdapServer服务和其关联的所有服务无恢复LdapServer数据该操作会重启Manager和整个集群,影响集群的管理维护和业务★★★★★修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 更换LdapServer所在节点该操作会导致部署在该节点上的服务中断,且当该节点为管理节点时,更换节点会导致重启OMS各进程,影响集群的管理维护★★★更换前确认操作的必要性,更换时确保同一时间无其它管理维护操作观察是否有未恢复的告警产生,观察集群的管理维护是否正常,业务是否正常 修改LdapServer密码修改密码需要重启LdapServer和Kerberos服务,影响集群的管理维护和业务 ★★★★修改前确认操作的必要性,修改时确保同一时间无其它管理维护操作 无节点重启导致LdapServer数据损坏如果未停止LdapServer服务,直接重启LdapServer所在节点,可能导致LdapServer数据损坏★★★★★使用LdapServer备份数据进行恢复无数据库不能直接在配置文件中手动修改端口号。导致数据库启动不了或者连接不上。▲▲▲▲▲尽量使用工具修改,不要手动操作。无。不能随意修改“pg_hba.conf”配置文件中的内容。导致客户端连接不上。▲▲▲▲▲严格根据产品手册操作。无。不能手动修改“pg_xlog”的内容。导致数据库无法启动,数据不一致。▲▲▲▲▲尽量使用工具修改,不要手动操作。无。
  • [技术干货] GaussDB 集群启停问题定位指南
    集群启停问题定位指南1      集群启停基本原理1.1      起停依赖关系描述及图示FIM:集群管理界面,用户可以从FIM界面上下发启动和停止集群操作; cron:系统服务,每一分钟定时查看om_monitor服务是否拉起,如果没有拉起,则拉起;om_monitor:常驻系统,用于拉起cm_agent;cm_agent:起停 cn、dn、gtm、cm_server,以及在停止时,当cn、dn、gtm、cm_server停止后,cm_agent自退出。      1.2      日志路径组件名日志路径FIM/var/log/Bigdata/mpp/scriptlog/prestart.log/var/log/Bigdata/mpp/scriptlog/start.log以上日志每个数据节点上均存在gs_om/var/log/Bigdata/mpp/omm/om/gs_om-   YYYY-MM-DD_hhmmss.log以上日志每个数据节点上均存在om_monitor/var/log/Bigdata/mpp/omm/cm/cm_agent/om_monitor-YYYY-MM-DD_hhmmss.log以上日志每个数据节点上均存在cm_agent/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss.log/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss.log以上日志每个数据节点上均存在cm_server/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_server-YYYY-MM-DD_hhmmss.log以上日志仅在主备cm_server节点上均存在1.3      集群实例角色状态信息表实例角色状态DN   build 状态和GTM 同步状态CMSPrimary(主)Standby(备)Pending(待仲裁状态,等待仲裁为主或者备)DownCNNormal(正常)Deleteing(正在删除)Deleted(已经删除)DownDNPrimary(主)Standby(备)Dummy_standby(从备)Pending(待仲裁状态,等待仲裁为主或者备)DownNormal(正常)Starting(正在启动)Need   repair(待处理状态)Waiting   Promoting(等待升主)Promoting(备机升主中)Demoting(主机降备中)Building(备机正在build)Build   failed(备机build失败)Manual   stop(手动停止)Disk   damaged(磁盘故障)Port   used(端口占用)Unknown(状态未知)Connecting(DN主备连接)Disconnect(DN主备未连接)Walsegmen   removed(DN日志分叉) GTMPrimary(主)Standby(备)Pending(待仲裁状态,等待仲裁为主或者备)DownConnection   OK(主备连接OK)Connection   bad(主备连接有问题)Starting(正在启动)Manual   stop(手动停止)Disk   damaged(磁盘故障)Port   used(端口占用)Unknown(状态未知)Sync(同步模式)Async(非同步模式)Most   available(最大可用模式)2      启动集群常见问题分类3      集群启停问题定位方法及解决措施使用命令cm_ctl query -Cv查看集群状态,根据状态进入不同分支场景进行排查处理。3.1      整节点未启动Step1. 使用命令cm_ctl query -Cv查看集群状态信息确认整节点未启动的主机名;Step2. omm用户登录对应节点,查看om_monitor进程是否存在,如果om_monitor进程不存在,则可能原因是omm用户定时任务异常、omm用户密码超期、cgroup挂载异常,可通过分析om_monitor日志、omm用户定时任务、omm用户密码超期时间等方式进行进一步分析;Step3. 如果节点上om_monitor进程存在,cm_agent进程不存在,则可能原因是FIM界面启动命令未成功下发到后台、python版本过高或其它原因导致om_monitor未能启动cm_agent,可通过检查启停标志文件、节点上python版本、om_monitor日志等方式进一步分析。部分实例未启动,查看具体的实例问题,逐步分析。一般启动问题为DN、CN、GTM等实例启动失败,或者无法选主。这种情况,需要结合日志分析。通常有磁盘故障、端口占用、环境变量冲突等情况。3.2      节点内部分实例未启动Step1. 使用命令cm_ctl query -Cv查看集群状态信息确认未启动的实例及所在节点主机名;Step2. omm用户登录对应节点,查看cn/dn/gtm/cm_server实例进程是否存在,如果进程不存在,则可能原因是端口被占、lvs虚拟ip丢失、cn/dn的postgresql.conf配置文件的listen_address参数存在无效ip、进程listen端口号对应锁文件残留、cn/dn配置文件中存在无效GUC参数、系统信号量参数配置过小、存在多个cm_agent进程、路径无权限、磁盘满、数据目录权限异常等,需要结合日志具体分析;Step3.如果cn/dn/gtm/cm_server进程存在,但状态为down或者unknown,则可能原因是当前节点与主cm_server节点网络不通、cm_server无主、节点上存在子网卡等;Step4.如果cn/dn/gtm/cm_server进程存在,但状态为pengding,则说明可能是在做redo,可通过查看堆栈来确认。3.3      节点实例未停止Step1. 首先使用如下命令找到未正常停止的实例:gs_ssh -c 'ps -ef|grep /opt/huawei/Bigdata/mppdb/core/bin/ | grep -v grep'Step2.1 实例未被停止分为两种情况,一种是实例收到停止信号,但是无法停止,这种现象主要体现在CN、DN正在执行业务,无法停止。当CN、DN无法停止的时候,需要搜集CN、DN堆栈,用于定位问题;Step2.2 第二种是执行停止的命令异常,此时请查看cma日志,手动拆解停止的shell命令,查看那些命令异常,一般为pstree命令异常。当pstree命令等shell命令异常时,分为两种情况:1)系统不存在该命令,请安装该命令,或者查看环境变量是否正确;2)系统pstree结果不符合预期,请更新该命令版本。4      集群启停问题常见案例4.1      整节点未启动,om_monitor进程不存在问题现象:启动集群时整节点未启动,对应节点上om_monitor进程不存在定位过程:omm用户登录到到未启动的节点,使用以下命令确认om_monitor进程不存在:ps –eaf | grep om_monitor4.1.1        Om_monitor定时任务未挂载场景描述:使用如下命令查看启动om_monitor的定时任务是否挂载到cron服务上,如果未挂载上,则是安装失败或定时任务被删除。通过 crontab服务可以看到如下命令,代表om_monitor服务挂载成功。crontal -l解决方法:参照正常节点将om_monitor定时任务服务添加到omm用户的定时任务中。4.1.2        Omm用户密码超期场景描述:使用如下命令检查是否设置了omm用户密码超期时间且密码已过期,如果密码超期会导致omm用户定时任务无权限查看,进而导致无法拉起om_monitor进程。chage -l omm解决方法:使用如下命令将omm用户密码超期时间设置为永不过期chage -M 99999 omm4.2      整节点未启动,cm_agent进程不存在问题现象:整节点未启动,om_monitor进程存在,但cm_agent进程不存在定位过程:omm用户登录到未启动的节点,使用以下命令确认cm_agent进程不存在:ps –eaf | grep cm_agent4.2.1        启停标志文件存在场景描述:检查om_monitor日志中是否有如下格式的日志打印,如果有说明cgroup未挂载成功,导致CMA拉起异常can't get the *cgroup*解决方法:重新挂载cgroup。4.2.2        启停标志文件存在场景描述:检查bin目录下启停标志文件是否存在,如果存在说明FIM界面启动命令未下发到后端ll /opt/huawei/Bigdata/mppdb/core/bin/cluster_manual_start解决方法:1、  删除此文件即可从后台自动拉起该节点实例;2、  FIM界面启动命令未下发到内核原因可排查分析该节点上如下两个日志文件中的报错信息来确认/var/log/Bigdata/mpp/scriptlog/prestart.log/var/log/Bigdata/mpp/scriptlog/start.log4.2.3        Python版本过高场景描述:检查节点上python版本为3.x,与数据库默认的2.7不符,FIM界面启动时start.log日志中有如下报错,则说明是python版本过高导致启动异常解决方法:与现场人员确认是否手动升级过python版本或安装了多个版本的python,并让现场人员将节点上默认python版本恢复为2.7版本。4.2.4          环境变量文件为空场景描述:检查/opt/huawei/Bigdata/mppdb/.mppdbgs_profile环境变量文件为空,则说明环境变量文件为空导致FIM界面启动命令未下发到内核         解决方法:从正常节点拷贝一份过来即可。4.2.5        启停标志文件不存在场景描述:检查bin目录下启停标志文件不存在,说明是其它原因导致om_monitor未能启动cm_agent解决方法:收集节点上om_monitor和cm_agent日志进一步分析。4.3      节点内部分实例未启动,cn/dn/gtm/cm_server进程不存在问题现象:节点内部分实例未启动,未启动的cn/dn/gtm/cm_server实例进程不存在定位过程:omm用户登录到实例未启动的节点,使用以下命令确认相应实例进程不存在:ps –eaf | grep gaussdbps –eaf | grep gs_gtmps –eaf | grep cm_server4.3.1        信号量不足导致cn/dn启动异常场景描述: 检查对应cn/dn实例的pg_log日志,如果有如下报错,则说明是信号量不足导致cn/dn启动异常解决方法:1、  使用root用户执行如下命令可以将节点上os参数配置为预期值;/opt/huawei/Bigdata/mppdb/wisequery/script/gs_checkos -i B1 --detail2、建议使用巡检工具对集群进行全面巡检和整改。4.3.2        postgresql.conf配置文件存在无效GUC参数场景描述:检查对应节点上cm_agent和systemcall日志中如果有如下报错,则说明cn/dn的postgresql.conf配置文件中存在无效参数配置/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss-current.log/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log解决方法:删除postgresql.conf配置文件中无效参数即可。4.3.3        端口号被占场景描述:检查对应节点上cm_agent和systemcall日志中如果有如下报错,则说明cn/dn/cm_server/gtm的端口号被占/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss-current.log/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log Port 25308 is used, run 'netstat -anop|grep 25308' or 'lsof -i:25308'(need root) to see who is using this port.解决方法:1、  使用如下命令找到占用端口的进程netstat -anop|grep portlsof -i:port (root执行)2、  kill -9清理掉占用端口的进程,然后重新启动。4.3.4        Lvs虚拟ip未挂载场景描述:cn的listen_addresses参数中配置了lvs虚拟ip,但cn节点上lvs虚拟ip未正常挂载,则也会导致cn启动不了检查cn实例listen_addresses配置命令:cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf|grep listen_addresses查看节点上ip信息命令:/sbin/ifconfig解决方法:使用如下命令重新挂载lvs虚拟ipsh /etc/init.d/gs_vip start4.3.5          进程listen端口号锁文件残留场景描述:机器异常掉电重启等情况下可能会导致进程listen端口号锁文件残留,这样当重新启动时会因锁文件已存在而无法启动。检查锁文件命令:ls -la  /opt/huawei/Bigdata/mppdb/mppdb_tmp检查查出来的锁文件产生时间是否是在启动时间之前,如果是则说明是之前残留的。解决方法:将残留的锁文件删除。4.3.6        Cn/dn的listen_addresses中存在无效ip场景描述:cn/dn的postgresql.conf配置文件的listen_addresses参数存在无效ip时会导致cn/dn无法正常启动,system_call日志中会有如下报错:FATAL:  could not create listen socket for "100.185.180.62"/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log检查cn实例listen_addresses配置命令:cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf|grep listen_addresses解决方法:将listen_addresses参数中的无效ip删除。4.3.7        数据目录无权限场景描述:cn/dn/gtm/cm_server的数据目录权限预期是700,当权限不足时cm_agent日志中会有如下报错:data path disc writable test failed, /srv/BigData/mppdb/data3/slave1解决方法:根据报错提示修复cn/dn/gtm/cm_server数据目录的权限。4.3.8        磁盘满场景描述:节点上数据盘、日志盘等满均会导致cn/dn/gtm/cm_server进程启动异常。磁盘使用率检查命令:df -lh解决方法:清理释放磁盘空间,消除磁盘满。4.4      节点内部分实例未启动,查看状态CN、DN、GTM实例状态为down或者unknown启动集群失败,后台查看集群状态,发现CN、DN、GTM实例显示down或者unknown。4.4.1        当前节点与主cm_server节点网络不通场景描述:当节点与主cm_server节点网络不通时,当前节点cm_agent无法将实例状态上报给cm_server,导致实例状态显示为down或unknown。检查当前节点与主cm_server节点网络命令:在当前节点上ping 主cm_server节点ip,如果不能ping通则说明网络异常。解决方法:联系网络侧人员解决网络问题。4.4.2        Cm_server无主场景描述:当集群中两个cm_server实例均为pending状态,没有选出主时,无法对DN状态进行仲裁,导致DN状态均显示为down或unknown。检查当前集群cm_server状态命令:cm_ctl query -vCd|grep cm_server 解决方法:收集主备cm_server日志并联系研发人员处理。4.4.3        节点上存在多个om_monitor进程场景描述:当节点上存在多个om_monitor进程时,会导致cm_agent进程反复被杀,无法持续向cm_server上报实例状态,进而导致节点上实例状态显示为down或unknown。检查当前节点om_monitor个数命令:ps -ef|grep om_monitor|grep -v grep 解决方法:kill掉当前所有om_monitor进程待起自动重新拉起。 
  • [实践系列] GaussDB(DWS) 【子查询中包含不存在列时在DWS&amp;mysql;&amp;postgres;的表现】
    【验证场景】创建表course:DROP TABLE IF EXISTS course;CREATE TABLE course (  student_id int,  course varchar(20));插入数据:INSERT INTO course VALUES ('1', '标题');INSERT INTO course VALUES ('2', '标题');INSERT INTO course VALUES ('3', '标题');创建表student:DROP TABLE IF EXISTS student;CREATE TABLE student (  id int,  name varchar(20));插入数据:INSERT INTO student VALUES ('1', 'lily');INSERT INTO student VALUES ('2', 'lucy');INSERT INTO student VALUES ('3', 'nacy');INSERT INTO student VALUES ('4', 'hanmeimei'); 执行查询语句1:select name from course;执行查询语句2:select * from student where name in (select  name from course); 【问题描述】name字段在内表中不存在,但是在外表中存在,子查询中有个不存在的列,不报错。【问题分析】分别在GaussDB  for dws ,postgresql  ,mysql  中验证此场景1.         dws中验证如下创建测试表及插入数据:\d+查看表结构执行SQL1:执行SQL2: 2.         Postgresql  中验证如下Postgresql 版本:10.11创建测试表及插入数据:\d+查看表结构执行SQL1:执行SQL2: 3.         mysql  中验证如下mysql 版本:5.5.40创建测试表及插入数据:DROP TABLE IF EXISTS `course`;CREATE TABLE `course` (  `student_id` int(11),  `course` varchar(20)) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `course` VALUES ('1', '标题');INSERT INTO `course` VALUES ('2', '标题');INSERT INTO `course` VALUES ('3', '标题'); DROP TABLE IF EXISTS `student`;CREATE TABLE `student` (  `id` int(11),  `name` varchar(20)) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `student` VALUES ('1',      'lily');INSERT INTO `student` VALUES ('2',      'lucy');INSERT INTO `student` VALUES ('3',      'nacy');INSERT INTO `student` VALUES ('4',      'hanmeimei'); 查看表数据执行SQL2:  【结论】1.dws  postgresql mysql中具有相同的执行结果。2.   在计算子查询时,它开始在本地查找以解析列名。如果失败免责转到外部范围,直到找到具有该名称的列或失败为止。即一般规则是语句中的列名由FROM 子句中引用的表隐式地限定在同一级别。如果子查询的FROM 子句中引用的表中不存在列,则由外部查询的FROM 子句中引用的表隐式地限定列。
  • 执行创建OBS外表的SQL语句时,提示OBS访问被拒绝
    问题现象执行创建OBS外表的SQL语句时,返回OBS错误信息,提示访问被拒绝“Access Denied”。原因分析l 创建OBS外表语句中的访问密钥AK和SK错误,会出现如下所示的错误信息:ERROR:  Fail to connect OBS in node:cn_5001 with error code: AccessDeniedl 账户OBS权限不足,对OBS桶没有读、写权限,会出现如下所示的错误信息:dn_6001_6002: Datanode 'dn_6001_6002' fail to read OBS object bucket:'obs-bucket-name' key:'xxx/xxx/xxx.csv' with OBS error code:AccessDenied message: Access Denied默认情况下,您不具备访问其他账号的OBS数据的权限,此外,IAM用户(相当于子用户)也不具备访问其所属账号的OBS数据的权限。处理方法l 创建OBS外表语句中的访问密钥AK和SK错误请获取正确的访问密钥AK和SK,写入创建OBS外表的SQL语句中。获取访问密钥的步骤如下:a. 登录DWS管理控制台。b. 将鼠标移至右上角的用户名,单击“我的凭证”。c. 进入“我的凭证”后,在左侧导航树单击“访问密钥”。在访问密钥页面,可以查看已有的访问密钥ID(即AK)。d. 如果要同时获取AK和SK,单击“新增访问密钥”创建并下载访问密钥。l 账户OBS权限不足,对OBS桶没有读、写权限您必须给指定的用户授予所需的OBS访问权限:− 通过OBS外表导入数据到DWS时,执行导入操作的用户必须具备数据源文件所在的OBS桶和对象的读取权限。− 通过OBS外表导出数据时,执行导出操作的用户必须具备数据导出路径所在的OBS桶和对象的读取和写入权限。//认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全
  • [技术干货] GaussDB(for MySQL)性能优化 —— 日志的“快递驿站”
    GaussDB(for MySQL)数据库在写入性能上,在业界同类产品中是最好的,这主要得益于GaussDB(for MySQL)在MySQL内核方面的诸多优化。其中有一项从“送快递”得来灵感的优化——事务异步提交,值得我们分析。背景我们先来看看MySQL 8.0的事务提交的大致流程图1 MySQL 8.0事务执行流程以上流程,是MySQL8.0对WAL原则的一种实现,这个流程意味着,任何一个事务的提交,一定要完成write buffer和flush to disk流程。然而那么这个流程中,有一个问题:每个服务器的CPU是有限的,服务器能处理的Thread也是有上限的,那么当我们的业务的并发数量,远远大于我们服务器能并行处理的数量时,那么后来的事务,只能等待前面的事务提交后才能被处理。在这之前,他们什么也做不了。因此,在大并发场景下,如何进一步提升线程的使用率,是大并发事物写入的一个关键。灵感来源于生活一个优化,并不是凭空想象出来的,有时候,往往来源于现实生活。下面,我们先来看看我们身边,和事务提交流程非常类似的一个例子:快递。现在的快递配送,一般一个快递员会负责一片区域,快递刚开始兴起时,数量不多,那么一个快递员基本上可以在规定时间内完成配送。图2 过去的快递配送但是,随着快递数量越来越多,一个快递员要在一个小区配送很长的时间,才能到下一个小区,常常导致了快递员无法准时的配送。在这个问题的催动下,随后,一个新的行业开始出现 – 快递驿站。图3 现在的快递配送快递的优化原理接下来,让我们来看下,快递驿站究竟解决了什么问题。快递的配送过程中,最耗时的,不是装货,不是卸货,而是电话和等待。配送一个小区的时间,取决于这个最后一个来取快递的人的时间,在最后一个人取完快递钱,快递员除了打电话,做不了其他任何事情(也没有办法通知下一个小区的人,因为最后一个人来取得时间是无法确定的)。那么这个等待的时间,对于快递员来说,就是一种浪费。快递驿站可以很大程度解决这个问题,快递员到了以后,只需要将快递卸货,即可前往下一个小区,剩下的事情,就可以由驿站的人员来完成,大大提升了快递员的配送效率。分析回过头来,我们看看数据库,如果把Transaction线程看做快递员,存储上的文件看做取快递的人,那么我们会发现两者有非常大的相似性。那么我们可以像快递配送优化那样去优化事务的处理流程吗?答案是可以的。图4 事务处理和快读配送非常类似根据快递驿站的优化原理,我们知道,快递驿站帮快递员免去了等待客户取货的时间,那么事务处理过程中,有没有等待的过程呢?答案是有的,存储的IO就是一个较长的等待。数据库使用经验丰富的开发人员来都知道,等待redo日志写入存储的磁盘IO性能,很大程度上决定了数据库的写入性能。对于现代数据库来说,尤其对于GaussDB(for MySQL)这样计算于存储分离的数据库,存储的IO耗时,在事务处理的总耗时中,占据了不小的比例,虽然有log buffer的合并写入,提升并发情况下的整体吞吐,但是如果在等待IO的这段时间中,这些线程能够去做别的事情(例如处理等待中的其他事务)。那么将会有进一步的性能提升。GaussDB(for MySQL)的优化既然找到了等待的点,那么我们就可以像快递配送的优化方法,为数据库,也创造一个“快递驿站”,让“快递驿站”来做等待的事情,而事务线程就可以去处理其他等待中的事务,让CPU不会“闲下来”。图5 GaussDB(for MySQL)的“快递驿站”如图5所示,GaussDB(for MySQL)当redo日志的flush to disk动作完成后,即可进行事务提交,但是此时并不应答客户端,而是直接处理下一个事务。同时使用少量”post comit worker线程”,来批量等待日志写入完成(等待的过程其实并不占用CPU),并应答客户端,这就可以让“等待”和“下一个事务的处理”并行化,让CPU“闲不下来”。实际测试图6 Sysbench write only 模型下写入性能测试根据实际测试,在标准的sysbench写入模型下,没有使用Post Commit时,极限性能是35万QPS左右,而使用Post commit后,可以到大42万以上的QPS,提升了20%的写入性能。
  • [技术干货] 推荐一个GaussDB题库!可免费进行“GaussDB T 数据库入门测试”!
    给大家推荐一个GaussDB在线题库,不过与考试没有直接关系,可以测试下技能掌握程度,测试完会有打分。GaussDB T 数据库入门测试 https://www.modb.pro/exam/11
  • [技术干货] 推荐一个GaussDB题库,可免费进行GaussDB T 数据库入门测试
    给大家推荐一个GaussDB在线题库,不过与HCIP考试没有直接关系,可以测试下技能掌握程度,测试完会有打分。GaussDB T 数据库入门测试 https://www.modb.pro/exam/11?hw
  • [问题求助] 《从安装入手学习GaussDB T》—2020.3.05 GaussDB安装课程 Q&amp;A精彩合集
    2020年3月5日,墨天轮社区开展的直播课程——《从安装入手学习GaussDB T - 恩墨学院名师精品课》已顺利结束,本文整理了在直播活动过程中同学们和演讲老师的精彩问答,希望能对大家的学习有所帮助。问:课件 PPT 哪里可以下载呢?答:课件《从GaussDB T的安装来学习高斯数据库1.0》下载地址:https://www.modb.pro/doc/2454?hw问:有GaussDB T安装包吗?答:目前华为没有正式发布,暂时还无法公开下载。问:安装GaussDB对内存有什么要求吗?答:官方推荐每个数据库实例需8G内存。每个实例最小需218M问:如果搭建sharding两条虚拟机可以吗?我只有8G的内存。答:单机可以装上,但是没有太大意义;最少3台,一般4台为好。问:GaussDB支持国产其他芯片吗??答:华为TaiShan服务器 鲲鹏920芯片问:GaussDB可以命令行安装么?答:目前数据库使用命令行安装问:这个gaussDBT 跟GaussDB_200_6.5.1_RHEL.tar.gz 和FusionInsight_MPPDBMonitor_6.5.1_RHEL.tar.gz 有啥不一样?答:GaussDB T (OLTP) - 前身是GaussDB 100,华为公司自主研发的分布式数据库,基于华为公司在2007年开始研发并在电信计费领域规模商用的自研内存数据库全面改造,支持x86和华为Kunpeng硬件架构,基于创新性数据库内核。GaussDB A (OLAP) - 前身是GaussDB 200,一款具备分析及混合负载能力的分布式数据库,从2011年开始,基于PostgreSQL 9.2.4的基础上自主研发,支持x86和华为Kunpeng硬件架构,支持行存储与列存储,提供PB(Petabyte)级数据分析能力、多模分析能力和实时处理能力,用于数据仓库、数据集市、实时分析、实时决策和混合负载等场景。问:bashrc 是gaussDB特定的吗? 可以自己创建bash_profile答:操作系统的问:GaussDB有没有基于日志的实时解析的工具,类似logminer的?答:log/oper日志就记录了对数据库的操作语句问:高斯有认证吗?如何收费?答:有的,参考 https://e.huawei.com/cn/talent/#/admin/productDetails?certifiedProductId=217&authenticationLevel=CTYPE_CARE_HCIP&technicalField=PSC&version=1.0问:有没有银行核心在高斯上跑的案例?是用的分布式的吗?答:有的,招行问:怎么能加到GaussDB的群?答:可以加QQ群:640663596观看课程视频:https://www.modb.pro/course/42
  • [内容拦截申诉] 用户通过Data Studio管理登陆Gaussdb100权限问题(最小权限)等2个帖子怎么就不能发布
    发帖内容1:发文的版块名:鲲鹏论坛--迁移调优实践发文的标题名:用户通过Data Studio管理登陆Gaussdb100权限问题(最小权限)帖子内容链接:https://bbs.huaweicloud.com/forum/thread-46155-1-1.html发帖内容2:发文的版块名:鲲鹏论坛--迁移调优实践发文的标题名:用户通过Data Studio管理登陆Gaussdb100安全限制问题(如何配置白名单)帖子内容链接:https://bbs.huaweicloud.com/forum/thread-46147-1-1.html
  • [技术干货] 用户通过Data Studio管理登陆Gaussdb100权限问题(最小权限)
    登陆报错如下:错误代码GS-00331:Whitelist rejects connection for user \"%s\", ip \"%s\", current date \"%s\", please check zhba.conf or tcp valid node configuration错误原因:客户端IP地址不在白名单内,不允许连接。解决办法:使用白名单内的IP主机连接数据库,或者联系管理员将当前IP地址加入到白名单内。注意如何进行白名单配置:修改配置文件zhba.conf,并在线reload hba config实现进入[omm@bpm-db ~]$ cd $GSDB_DATA[omm@bpm-db data]$ pwd/u01/gaussdb/data[omm@bpm-db data]$ cd cfg[omm@bpm-db cfg]$ pwd/u01/gaussdb/data/cfg[omm@bpm-db cfg]$ lszengine.ini  zengine.ini_bak  zhba.conf[omm@bpm-db cfg]$ vi zhba.conf SQL> alter system reload hba config;
  • 用户通过Data Studio管理登陆Gaussdb100权限问题(最小权限)
    报错信息错误代码GS-01001:Permissions were insufficient错误原因:无权限执行当前操作。解决办法:根据提示信息赋予用户相应的权限。注意:当前登陆用户已经授予CONNECT角色(创建用户连接登陆权限),按常规思维理解,就应该具备了登陆连接数据库权限(通过zsql 客户端也确实能够登陆成功)但通过Data Studio管理工具登陆却受阻,提示还需要查询其它数据字典的权限,比如提示的:SYS.SYS_DATA_NODES等6项数据字典权限,通过测试发现:通过DS管理工具登陆最小权限除了connect角色之外还需授予如下数据字典权限:grant select on sys.sys_data_nodes to usr001;grant select on sys.dv_sessions to usr001;grant select on sys.dv_tablespaces to usr001;grant select on sys.db_users to usr001;grant select on sys.adm_users to usr001;grant select on sys.sys_roles to usr001;---所以通过DS登陆最小权限必须包括connect角色与上述7个数据字典权限---另外一种偷懒方式,可以授予登陆用户connect角色与select any table权限
  • 用户通过Data Studio管理登陆Gaussdb100安全限制问题(如何配置白名单)
    登陆报错如下:错误代码GS-00331:Whitelist rejects connection for user \"%s\", ip \"%s\", current date \"%s\", please check zhba.conf or tcp valid node configuration错误原因:客户端IP地址不在白名单内,不允许连接。解决办法:使用白名单内的IP主机连接数据库,或者联系管理员将当前IP地址加入到白名单内。注意如何进行白名单配置:修改配置文件zhba.conf,并在线reload hba config实现进入[omm@bpm-db ~]$ cd $GSDB_DATA[omm@bpm-db data]$ pwd/u01/gaussdb/data[omm@bpm-db data]$ cd cfg[omm@bpm-db cfg]$ pwd/u01/gaussdb/data/cfg[omm@bpm-db cfg]$ lszengine.ini  zengine.ini_bak  zhba.conf[omm@bpm-db cfg]$ vi zhba.conf SQL> alter system reload hba config;
  • Gaussdb100 DATASYNC 数据同步工具配置问题【踩坑①】
    平台版本:CentOS Linux release 7.4.1708 (Core) Linux bpm-db.novalocal 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux数据库版本:GaussDB_100_1.0.1-CLUSTER-CENTOS7.5-64bit.tar.gz同步软件版本:GAUSSDB100-V300R001C00-DATASYNC.tar.gz源库:Oracle,MySQL     ------>目标库:Gaussdb 100同步日志:Start checking config.............................[failed][Msg]: cfg.ini:export_db.db driver load fail:please check the param从上可以看出在做同步之前的配置检查,发现驱动报错,注意检查原因:查看发现DS默认是不包含oracle与mysql数据库的驱动包解决方案:下载驱动包放置到 ../dependency-jars 目录下★特别注意:不是下载个驱动包放进去就完事了,通过多次测试验证,驱动包的命名规则与版本有要求(但该版的DS文档并没有给出具体说明)                   目前测试的V300R001C00版本的驱动要求是:ojdbc8-12.2.0.1.jar,mysql-connector-java-5.1.44.jar                   注意下载下来相应的版本驱动后还要修改成对应的如上命名规则,否则不会生效
总条数:2201 到第
上滑加载中