经济文库 - 千万精品文档,你想要的都能搜到,下载即用。

KingbaseES高可用常见故障恢复指南.pdf

upergirl你35 页 284.736 KB 访问 422.97下载文档
KingbaseES高可用常见故障恢复指南.pdfKingbaseES高可用常见故障恢复指南.pdfKingbaseES高可用常见故障恢复指南.pdfKingbaseES高可用常见故障恢复指南.pdfKingbaseES高可用常见故障恢复指南.pdfKingbaseES高可用常见故障恢复指南.pdf
当前文档共35页 2.97
下载后继续阅读

KingbaseES高可用常见故障恢复指南.pdf

KingbaseES 高可用常见故障恢复指南 金仓数据库管理系统 KingbaseES 文档版本:V9(V009R001C001B0024) 发布日期:2023 年 10 月 12 日 北京人大金仓信息技术股份有限公司 目 目 录 录 第 1 章 前言 1 1.1 适用读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.4 手册约定 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 故障恢复概述 5 2.1 什么是故障恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 故障恢复的重要性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 故障恢复的类别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 第 3 章 读写分离集群故障恢复 6 3.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 服务器状态要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 自动故障恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3.1 配置方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3.2 可自动恢复的故障场景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 手动故障恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 故障排查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.1.1 集群异常状态场景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.1.2 故障确认操作指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 故障恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4.2.1 集群恢复思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4.2.2 集群典型异常场景恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4.2.3 集群恢复操作指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.2.3.1 FR-1: 出现多主时,判断谁是新主 . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.2.3.2 FR-2: 一键启动集群 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.2.3.3 FR-3: 使用 repmgr node rejoin 恢复成集群备机 . . . . . . . . . . . . . . . . 18 3.4.2.3.4 FR-4: 重做备机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.2.3.5 FR-5: 查询集群状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4 3.4.1 3.4.2 I 目 第 4 章 物理备份故障恢复 录 20 4.1 适用场景介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 常见物理备份故障处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 第 5 章 数据应急恢复 22 5.1 适用场景介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.2 恢复数据矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3 常用恢复实践操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.1 RMAN 恢复命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.2 导出 walminer 表中数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.3 把 SQL 文件数据导入到表中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.4 数据块损坏恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.4.1 检查与发现数据损坏 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.4.2 应急恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.3.4.3 数据抢救 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3.4.3.1 ignore_checksum_failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3.4.3.1.1 参数功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3.4.3.1.2 参数影响范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3.4.3.1.3 使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3.4.3.1.4 使用用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 zero_damaged_pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.4.3.2.1 参数功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.4.3.2.2 参数影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.4.3.2.3 用户接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.4.3.2.4 使用用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.3.4.3.2 版权声明 30 服务周期承诺 31 II 第 1 章 前言 1 第 章 前言 本文描述了 KingbaseES 数据库集群故障、数据异常(损坏或丢失)、物理备份故障的恢复实践处理。 前言部分包含以下主题: • 适用读者 • 相关文档 • 术语 • 手册约定 1.1 适用读者 KingbaseES 高可用常见故障恢复指南面向所有使用 KingbaseES 的用户,主要是数据库管理员、运维人员和应 用程序开发人员。 1.2 相关文档 有关 KingbaseES 高可用常见故障恢复指南的关联技术的更多信息,请参阅以下资源: • 有关高可用架构、应用等的更多信息,请参阅《高可用最佳应用实践》 • 有关物理备份恢复的更多信息,请参阅《KingbaseES 物理备份恢复最佳实践》 1.3 术语 1 第 1 章 前言 术语 定义 金 仓 数 据 库 管 理 系 统 (King- 人大金仓数据库管理系统,本文指代单机服务版本,下文也被称作单机版。其成 baseES) 员可能包括数据节点(data node)、备份节点(repo node)。 金仓数据守护集群软件 金仓数据守护集群软件用于构建基于流复制技术实现数据同步的主备数据库集 (Kingbase Data Watch) 群。该类集群由主库、备库和守护进程组成,其中主库提供数据库读写服务,备 库作为主库的备份,守护进程负责检查各库及环境状态并实现自动故障转移。基 于该软件,用户可构建同机房内、同城、异地的容灾及可用性方案,确保各种故 障及灾害时的用户数据及数据库服务安全与连续。 金仓数据库读写分离集群软件 金仓数据库读写分离集群软件在金仓数据守护集群软件的基础上增加了对应用透 (KingbaseRWC) 明的读写负载均衡能力。相比数据守护集群,该类集群中所有备库均可对外提供 查询能力,从而减轻了主库的读负载压力,可实现更高的事务吞吐率;该软件支 持在多个备库间进行读负载均衡。 其成员可能包括主节点(primary node)、备节点(standby node)、辅助节点 (witness node)、备份节点(repo node)。 金仓 KingbaseRAC 集群数据 金仓 KingbaseRAC 集群数据库软件用于构建采用共享存储架构的对等多写数据 库软件(KingbaseRAC) 库集群,该软件通过缓存交换技术保持各个节点的一致性。该类集群具有对应用 透明、高可用、高性能扩展、低存储成本等特点,可满足绝大多数应用场景的功 能、性能、可用性要求。 金 仓 高 可 用 软 件 (King- 以“保障企业级关键业务不间断运行”为目标,为用户提供 Linux 平台上完整的 baseHA) 数据库高可用性解决方案,减少由计算机硬件或软件出现故障所带来的损失。当 集群中的某个节点由于软件或硬件原因发生故障时,集群系统可以把 IP 地址、 业务应用等服务资源切换到其他健康的节点上,使整个系统能连续不间断地对外 提供服务,从而为企业关键业务提供持续可靠的保障,实现系统零宕机的高可用 和可靠性。 金仓集群资源管理软件 (King- 可提供集群成员管理、故障检测、处置调度等功能。可用于构建共享存储集群冷 baseES Clusterware) 备方案,在单机已经满足性能需求的情况下,低成本的增加 KingbaseES 数据库 的可用性。同时,也是金仓 KingbaseRAC 集群数据库软件所依赖的集群管理组 件。 主节点(Primary Node) 在计算机术语中,一台服务器一般被称作一个节点(Node)。KingbaseES 的集 群服务由多台服务节点组成,其中既能在线对外提供读(Read)服务,又能提供 写(Write)服务的节点被称作主节点,英文名一般为 Primary Node,也被称作 Master Node。 备节点(Standby Node) 在计算机术语中,一台服务器一般被称作一个节点(Node)。KingbaseES 的集 群服务由多台服务节点组成,其中只在线对外提供读(Read)服务,或者仅仅用 作灾备(Backup)服务的节点被称作备节点,英文名一般为 Standby Node,也 被称作 Slave Node。 见续表 2 第 1 章 前言 表 1.3.1 – 续表 术语 定义 主数据库(主库) 简称“主库”(Primary DB),位于主节点上的数据库,该数据库对外提供读 写服务。 备用数据库(备库) 简称“备库”(Standby DB), 位于备节点上的数据库,该节点对外提供只读服 务。 恢复时间目标,灾难发生后,信息系统或业务功能从停顿到必须恢复的时间要 RTO 求。 恢复点目标,灾难发生后,系统和数据必须恢复到的时间点要求。 RPO 1.4 手册约定 本文档中可能出现“注意、提示、警告、另请参阅”等标志,它们所代表的含义如下: 注意: 用于突出重要/关键信息、最佳实践等。 提示: 用于突出小窍门、捷径等。 警告: 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其 它不可预知的结果。 另请参阅: 用于突出参考、参阅等。 以下程序代码书写约定适用于本文档: 符号 说明 [] 表示包含一个或多个可选项。不需要输入中括号本身。 {} 表示包含两个以上(含两个)的候选,必须在其中选取一个。不需要输入花括号本身。 | 分割中括号或者花括号中的两个或两个以上选项。不需要输入“|”本身。 见续表 3 第 1 章 前言 表 1.4.1 – 续表 符号 说明 ... 表示其之前的元素可以被重复。 斜体 表示占位符或者需要提供特定值的变量。 大写 表示系统提供的元素,以便与用户定义的元素相互区分。除出现在方括号中的元素外,应当按 照顺序逐字输入。当然,部分元素在系统中是大小写不敏感的,因此用户可以根据系统说明以 小写形式输入。 小写 表示由用户提供的元素。 4 第2章 2 第 章 故障恢复概述 故障恢复概述 • 什么是故障恢复 • 故障恢复的重要性 • 故障恢复的类别 2.1 什么是故障恢复 广义的故障恢复是指将硬件、网络、软件、数据库(实例和数据)等从一种已经发生错误了的状态通过技术手段 恢复至某种已知的正确状态(亦称为一致状态和完整状态)。本文主要针对数据库(实例和数据)的故障恢复。 2.2 故障恢复的重要性 数据库的稳定运行、数据的健全是保障业务系统正常运行的基础,因此数据库故障恢复和数据异常的应急恢复至 关重要,也是 RPO/RTO 具体实现的重要组成部份。 2.3 故障恢复的类别 本文的故障恢复主要分为以下三个方面: (1) 读写分离集群故障恢复; (2) 物理备份故障恢复; (3) 数据应急恢复; 5 第 3 章 读写分离集群故障恢复 3 第 章 读写分离集群故障恢复 • 简介 • 服务器状态要素 • 自动故障恢复 • 手动故障恢复 3.1 简介 KingbaseES 数据库集群在不同的条件,人为操作情况下会出现不同的异常状态,部分异常状态可以自动进行恢 复,部分异常状态必须人为手动操作恢复。该章节第一部分归纳 KingbaseES 集群可自动恢复的异常场景。第二部分 提供 KingbaseES 集群故障的排查和恢复操作。 3.2 服务器状态要素 确认服务器状态,当服务器状态正常时,才能进行自动恢复,或手动恢复集群操作。 表 3.2.1: 服务器状态要素 要素内容 查询命令 服务器是否启动 无 服务器网络状态 ping $trust_ip 查看当前服务器能否 ping 通信任网关 $trust_ip 为集群部署时配置的信任网关 服务器内存状态 free -h 查看是否有足够的内存 见续表 6 第 3 章 读写分离集群故障恢复 表 3.2.1 – 续表 要素内容 查询命令 服务器磁盘状态 df -h 查看磁盘空间 进入数据库 data 目录,创建文件,写入内容,读取内容 查看磁盘读写是否正常 服务器防火墙状态 service firewalld status service iptables status 确认防火墙状态 (以上是以 Linux7.x 版本为例),如果防火墙开启,是否白名单 配置了数据库端口和 sys_securecmdd 服务端口 8890 SSHD 或 ssh/sys_securecmd 集群用户 @ 集群其他节点 ip SYS_SECURECMDD 免 根据集群中 use_scmd=on 或 off 使用不同的命令做免密检查。 密状态 例如: ssh kingbase@192.168.28.123 例如: sys_securecmd kingbase@192.168.28.123 通过 ssh/sys_securecmd 命令查看免密是否被破坏 定时任务状态 vim /etc/cron.d/KINGBASECRON 查看 kbha 进程的定时任务是否为开启状态 3.3 自动故障恢复 3.3.1 配置方法 集群配置文件 repmgr.conf 配置(该文件位于 ${install_dir}/kingbase/etc)。 表 3.3.1: 集群配置文件 repmgr.conf 配置 恢复配置 参数名称 值 备注 recovery automatic 节点故障后可自动恢复到集群中,需在每个节点配置该参数, 重启集群后生效。 standby 故障节点如果是备库,可以自动恢复到集群中;故障节点如果 是主库,则备库会提升为主库, 原主库不做任何恢复操作。 3.3.2 可自动恢复的故障场景 7 第 3 章 读写分离集群故障恢复 表 3.3.2: 可自动恢复的故障场景 故障类型 状态变换类故障 恢复处理行为 影响 若设置为 automatic,新主节点会尝试恢复停 备库 repmgr 尝试重连主 库节点;若设置为 standby,备库提升为主 库阶段业务中断,自动切 库,原主库不做恢复。 换完成后恢复。 节点上电后,同集群主库停库。 同集群主库停库 节点重启后,同集群主库停库。 同集群主库停库 集群备库停库、 设置 standby 或 automatic,主节点会尝试恢 无业务影响,为不影响业 掉电、重启 复此节点。 务备库故障可能触发同步 集群主库停库 集群主库节点掉 电 集群主库节点重 启 流复制转异步。 进程被杀死 repmgrd 由 kbha 负责监控,循环 故障期间不会触发切换 拉起,周期约 5 秒。 kbha 由 crond 负责拉起,1 分 故障期间不会触发恢复 钟执行一次。 网络类型故障 kingbase -主机 同集群主库停库 同集群主库停库 kingbase -备机 同集群备库停库、掉电、 同集群备库停库、掉电、 重启或断网。 重启或断网。 系统崩溃 同集群主库停库 同集群主库停库 备节点防火墙误 同集群备库停库、掉电、重启或断网。 同集群备库停库、掉电、 开启 集群主节点网络 重启或断网。 节点网络恢复后,同集群主库停库。 同集群主库停库 同集群备库停库、掉电、重启或断网。 同集群备库停库、掉电、 中断 集群备节点网络 中断 主机网络丢包 重启或断网。 10% 无影响 30% 无影响 更大的网络丢包 有概率造成节点网络中断 率 网络中断同集群主库停 同集群主库停库 库、掉电、重启。 备机网络丢包 10% 无影响 见续表 8 第 3 章 读写分离集群故障恢复 表 3.3.2 – 续表 故障类型 恢复处理行为 影响 30% 无影响 更大的网络丢包 有概率造成节点网络中断 同集群备库停库、掉电、 率 网络中断同集群备库停 重启或断网。 库、掉电、重启或断网。 资源耗尽类故障 主库存储故障 Repmgr 判定主库存储目录读,写,或者读写 切换完成之前业务中断 都失效则实施停库操作。 备库识别到主库失联,实施切换。 节点存储故障修复后,同集群主库停库。 备库存储故障 备库的 repmgr 判定本节点数据目录读,写, 备库的存储发生故障后, 或者读写都失效则实施停库操作。 在主机未从同步模式改为 主库 repmgr 识别到备库失效后,若为同步流 异步模式之前,应用业务 复制,改为异步。 写事务会卡住。 节点存储故障修复后,设置 standby 或 automatic ,主节点会尝试恢复此节点。 数据损坏故障 主数据库访问系 当从磁盘读取数据块到缓冲区发现数据块被损 应用访问到的数据中有坏 统表数据、持久 坏时(但不包括,备份时发现的坏块),若开 块时,会延迟等待坏块修 化用户表数据、 启此功能,会在可用的备库中获取正确的块来 复结束后返回。 索引时数据块被 进行替换修复。此功能有一些其它限制, 分别 损坏 为: (1) 修复坏块数量不超过系统最大块修复数 量; (2) 修复坏块数量不超过 session 级最大块修复 数量; (3) 修复时间不超过 session 级最大等待时间; (4) 必须有一个存活的备节点;在此约束范围 内,功能可以正常工作; (5) 如果开启 zero_damaged_pages 参数,此 参数会在块修复结束后生效。 9 第 3 章 读写分离集群故障恢复 3.4 手动故障恢复 3.4.1 故障排查 3.4.1.1 集群异常状态场景 操作指令详见章节:故障确认操作指令 表 3.4.1: 全节点故障-单主 FS001-ANF-SP(All node fault-single primary) 操作指 FS001-ANF-SP 结果 令 所有节点全部故障,且故障的节点中只有 1 个节点 为主机。 FC-1 所有节点-失败 FC-3 所有节点-不存在 kingbase 进程 FC-7 有且仅有 1 个节点的 data 目录下不存在 standby.signal 以上操作指令全部执行且检查结果和表格中结果一致则说明集群所有节点全部故障,且故障的节点中只有 1 个节 点为主机。 备机节点先故障,主机节点最后故障,或者所有服务器同时断电或断网会导致全节点故障-单主异常状态。 表 3.4.2: 全节点故障-多主 FS002-ANF-MP(All node fault-multi primary) FS002-ANF-MP 操作指 结果 令 所有节点全部故障,且故障的节点中有多个节点 为主机。 FC-1 所有节点-失败 FC-3 所有节点-不存在 kingbase 进程 FC-7 有且 2 个或以上的节点的 data 目录下不存在 standby.signal 以上操作指令全部执行且检查结果和表格中结果一致则说明集群所有节点全部故障,且故障的节点中存在 2 个或 多个主机。 主机节点先故障,集群切换后,且主机未恢复到集群中时,新主机也故障会导致全节点故障-多主异常状态。 10 第 3 章 读写分离集群故障恢复 表 3.4.3: 部 分 节 点 故 障-存 活 节 点 中 有 主 机-单 主 FS003-SNFASP(Some node fault-alive single primary) 操 作 FS003-SNF-ASP 结果 指令 部分节点故障,且存活的节点中只有 FC-1 1 个节点为主机。 部分节点-失败 部分节点-成功 其结果一致,结果显示 1 个 primary 节点,其状态是 running。 FC-3 执行FC-1 失败的节点-不存在 kingbase 进程 执行FC-1 失败的节点-存在 kingbase 进程 以上操作指令全部执行且检查结果和表格中结果一致则说明集群部分节点故障,存活的节点中存在 1 个主机节 点。 集群有节点故障,集群处理正常后,集群状态可用,且会出现部分节点故障-存活节点中有主机-单主状态。 表 3.4.4: 部 分 节 点 故 障-存 活 节 点 中 有 主 机-多 主 FS004-SNFAMP(Some node fault-alive multi primary) FS004-SNF-AMP 操作指令 结果 部分节点故障,且存活的节点 FC-1 部分节点-失败 中有多个节点为主机。 部分节点-成功 其结果显示多个 primary 节点,状态是 running 。或者显示 1 个 primary 状态是 running,且 1 个或多个是 standby 但其状态是 running as primary。 FC-3 执行FC-1 失败的节点-不存在 kingbase 进程 执行FC-1 失败的节点-存在 kingbase 进程 以上操作指令全部执行且检查结果和表格中结果一致则说明集群部分节点故障,存活的节点中存在多个主机节 点。 集群有节点故障,剩余节点网络不正常。 例如 1 主 4 备,1 备机故障,剩余的 4 个节点,主节点和 3 备机网络分割,3 备机中会选举升主出现部分节点故 障-存活的节点中有主机-多主。 11 第 3 章 读写分离集群故障恢复 表 3.4.5: 部 分 节 点 故 障-存 活 节 点 中 没 有 主 机 FS005-SNF- ANP(Some node fault-alive no primary) 操 作 FS005-SNF-ANP 结果 指令 部分节点故障,且存活的节点中 FC-1 没有节点为主机。 部分节点-失败 部分节点-成功 其结果显示没有 primary,所有存活的节点都是 standby。 FC-2 执行FC-1 成功的节点,执行成功。 其结果中 Paused? 的状态为 yes 执行FC-1 失败的节点,执行失败。 FC-3 执行FC-1 失败的节点-不存在 kingbase 进程 执行FC-1 失败的节点-存在 kingbase 进程 以上操作指令全部执行且检查结果和表格中结果一致则说明集群部分节点故障,存活的节点中不存在主机。 集群主节点故障,集群备机节点升主失败,或者集群备机的 repmgrd 服务处于暂停状态 (此时执行 repmgr service status 发现 Paused? 为 yes) 时,会出现部分节点故障-存活的节点中没有主机的异常状态。 表 3.4.6: 部 分 节 点 故 障-故 障 节 点 中 有 主 机-单 主 FS006-SNFDSP(Some node fault-down single primary) FS006-SNF-DSP 操 作 结果 指令 部分节点故障,且故障的节点中只存 FC-1 在一个主机。 部分节点-失败 部分节点-成功 FC-3 执行FC-1 失败的节点-不存在 kingbase 进程 执行FC-1 失败的节点-存在 kingbase 进程 FC-7 执行FC-1 失败的节点中有 1 个节点的 data 目录中没有 standby.signal 文件 以上操作指令全部执行且检查结果和表格中结果一致则说明集群部分节点故障,故障的节点中存在 1 个主机。 集群主节点故障,剩余节点存活,会出现部分节点故障-故障节点中有主机现象。 以上操作指令全部执行且检查结果和表格中结果一致则说明集群部分节点故障,故障的节点中存在多个主机。 集群主机节点故障,备机升主后也故障,会出现部分节点故障-故障节点中有多个主机现象。 12 第 3 章 读写分离集群故障恢复 表 3.4.7: 无节点故障-双主/多主 FS008-NNF-MP(No node faultmulti primary) FS008-NNF-MP 操作指令 结果 无节点故障,但存活的节点中 FC-1 所有节点-成功 存在多个主机。 其结果显示多个 primary 节点,状态是 running 。或者显示 1 个 primary 状态是 running ,且 1 个或多个是 standby 但其状态是 running as primary。 FC-3 所有节点-存在 kingbase 进程 以上操作指令全部执行且检查结果和表格中结果一致则说明集群出现的双主,或多主。 集群主机和备机发生网络切割,备机选举升主,此时出现双主或多主。 3.4.1.2 故障确认操作指令 故障确认操作指令编码命名:FC-N(Fault Confirmation)。 FC-1: 在各节点上执行 repmgr cluster show 命令查询集群状态。 $bin_path/repmgr cluster show FC-2: 在各节点上执行 repmgr service status 命令查询 repmgrd 服务器状态。 $bin_path/repmgr service status FC-3: 在各节点上执行 ps -ef|grep kingbase 查看数据库进程是否存在。 ps -ef|grep kingbase FC-4: 在各节点上执行 ps -ef|grep repmgrd 查看 repmgrd 进程是否存在。 ps -ef|grep repmgrd FC-5: 在各节点上执行 ps -ef|grep kbha 查看 kbha 进程是否存在。 ps -ef|grep kbha FC-6: 在各节点上执行 ps -ef|grep sys_securecmdd 查看 sys_securecmdd 进程是否存在。 ps -ef|grep sys_securecmdd FC-7: 在各节点上检查 data 目录下是否存在 standby.signal 文件。 13 第 3 章 读写分离集群故障恢复 FC-8: 步骤 FC-1 如果能查询到结果,ksql -h 主机 ip -U system -d test 连接主机执行 sql 查看流复制状态。 连接数据库: $bin_path/ksql -h 主机 ip -U 数据库用户 –d 数据库名 查看流复制状态: select * from sys_stat_replication; 3.4.2 故障恢复 3.4.2.1 集群恢复思路 第一步、确认服务器状态,确保服务器状态正常情况下再进行集群恢复。 第二步、确认集群属于哪种异常状态。 第三步、备份现场 data 和日志。 第四步、根据异常状态选择集群恢复操作步骤。 3.4.2.2 集群典型异常场景恢复 异常场景详见章节: 集群异常状态场景 故障恢复步骤详见章节: 集群恢复操作指令 表 3.4.8: 集群典型异常场景恢复 异常场景 故障恢复步骤 故障恢复步骤 故障恢复步骤 recovery 设置 manual recovery 设置为 standby recovery 设置为 automatic 第一步:FR-2 第一步:FR-2 第一步:FR-2 第二步:FR-5 第二步:FR-5 第二步:FR-5 covery_level=0) 确认集群状态为正常状态 确认集群状态为正常状态 确认集群状态为正常状态 FS001-ANF-SP 集 群 能 够 自 动 启 动 主 库, 集群能够自动启动主库,主 集群能够自动启动主库,主 此场景会转换为 库能够自动恢复剩余备节 库能够自动恢复剩余备节 SNF-ASP, 恢复步骤请参考 点,等待集群恢复。 点,等待集群恢复。 FS003-SNF-ASP 的恢复步 确认集群状态为正常状态 确认集群状态为正常状态 FS001-ANF-SP (auto_cluster (auto_cluster _re- _re- covery_level=1) FS003- 骤。 见续表 14 第 3 章 读写分离集群故障恢复 表 3.4.8 – 续表 异常场景 FS002-ANF-MP 故障恢复步骤 故障恢复步骤 故障恢复步骤 recovery 设置 manual recovery 设置为 standby recovery 设置为 automatic 第一步:FR-1 第一步:FR-1 第一步:FR-1 第二步:启动确认的新主数 第二步:启动确认的新主数 第二步:启动确认的新主数 据库 据库 据库 $bin_path/ sys_ctl -D $bin_path/ sys_ctl -D $bin_path/ sys_ctl -D $data_path start $data_path start $data_path start 第三步:FR-3 第三步:等待备节点自动恢 第三步:等待故障节点自动 如 果FR-3 复 恢复 行FR-4 在 故 障 主 节 点 上, 或 自 动 如果自动恢复执行失败,执 第四步:FR-5 恢 复 失 败 的 备 节 点 上, 执 行FR-4 确认集群状态为正常状态 行FR-4 第四步:FR-5 第四步:FR-5 确认集群状态为正常状态 执 行 失 败, 执 确认集群状态为正常状态 FS003-SNF-ASP FS004-SNF-AMP 第 一 步: 故 障 节 点 执 行: 第一步:等待备节点自动恢 第一步:等待故障节点自动 FR-3 如果FR-3 执行失败, 复 恢复 执行FR-4 如果自动恢复执行失败,执 如果自动恢复执行失败,执 第二步:FR-5 行FR-4 如果有故障节点是 行 确认集群状态为正常状态 主机,执行FR-4 FR-4 第二步:FR-5 第二步:FR-5 确认集群状态为正常状态 确认集群状态为正常状态 第一步:FR-1 第一步:FR-1 第一步:FR-1 第二步:除新主机外所有节 第二步:除新主机外停止数 第二步:除新主机外停止数 点执行FR-3 如果FR-3 执 据库,等待备机自动恢复 据库,然后等待自动恢复 行失败,执行FR-4 第三步: $bin_path/ sys_ctl FR-5 $data_path stop $data_path stop 确认集群状态为正常状态 在 故 障 主 节 点 上, 或 自 动 如果自动恢复执行失败,执 恢 复 失 败 的 备 节 点 上, 执 行FR-4 行FR-4 第三步:FR-5 第三步:FR-5 确认集群状态为正常状态 -D $bin_path/ sys_ctl -D 确认集群状态为正常状态 见续表 15 第 3 章 读写分离集群故障恢复 表 3.4.8 – 续表 异常场景 故障恢复步骤 故障恢复步骤 故障恢复步骤 recovery 设置 manual recovery 设置为 standby recovery 设置为 automatic FS005-SNF-ANP & 第一步:启动故障的主机节 第一步:启动故障的主机节 第一步:启动故障的主机节 FS006-SNF-DSP 点 点 点 $bin_path/ sys_ctl -D $bin_path/ sys_ctl -D $bin_path/ sys_ctl -D $data_path start $data_path start $data_path start 第 二 步: 其 他 所 有 节 点 执 第二步:其他节点停止数据 第二步:其他节点停止数据 行FR-3 如果FR-3 执行失 库,等待备机自动恢复 库,然后等待自动恢复 败,执行FR-4 $bin_path/ sys_ctl 第三步:执行FR-5 确认集 $data_path stop $data_path stop 群状态为正常状态 如果自动恢复执行失败,执 如果自动恢复执行失败,执 行FR-4 如果有故障节点是 行FR-4 主机,执行FR-4 第三步:FR-5 第三步:FR-5 确认集群状态为正常状态 -D $bin_path/ sys_ctl -D 确认集群状态为正常状态 FS005-SNF-ANP & 第一步:FR-1 第一步:FR-1 第一步:FR-1 FS007-SNF-DMP 第二步:启动确认的新主数 第二步:启动确认的新主数 第二步:启动确认的新主数 据库 据库 据库 $bin_path/ sys_ctl -D $bin_path/ sys_ctl -D $bin_path/ sys_ctl -D $data_path start $data_path start $data_path start 第三步:FR-3 第三步:其他节点停止数据 第三步:其他节点停止数据 如果FR-3 执行失败,执行 库,等待备机自动恢复 库,然后等待自动恢复 FR-4 $bin_path/ sys_ctl 第四步:FR-5 $data_path stop $data_path stop 确认集群状态为正常状态 如果自动恢复执行失败,执 如果自动恢复执行失败,执 行FR-4 在故障主节点上, 行FR-4 执行FR-4 第四步:FR-5 第四步:FR-5 确认集群状态为正常状态 -D $bin_path/ sys_ctl -D 确认集群状态为正常状态 见续表 16 第 3 章 读写分离集群故障恢复 表 3.4.8 – 续表 异常场景 FS008-NNF-MP 故障恢复步骤 故障恢复步骤 故障恢复步骤 recovery 设置 manual recovery 设置为 standby recovery 设置为 automatic 第一步:FR-1 第一步:FR-1 第一步:FR-1 第二步:除新主机外所有节 第二步:除新主机外所有节 第二步:除新主机外所有节 点执行FR-3 如果FR-3 执 点停止数据库,等待备机自 点停止数据库,然后等待自 行失败,执行FR-4 第三步: 动恢复 动恢复 FR-5 $bin_path/ sys_ctl 确认集群状态为正常状态 $data_path stop $data_path stop 如果自动恢复执行失败,执 如果自动恢复执行失败,执 行FR-4 在故障主节点上, 行FR-4 执行FR-4 第三步:FR-5 第三步:FR-5 确认集群状态为正常状态 -D $bin_path/ sys_ctl -D 确认集群状态为正常状态 注意: 设置 auto_cluster_recovery_level=1 可以开启集群故障多级别自动恢复功能,此功能开启后只影响场景 FS001-ANF-SP 的恢复步骤,其他场景不受此功能影响。 3.4.2.3 集群恢复操作指令 故障恢复操作指令编码命名:FR-N(Fault Recovery) 3.4.2.3.1 FR-1: 出现多主时,判断谁是新主 时间线: 查看谁的时间线更新,时间线大的是新主机: 数据库运行中,select timeline_id from sys_control_checkpoint(); 数据库停止状态,查看控制文件 sys_controldata -D data 中 Latest checkpoint’s TimeLineID 后 的数值代表时间线。 WAL 日志位置 (LSN): lsn 位置大致能够代表用户插入数据多少,lsn 大的数据量更多,一般情况下数据量更多的是新主: 数据库运行中,select sys_current_wal_lsn(); 数据库停止状态,查看控制文件 sys_controldata -D data 中 Latest checkpoint location 后的数 值代表 checkpoint 的 lsn。 控制文件中记录的 checkpoint 的 lsn,一般比当前 lsn 要小,但差别不是太大。 17 第 3 章 读写分离集群故障恢复 数据量 (Database Size,Table Size): 一般情况下数据量更多的是新主。 查看数据库大小 ## 数据库字节数 bytes select sys_database_size(oid) from sys_database; ## 按照大小,自动选择对应单位,bytes/kB/MB/GB/TB select sys_size_pretty(sys_database_size(oid)) from sys_database; 查看表大小,每个表查看大小 该值仅代表对应表的数据文件大小(4KB 的整数倍),不是实际数据量多少,需要对每个数据 库、模式、表单独作查询。 ## 仅查看当前数据库中用户表的大小 select relname, sys_table_size(oid) from sys_class where oid > 16300 and relkind ='r'; select relname, sys_size_pretty(sys_table_size(oid)) from sys_class where oid > 16300 and relkind = 'r'; ## 仅查看当前数据库、当前模式(默认为 PUBLIC 模式)下用户表的大小 test-# \d+ ## 需要查询系统表大小,请单独指定系统表名/OID 来查询 select sys_table_size('relname'); 或者 select sys_table_size(oid); 3.4.2.3.2 FR-2: 一键启动集群 在某一个节点上执行 sys_monitor start 来一键启动集群。 $bin_path/sys_monitor.sh start 3.4.2.3.3 FR-3: 使用 repmgr node rejoin 恢复成集群备机 在故障的节点上执行停止数据库操作。 18 第 3 章 读写分离集群故障恢复 $bin_path/sys_ctl -D $data_path stop 在故障的节点上执行 rejoin 操作,重归集群。 $bin_path/repmgr -h 新主机 ip -U esrep -d esrep -p 数据库端口 node rejoin --force-rewind 3.4.2.3.4 FR-4: 重做备机 停止数据库: $bin_path/sys_ctl -D $data_path stop 该节点执行 standby clone 命令 (-F 参数会覆盖原有 data 目录): $bin_path/repmgr -h 新主机 ip -U esrep -d esrep -p 数据库端口 -D $data_path standby clone -F --fast- checkpoint 启动数据库: $bin_path/sys_ctl -D $data_path start 注册备机实例到集群 (-F 参数会强制注册): $bin_path/repmgr standby register -F 3.4.2.3.5 FR-5: 查询集群状态 查询集群状态查询到结果,正常状态为只有 1 个主机,且所有节点状态为 running。 $bin_path/repmgr cluster show 查询 repmgrd 服务状态查询到结果,正常状态为 Paused? 为 no。 $bin_path/repmgr service status 查询流复制状态正常状态为查询到所有备机信息。 $bin_path/ksql -h 主机 ip -U 数据库用户 –d 数据库名 select * from sys_stat_replication; 19 第 4 章 物理备份故障恢复 4 第 章 物理备份故障恢复 • 适用场景介绍 • 常见物理备份故障处理 4.1 适用场景介绍 在生产环境中,备份故障可能发生的主要场景如下: 表 4.1.1: 备份故障主要场景 场景 描述 sys_rman 配置错误 如: 初始化 repo_ip 未配置在 repo 节点本机。 系统参数错误 比如: remove_ipc 设定错误。 数据库参数错误 比如: share_buffer 设定错误。 OOM 内存不足 备份时出现内存不足(oom-killer 相关 rman 进程)。 Wal 日志归档错误 1) archive_mode 不为 ON; 2) archive_command 中的 repo_path 指定错误 (变 更)。 client_idle_timeout 配置错误 参数 client_idle_timeout 的配置性质为全局且参数值配 置过小。 4.2 常见物理备份故障处理 常见物理备份故障的恢复处理如下: 20 第 4 章 物理备份故障恢复 表 4.2.1: 常见物理备份故障处理 异常信息 原因分析 处理方法 ERROR:repo_ip must located in lo- 配置文件 sys_backup.conf 指定的 修改 sys_backup.conf 的 repo_ip 到 cal repo_ip 未配置在 repo 节点本机 repo 节点本机 ..parameters not varilable 系 数:re- 1) /etc/systemd/logind.conf 的 re- 等设定 move_ipc 修改为 NO; 统 参 move_ipc,share_buffer 错误 2) 修改/ etc/ sysctl.conf 中的 kernel.shm* 参数扩大共享内存值或者 将备份任务调整至业务闲时进行; / var/ log/ messages/出现 oom-killer oom 内存不足 扩充物理内存并重启服务器生效; 掉 rman 进程 或者将备份任务调整至业务闲时进 行; ./ DATA/ sys_log/*中出现 archive- 由于数据库参数设置不当: 修改 kignbase.conf 或者 es_rep.conf push 异常信息 1)archive_mode 不为 ON; 中的以下参数: 2)archive_command 中 的 1)archive_mode=ON; repo_path 指定错误 (变更) 导 2)repo_path 指定为正确的 repo 备 致 Wal 日志归档错误 份路径 3) 重启 kingbase 数据库 备份节点输出:Assert:[025] check 由于 client_idle_timeout 参数全局 关闭此参数或者升级数据库版本升 cancel !=NULL’failed. 性导致 级至 2021 年 10 月之后发布的版 本。相关版本对照请参阅:《KingbaseES 版本升级最佳实践》的附录 A 注意: 其他 (更多) 异常处理请参阅《KingbaseES 物理备份恢复工具手册》中的异常处理章节。 21 第5章 5 第 章 数据应急恢复 数据应急恢复 • 适用场景介绍 • 恢复数据矩阵 • 常用恢复实践操作 5.1 适用场景介绍 表 5.1.1: 数据应急恢复 5.2 场景 描述 表数据被误删除 delete from ; 表对象被误删除 drop table ; 数据库被误删除 drop database ; 数据文件(或 data 目录) 被误删除 服务器数据文件或者 data 目录被误删除 数据分叉或应用回退 想数据还原至之前某个时间点 数据块损坏 出现数据坏块 恢复数据矩阵 22 第5章 数据应急恢复 表 5.2.1: 恢复数据矩阵 备份方式 物理备份可用 归 档 在 线 walminer是 否 是否丢数据 操作方式 日 志 日 志 是 否 可 恢 是 否 是 否 可用 复 存在 存在 存在 存在 可用 是 否 1. 使用物理备份还原一个最新 不 可 是 否 用 不存 可用 是 是 用 不 存 参考:高可用工具使用手册-物 理备份恢复工具手册 在 不 可 的版本 恢复到物理备份 + 归档日志的 2. 启动数据库会自动执行 状态 PITR 恢复到物理备份 + 归档日志的 状态 是 恢复到物理备份的状态 是 否 在 逻辑备份可用 存在 存在 可用 1. 使用物理备份还原一个最新 的版本 参 考: 客 户 端 工 具- 不 可 是 恢复到逻辑备份的状态 KingbaseES 客户端应用参 考手册-sys_restore 用 2. 使用 WalMiner 解析需要的 不存 可用 是 在 恢复到物理备份 + 归档日志的 归档和在线日志 状态 参考:最佳实践-WalMiner 最 佳实践 不 可 是 用 恢复到物理备份 + 归档日志的 3. 导出解析出来的 SQL 结果 状态 4. 把 SQL 重新导入到刚还原 的数据库里 不 存 是 恢复到物理备份的状态 在 注意: 如果物理备份和逻辑备份都不存在则无法恢复数据。 23 第5章 5.3 数据应急恢复 常用恢复实践操作 5.3.1 RMAN 恢复命令 另请参阅: 有关 RMAN 恢复具体操作可参考《KingbaseES 物理备份恢复工具手册》的还原章节。 5.3.2 导出 walminer 表中数据 另请参阅: 有关 walminer 的相关操作可参考《WalMiner 日志逻辑解码工具使用指南》手册中的 WalMiner 接口使用介绍章 节。 WalMiner 日志逻辑解码工具使用指南 5.3.3 把 SQL 文件数据导入到表中 另请参阅: 有关 SQL 文件数据导入的相关操作可参考《KingbaseES ksql 工具用户指南及参考》。 5.3.4 数据块损坏恢复 数据库遇到外部故障、硬盘损坏或人为破坏等情况,可能会造成数据文件损坏,部分情况会造成数据完全无法读 取。 5.3.4.1 检查与发现数据损坏 从磁盘中读取数据或扫描磁盘数据时,均会触发数据块头损坏和数据块大小检测。校验和开启情况下,扫描时会 进行校验和检查。 数据块头损坏、数据块大小不合法或校验和检查失败时,系统会进行数据损坏报错。 5.3.4.2 应急恢复 针对数据块损坏的故障应急恢复,目前提供块自动恢复和使用物理备份进行恢复两种方式。 1) 对于主备 & 读写分离集群架构主库发生数据块损坏故障时,可以实现块自动恢复。 另请参阅: 24 第5章 数据应急恢复 块自动恢复的前提条件请参阅本文可自动恢复的故障场景 中的“数据损坏故障”相关说明。 块自动恢复的使用说明请参阅《金仓数据守护集群和读写分离集群使用手册》中的 在线自动块修复。 2) 对于单机或者集群架构中所有节点均无数据正常且能完整工作的备用节点时,须使用物理备份进行恢复。 另请参阅: 有关物理备份恢复的具体操作可参考《KingbaseES 物理备份恢复工具手册》的恢复章节。 5.3.4.3 数据抢救 需要进行数据抢救时,相关故障隔离参数如下。 5.3.4.3.1 ignore_checksum_failure 5.3.4.3.1.1 参数功能 • 未开启,数据库读取数据页面时,检查 checksums 失败后,报错,中断 • 开启后,检查到 checksum 失败时,忽略 error,报告一个 warning 并继续执行。读取出来的坏块页面的数据可 能丢失或被篡改,其他正常数据页面的数据不受影响。 5.3.4.3.1.2 参数影响范围 • 只有当 data_checksums 被启用时才有效。仅数据库实例读取页面时生效。 • 仅影响数据页面 checksum 失败的场景,如果数据页面头部被损坏,同样会报错中断,并不能输出数据内容。 • 对于大对象,toast 表本身没有 checksum 位,不受影响;但执行 toast 表的普通表,和非大对象一样,会受到 影响。 • 普通数据文件、vm 文件、fsm 文件都在 checksum 检查范围内,如果出现损坏会在检查时报错,可以忽略。但 读取数据时,不会检查 vm、fsm 文件。 • 索引文件的数据块也在影响范围内,但只有通过索引进行查询时才会读取并检查索引文件。重建索引即可恢复 正常。其他输出和检查逻辑同普通表一致。 5.3.4.3.1.3 使用 1. 配置文件 • guc 参数,默认不在目前的配置文件中出现。 • 可以将参数追加到 kingbase.conf 中,修改后 reload 生效,或者通过会话进行修改。 2. 开启参数 • 超级用户可以使用 set ignore_checksum_failure=on/off 的方式即可设置参数,生效范围为当前会话。 • 可以将参数追加到 kingbase.conf 中,通过 sys_ctl reload 或 restart 生效,生效范围为所有会话。 25 第5章 数据应急恢复 5.3.4.3.1.4 使用用例 1. 块校验和检验失败 表 testtable 原存储内容如下。 test=# select * from testtable; a | b ---+--1 | a 2 | b (2 rows) 此时表遭遇外部破坏,在读取表 testtable 时遇到如下报错 test=# select * from testtable; WARNING: ERROR: page verification failed, calculated checksum 51112 but expected 28384 invalid page in block 1 of relation base/16172/16390 设置开启参数 test=# set ignore_checksum_failure=on; SET 之后重新进行查找表。 test=# select * from testtable; WARNING: page verification failed, calculated checksum 51112 but expected 28384 a | b ---+--1 | a 2 | c (2 rows) 校验和失败以 warning 形式报告,语句继续执行,能够正常读出数据,但读出数据可能被篡改。 2. 块头数据损坏 块头数据损坏在读取时和校验和检验失败一致。 test=# select * from testtable; WARNING: ERROR: page verification failed, calculated checksum 13238 but expected 13237 invalid page in block 2 of relation base/16172/16390 通过 sys_checksums 进行检查能看到块头报错。 [test@admin release]$ ./bin/sys_checksums data -F sys_checksums: error: header verification failed in file "data/base/16172/16390", block 2 26 第5章 数据应急恢复 在这种情况下设置 ignore_checksum_failure 后仍然无法读取。程序报错 error,无法读取数据。 test=# set ignore_checksum_failure=on; SET test=# select * from testtable; ERROR: invalid page in block 2 of relation base/16172/16390 需要使用其他参数辅助恢复。 5.3.4.3.2 zero_damaged_pages 5.3.4.3.2.1 参数功能 • 未开启,出现任何形式的数据页面损坏,报错 ERROR,中断退出 • 开启后,如果出现数据页面损坏(包括页面头损坏),该页的所有内容都会被暂时擦除,暂时作为空白页。该 页对应的数据无法查询或更新,等同于丢失。除了在数据页面损坏时,使校验和未通过时不直接返回结束执 行,也可以在文件和页不完整时忽略错误。 • 此参数生效优先级 < 自动块修复 < ignore_checksum_failure 改动只在内存中进行。该选项不会主动把改动刷入磁盘,关掉选项并重读页面即可恢复。autovacuum 执行时会 默认关闭 zero_damaged_pages。 5.3.4.3.2.2 参数影响 以下操作会使得数据发生改变(风险): • 手动 vacuum full,开启该选项会把空白页刷入磁盘覆盖文件中的错误数据块。 • 在开启参数的情况下 insert、update 写入,有覆盖该页原本内容的风险。 • 将表 dump 下来、或者 select 到另外一张临时表,把原来的表删除重建 5.3.4.3.2.3 用户接口 1. 配置文件 • guc 参数,默认不在目前的配置文件中出现,只能通过会话进行修改。 2. 开启参数 • 超级用户可以使用 set zero_damaged_pages=on 的方式即可设置参数,生效范围为当前会话。 • 可以将参数追加到 kingbase.conf 中,通过 sys_ctl reload 或 restart 生效,生效范围为所有会话。 27 第5章 数据应急恢复 5.3.4.3.2.4 使用用例 1. 块校验和检验失败 表 testtable 原存储内容如下。 test=# select count(*) from testtable; count ------500 (1 row) 此时表遭遇外部破坏,在读取表 testtable 时遇到如下报错 test=# select count(*) from testtable; WARNING: ERROR: page verification failed, calculated checksum 10488 but expected 10489 invalid page in block 1 of relation base/16172/16400 设置开启参数 test=# set zero_damaged_pages=on; SET 之后重新进行查找。 test=# select count(*) from testtable; WARNING: page verification failed, calculated checksum 10488 but expected 10489 WARNING: invalid page in block1 of relation base/16172/16400; zeroing out page count ------226 (1 row) 错误块被清零处理,其他块可以正常读取。错误块中存储的数据丢失。 2. 块头损坏 表 testtable 原存储内容如下。 test=# select count(*) from testtable; count ------2726 (1 row) 此时表遭遇外部破坏,在读取表 testtable 时遇到报错 28 第5章 数据应急恢复 test=# select count(*) from testtable; ERROR: invalid page in block 2 of relation base/16172/16400 通过 sys_checksums 进行检查能看到块头报错。 [test@admin release]$ ./bin/sys_checksums data -F sys_checksums: error: header verification failed in file "data/base/16172/16400", block 2 设置开启参数 test=# set zero_damaged_pages=on; SET 之后重新进行查找。 test=# select count(*) from testtable; WARNING: invalid page in block2 of relation base/16172/16400; zeroing out page count ------2500 (1 row) 错误块被清零处理,其他块可以正常读取。错误块中存储的数据丢失。 29 版权声明 版权声明 北京人大金仓信息技术股份有限公司(简称:人大金仓)版权所有,并保留对本手册及本声明的一切权利。 未得到人大金仓的书面许可,任何人不得以任何方式或形式对本手册内的任何部分进行复制、摘录、备份、修 改、传播、翻译成其他语言、将其全部或部分用于商业用途。 免责声明 本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任何通 知或者提示的情况下对手册内容进行修改的权利。 本手册仅作为使用指导,人大金仓在编写本手册时已尽力保证其内容准确可靠,但并不确保手册内容完全没有错 误或遗漏,本手册中的所有信息也不构成任何明示或暗示的担保。 技术支持 • 人大金仓官方网站:http://www.kingbase.com.cn/ • 人大金仓文档中心:http://help.kingbase.com.cn/ • 全国服务热线:400-601-1188 • 人大金仓技术支持与反馈信箱:support@kingbase.com.cn 30 服务周期承诺 服务周期承诺 由于市场需求在不断变化,技术创新和发展的进程不断加剧,产品的版本更迭不可避免。人大金仓对于产品版本 生命周期的有效管理,有助于您提前规划项目,更好地从产品服务终止上过渡。 表 1: KingbaseES 产品生命周期里程碑 关键里程碑点 定义 产品发布日期 产品正式发布版本,即 GA(general availability)版本的发布日期。 停止销售日期 正式停止销售的日期,版本停止接受订单日。该日之后,产品将不再销售。 停止功能升级日期 在该日期之后,不再提供新特性和新硬件支持。但依旧提供错误修复、安全修复、功 能维护等服务。 停止功能维护日期 在该日期之后,不再维护功能,修复问题。但依旧提供安全修复等服务 停止安全维护日期 在该日期之后,不再发布补丁版本修复中高风险漏洞,仅提供有限的支持。 产品服务终止日期 停止提供产品服务和支持的日期。包括软件维护版本,缺陷修复,以及针对该产品的 所有服务支持(包括服务热线和远程/现场支持)。 服务周期策略 金仓数据库管理系统 KingbaseES 产品确保以下的服务周期: 1)产品自发布之日起至产品停止功能升级(包含新特性、新硬件支持)之日不少于 5 年。 2)产品停止功能升级之日起至产品停止功能维护(主要包括问题修复)之日不少于 4 年。 3)产品功能维护停止之日起至产品停止安全维护(包括中高风险漏洞修复)之日不少于 2 年。 服务终止策略 金仓数据库管理系统 KingbaseES 产品确保在销售后,至少提供 6 年的服务支持。 注意: 人大金仓将会综合各方因素来确定产品服务终止日期。并将在实际产品服务终止日期之前至少 90 天,通过公 31 服务周期承诺 开方式宣布产品服务终止日期。 32

相关文章