常见故障
Sql回放失败
源端数据和目标数据库中要复制的表 没有匹配好映射关系 【用户 、表明、表结构不同】
由于某种原因导致目标数据库进程退出
变更源端某张要复制的表结构 ,而目标端的表没有加对应列
解决方法: 根据逻辑复制打印出来的日志信息排查错误
解析源端逻辑日志失败
原因:用户删除了某张已经开启逻辑复制的表 , 但是逻辑日志中还残留这张表的数据时 重启了逻辑复制工具的进程
解决方法: 在逻辑复制启动时 指定要跳过的某个用户下对应的表
启动逻辑复制工具进程失败
原因: 配置文件配置错误、 java环境变量没有匹配或者配置错误
解决方法: 根据具体日志 采取对应的解决措施
分布式数据库搭建
1、以root登录待安装集群任意主机, 并按规划 创建存放安装包的目录 ==> mkdir -p /opt/software/gaussdb
2、将相关安装包和clusterconfig.xml 上传第一步创建目录
3、 解压包 ,执行gs_preinstall 等OM工具
4、赋予工具脚本存放目录755权限 确保数据库安装用户对工具脚本存放目录有读取权限
5、确认集合各节点root密码一致
预安装
1、 使用gs_preinstall 准备安装环境 ---->./gs_preinstall -U omm -G dbgrp -X /opt/software/gaussdb/clusterconfig.xml
Time consistent has been completed 安装完成 ,安装失败请查看 $GAUSSLOG目录下om/gs_preinstall*.log日志
2、 系统参数
# 同时保持 time_wait tcp/ip 最大连接数 net.ipv4.tcp_max_tw_buckets 1000 # 允许将time_wait状态的socket重新用于新的tcp连接 net.ipv4.tcp_tw_reuse 1 # 开启TCP连接中的time_wait状态sockets的快速回收 net.ipv4.tcp_tw_recycle 1 # 表示当keepalive启动的时候 tcp发送keepalive消息频度 net.ipv4.tcp_keepalive_time 30 # 认定连接失效前, 发送tcp 的keepalive探测包数量 net.ipv4.tcp_keepalive_probes 9 # 当探测没有确认时 重新发送探测的频度 net.ipv4.tcp_keepalive_intvl 30 # 控制内核向已建立连接的主机重新发送数据的次数 net.ipv4.tcp_retries2 80 # 控制在做内存分配的时候 内存的检查方式 vm.overcommit_memory 0 # TCP协议接收端缓冲区 的内存大小 net.ipv4.tcp_rmem 8192 250000 16777216 # TCP协议发送端缓冲区 可用内存大小 net.ipv4.tcp_wmem 21299200 # socket发送/接受缓冲区大小的最大值 net.core.wmem_max 21299200 / net.core.rmem_max # socket发送/接受缓冲区大小的默认值 net.core.wmem_default 21299200 / net.core.wmem_defaulr 21299200 # 内核信号量参数设置大小 kernel.sem 250 6400000 1000 25600 # 保证物理内存有足够空闲空间 防止突发性换页 vm.min_free_kbytes 系统内存的百分之5 # 定义了系统中每一个端口最大侦听的长度 这个是全局参数 net.core.somaxconn 65535 # 出现syn等待队列溢出时 ,启动cookie来处理 可以减少syn攻击 net,ipv4.tcp_syncookies 1 # 在每个网络接口 接受数据包的速率比内核处理这些包的速率快 允许送到队列的数据包的最大数目 net.core.netdev_max_backlog 65535 # 记录那些尚未收到客户端确认信息的连接请求最大值 net.ipv4.tcp_max_syn_backlog 65535
安装
以omm用户登录gaussdb 100服务器 su - omm
使用gs_install 安装集群 gs_install -X /opt/software/gaussdb/clusterconfig.xml
查询集群状态 gs_om -t status
安装成功 successfully starting the cluster 表示安装成功
安装失败 om问题 查看om/gs_install*.log ; cm问题 查看cm/cm_agent/agent.log ; 内核问题 查看db_log/DB1_1/run/zengine.rlog 运行日志
连接 : zsql omm/password@ip:port
卸载: gs_uninstall --delete-data -X /opt/software/gaussdb/clusterconfig.xml -L 本地卸载
卸载清理: ./gs_postuninstall -U omm -X /opt/software/gaussdb/clusterconfig.xml --delete-user
升级前检查
1、确保集群状态正常 每个*状态正常且未发生主备切换 即所查到的集群balanced信息为true
2、确保当前业务全部停止
3、确保存放版本包的目录 足够存放目标升级版本包
4、确保关键业务的数据表记录数进行登记 , 以备升级结束后, 对这些表的记录进行核对并确定是否一致
5、确保集群运行正常 且主DN的信息完全同步到备DN
6、确保$GAUSSDB目录有足够空间在升级过程中使用
分布式升级前检查
cd /opt/software/gaussdb/script
执行前置脚本
./gs_preinstall -U omm -G dbgrp -X /opt/software/gaussdb/clusterconfig.xml --alarm-type= 1 --operation=upgrade
集群自动升级
gs_upgradectl -t auto-upgrade -X /opt/software/gaussdb/clusterconfig.xml
# 判断升级方式
gs_upgradectl -t upgrade-type -X /opt/software/gaussdb/clusterconfig.xml
# 二进制升级
gs_upgradectl -t binary-upgrade -X /opt/software/gaussdb/clusterconfig.xml
# 小版本升级
gs_upgradectl -t systable-upgrade -X /opt/software/gaussdb/clusterconfig.xml
# 确认升级后版本
zengine -V
# 检查集群健康
gs_check -e cluster -X /opt/software/gaussdb/clusterconfig.xml
分布式数据库运维
# 启停集群或者实例 gs_om -t start # 启动单个主机上所有的实例 假设plat1为主机的名称 gs_om -t start -h plat1 # 启动单个主机上的指定实例 , 可以启动类型有 CM CN DN GTS 不支持ETCD gs_om -t start -h plat1 -I DB1_1 # 启动一组DN 假设group_1 为指定启动的DN组的名称 gs_om -t start -g group_1 # 停止集群 gs_om -t stop # 停止单个主机上的所有实例,假设plat1位主机名称 gs_om -t stop -h plat1 # 停止单个主机上的指定实例, 可启动的实例类型有 CM CN DN GTS 不支持ETCD gs_om -t stop -h plat1 -I DB1_1 # 停止一组DN 假设group名称为 group_1 gs_om -t stop -g group_1 # 查询集群状态 gs_om -t status # 节点状态 gs_om -t staus -h HOSTNAME # AZ状态 gs_om -t status --az=AZNAME # DN主备切换 plat1 为当前备份DN所在的主机名称 , DB1_2为要切换的DN名称 gs_om -t switch -h plat2 -I DB2_1 # CM主备切换 plat1 为当前备CM 所在的主机名称 , CM1为plat1 主机上的CM实例名称 gs_om -t swtich -h plat1 -I CM1
分布式集群 日常运维
集群管理
通过database manager 工具进行集群启停
日常监控
通过database manager 工具进行集群监控
1、集群状态 : 正常 降级 不可用 未知 不可用
2、集群详情: 集群状态、内核版本、数据库信息、操作系统信息、 节点与实例状态、诊断信息、集群性能、CPU 内存 IO 网络等
3、集群拓扑: AZ -> 具体实例名称状态 查看实例详细信息
4、主机管理: 查看集群信息, 所有主机的平均CPU 磁盘IO 内存 网络 存储信息
5、集群数据库: 查看集群所有DN组,以及每个组内所有DN主备实例信息
6、DB服务能力:实例状态、执行/连接数、实例CPU用量 、 实例内存用量、事务数、事务成功率、平均事务相应时间、平均SQL相应时间
7、DB性能指标:数据库连接数/执行数、总/平均事务数、 平均提交/回滚事务数、平均动态/静态SQL数、平均查询数、平均DML查询数
8、DB锁与缓存: DN锁数量、缓存命中信息页展示DN缓冲命中率,磁盘排序,磁盘读写、缓存排序/磁盘排序
9、容量指标: 表空间容量 空间名称、ID、表空间状态、扩展大小、段数目、文件数、总大小、已经 可用 使用量
10、OS性能指标: 主机名 IP端口 角色 实际占用CPU RAM CPU使用率/队列 ,IO TPS 读写量,内存使用率 网速效率
11、应用连接数: 应用名称 应用ID 连接端口:ip 连接号 最近连接时间
12、会话信息 :会话ID 、 会话时间、 用户、事务数、 回滚次数、SQL数、SQL用时 、 实例名称、 客户端IP 会话状态
13、数据库用户: 用户名称,创建数据库、 是否为管理员、 是否可以更新系统表、用户创建时间、 状态、 密码到期时间
14、 数据库角色: 角色名称等
15、查询监控: 集群内所有查询信息
16、告警监控: 在顶部监控告警
日志管理
1、数据库日志界面可以查询数据库内部各内部实例的日志文件内容,搜索 过滤日志等级,过滤日志周期,高级设置来展示日志内容
数据库安全
网络安全 、 系统安全、 数据安全 、授权账户信息、 硬件软件损坏
防御措施
1、通过访问控制和SSL 防止客户端仿冒,信息泄露 消息篡改
2、用户权限管理、数据服务器加固 防止权限提升风险
3、安全审计管理、数据库所有操作有机可查
访问控制
zengine.ini 优化配置 # 临时缓存 默认 建议 temp_buffer_size 32M 1G # 数据buffer缓存区 默认 建议 data_buffer_size 128M 2G # shardpool大小 默认 建议 shard_pool_size 128M 1G # 日志缓存大小 默认 建议 log_buffer_size 4M 64M # 脏页面线程个数 默认 建议 DBWR_PROCESSES 1 8 # logbuffer数量 默认 建议 log_buffer_count 4 8 # 地址 LSNR_ADDR 127.0.0.1 # 端口 LSNR_PORT 1611 # 最大并发session数量 SESSIONS 200 1500
# 数据库安装成功 会在操作系统上 安装4个环境变量
GSDB_DATA 数据库100数据目录
GSDB_HOME 安装目录 bin lib所在目录
PATH 数据库内核可执行码路径
LD_LIBRARY_PATH library库路径
未完待续