KingbaseES V8R6 运维案例 -- sys_filenode.map故障案例
案例说明:
数据库下的sys_filenode.map文件被破坏,导致此数据库无法连接访问。

Nail表(内核系统表)Relfilenode的存储机制:
经过研究发现,在数据目录里存在着pg_filenode.map文件,如下所示。
#数据库下pg_filenode.map文件
movead@movead-PC:/h2/pgpgpg/data/base/12835$ ll pg_filenode.map
-rw-------+ 1 movead movead 512 12月 31 15:10 pg_filenode.map
movead@movead-PC:/h2/pgpgpg/data/base/12835$
#global下pg_filenode.map文件
movead@movead-PC:/h2/pgpgpg/data/global$ ll pg_filenode.map
-rw-------+ 1 movead movead 512 12月 31 15:10 pg_filenode.map
movead@movead-PC:/h2/pgpgpg/data/global$
在global目录下的pg_filenode.map文件里存储了shared表的oid和relfilenode的映射关系,12835目录下存储了OID为12835的数据库里nail表的oid和relfilenode的映射关系。
1、查看当前cluster下的sys_filenode.map文件
[root@node102 data]# find ./ -name *filenode.map
./global/sys_filenode.map
./base/1/sys_filenode.map
./base/12144/sys_filenode.map
./base/12145/sys_filenode.map
./base/12146/sys_filenode.map
./base/16384/sys_filenode.map
2、查看sys_filenode.map文件内容
[root@node102 base]# cd 16384/
[root@node102 16384]# ls -lh sys_filenode.map
-rw------- 1 kingbase kingbase 512 Feb 1 10:56 sys_filenode.map
[root@node102 16384]# mv sys_filenode.map sys_filenode.map.bk
#查看oid=16384数据库的sys_filenode.map
[root@node102 data]# cd base/16384/
[root@node102 16384]# ls -lh sys_filenode.map
-rw------- 1 kingbase kingbase 512 Feb 1 10:56 sys_filenode.map
[root@node102 16384]# hexdump sys_filenode.map
0000000 2717 0059 0016 0000 04eb 0000 04eb 0000
0000010 04e1 0000 04e1 0000 04e7 0000 04e7 0000
0000020 04df 0000 04df 0000 0d80 0000 0d80 0000
0000030 1041 0000 1041 0000 1042 0000 1042 0000
0000040 0b14 0000 0b14 0000 0b15 0000 0b15 0000
0000050 104b 0000 104b 0000 104c 0000 104c 0000
0000060 0a62 0000 0a62 0000 0a63 0000 0a63 0000
0000070 0a66 0000 0a66 0000 0a67 0000 0a67 0000
0000080 0d7f 0000 0d7f 0000 0c5c 0000 0c5c 0000
0000090 0c0d 0000 0c0d 0000 0a82 0000 0a82 0000
00000a0 0a83 0000 0a83 0000 0a8f 0000 0a8f 0000
00000b0 0a90 0000 0a90 0000 0000 0000 0000 0000
00000c0 0000 0000 0000 0000 0000 0000 0000 0000
*
00001f0 0000 0000 0000 0000 da4b a3db 0000 0000
0000200
#查看oid=12146数据库的sys_filenode.map
[root@node102 data]# cd base/12146/
[root@node102 12146]# ls -lh sys_filenode.map
-rw------- 1 kingbase kingbase 512 Feb 1 10:35 sys_filenode.map
[root@node102 12146]# hexdump sys_filenode.map
0000000 2717 0059 0016 0000 04eb 0000 04eb 0000
0000010 04e1 0000 04e1 0000 04e7 0000 04e7 0000
0000020 04df 0000 04df 0000 0d80 0000 0d80 0000
0000030 1041 0000 1041 0000 1042 0000 1042 0000
0000040 0b14 0000 0b14 0000 0b15 0000 0b15 0000
0000050 104b 0000 104b 0000 104c 0000 104c 0000
0000060 0a62 0000 0a62 0000 0a63 0000 0a63 0000
0000070 0a66 0000 0a66 0000 0a67 0000 0a67 0000
0000080 0d7f 0000 0d7f 0000 0c5c 0000 0c5c 0000
0000090 0c0d 0000 0c0d 0000 0a82 0000 0a82 0000
00000a0 0a83 0000 0a83 0000 0a8f 0000 0a8f 0000
00000b0 0a90 0000 0a90 0000 0000 0000 0000 0000
00000c0 0000 0000 0000 0000 0000 0000 0000 0000
*
00001f0 0000 0000 0000 0000 da4b a3db 0000 0000
0000200
在两个数据库下文件内容相同:

3、复现sys_filenode.map文件故障
prod=# select oid,datname from pg_database where oid=16384;
oid | datname
-------+---------
16384 | prod
(1 row)
#模拟sys_filenode.map文件故障
[root@node102 base]# cd 16384/
[root@node102 16384]# ls -lh sys_filenode.map
-rw------- 1 kingbase kingbase 512 Feb 1 10:56 sys_filenode.map
[root@node102 16384]# mv sys_filenode.map sys_filenode.map.bk
[kingbase@node102 bin]$ ./ksql -U system test -p 54322
ksql (V8.0)
Type "help" for help.
test=# \c prod
FATAL: could not open file "base/16384/sys_filenode.map": No such file or directory
Previous connection kept
----如上所示,数据库prod连接失败,但其他数据库连接正常。
4、sys_filenode.map文件故障处理
Tips:
从前面的查看sys_filenode.map内容的操作看,其他数据库的文件和prod库下的文件内容一致,尝试从其他数据库拷贝文件到prod数据目录下。
1)拷贝sys_filenode.map文件
[root@node102 base]# cd 12146
[root@node102 12146]# cp sys_filenode.map ../16384/
[root@node102 12146]# ls -lh ../16384/sys_filenode.map
-rw------- 1 root root 512 Feb 8 14:48 ../16384/sys_filenode.map
[root@node102 12146]# chown kingbase.kingbase ../16384/sys_filenode.map
[root@node102 12146]# ls -lh ../16384/sys_filenode.map
-rw------- 1 kingbase kingbase 512 Feb 8 14:48 ../16384/sys_filenode.map
2)访问prod数据库
test=# \c prod
You are now connected to database "prod" as user "system".
prod=# \d
List of relations
Schema | Name | Type | Owner
--------+-------------------------+-------+--------
public | sys_stat_statements | view | system
public | sys_stat_statements_all | view | system
public | t1 | table | system
public | t2 | table | system
public | t3 | table | system
public | t4 | table | system
public | t5 | table | system
public | user01 | table | system
(8 rows)
[kingbase@node102 bin]$ ./ksql -U system test -p 54322
ksql (V8.0)
Type "help" for help.
test=# \c prod
You are now connected to database "prod" as user "system".
prod=# \d
List of relations
Schema | Name | Type | Owner
--------+-------------------------+-------+--------
public | sys_stat_statements | view | system
public | sys_stat_statements_all | view | system
public | t1 | table | system
public | t2 | table | system
public | t3 | table | system
public | t4 | table | system
public | t5 | table | system
public | user01 | table | system
(8 rows)
---如上所示,prod数据库可以正常访问。
5、总结
1)对于sys_filenode.map文件的故障,在数据库下的sys_filenode.map文件故障,可以导致当前数据库无法访问,如果其他库文件内容和故障库下的文件内容一致,可以通过copy解决;
2)对于global下sys_filenode.map会造成整个数据库无法连接访问,一般可以尝试通过最近物理备份恢复。
KingbaseES V8R6 运维案例 -- sys_filenode.map故障案例的更多相关文章
- 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操
前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...
- KingbaseES V8R6单实例外部备份故障案例
案例说明: 在KingbaseES V8R6单实例环境,配置外部备份服务器使用sys_backup.sh物理备份时,出现以下"WAL segment xxx was not archived ...
- PHM与智慧运维落地实践案例集 — 机车运用数据智能诊断系统正式上线
2019年9月20日,经过为期一个多月的紧张测试,北京润科通用技术有限公司为中车某机车单位倾力打造的“机车运用数据智能诊断系统”正式上线运行,标志着润科通用在轨道交通智慧运维领域的又一案例成功落地. ...
- 线上 S1 故障是什么, 线上 S1 故障, 运维故障分级, 运维, 故障分级, P1 级别故障, 故障, P1 , S1
线上 S1 故障是什么 线上 S1 故障, 运维故障分级, 运维, 故障分级, P1 级别故障, 故障, P1 , S1 故障复盘 https://time.geekbang.org/column/a ...
- IT Operations(IT 运营),运维的更价值化认识
一直想努力向别人(甚至包括从事运维的人)解释清楚什么是运维,发现很难! 6月20号,在InfoQ高效运维群里面,对运维创业做了一次激烈的讨论,很自然地,过程中不可避免的谈到运维苦逼和运维无法产品化的问 ...
- 从零起步做到Linux运维经理, 你必须管好的23个细节
“不想成为将军的士兵,不是好士兵”-拿破仑 如何成为运维经理? 一般来说,运维经理大概有两种出身:一种是从底层最基础的维护做起,通过出色的维护工作,让公司领导对这个人非常认可,同时对Linux运维工作 ...
- 从零起步做到Linux运维经理,你必须管好的23个细节
不想成为将军的士兵,不是好士兵-拿破仑 如何成为运维经理?成为运维经理需要什么样的能力?我想很多运维工程师都会有这样的思考和问题. 如何成为运维经理.一般来说,运维经理大概有两种出身,一种是从底层最基 ...
- 破解IT运维成本困境,专业化分工是妙方
随着IT建设的不断深入和发展,IT运维成为了企业运营的必需品.许多企业的IT预算相比于去年虽然有了很大的提高,但总体来说还是非常紧张.上周,我参加了一个CIO沙龙研讨会,现场调查问到目前CIO在IT运 ...
- 如何将运维的报警做成运营的报警--Java后端架构
转:http://mp.weixin.qq.com/s?__biz=MzI4OTU3ODk3NQ==&mid=2247483970&idx=1&sn=2a00acfb25f0c ...
- Linux 运维面试问题总结
Linux 运维面试问题总结 1.详细描述mysql主从复制的方式?(类似跟DRBD高可用的协议类型) 答: (1)同步复制(C协议:sync):只有在本地和远程磁盘都确定写入已完成时,主节点才会认为 ...
随机推荐
- MySQL5.7的账号回收权限
因MySQL无排除表权限功能,测试隔离表回收权限以下方案: 1,代理账号(角色)方案 方案:创建一个代理账号(角色),对库的800多张表逐个赋权,58张隔离表赋只读,其他30多个账号绑定到这个代理账号 ...
- 【Android逆向】反调试绕过(nop 绕过)
1. 这是看雪上的一个题目,要求显示出 it is success https://www.kanxue.com/work-task_read-800648.htm 第三题 2. apk 安装到手机, ...
- Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 并发与并行的区别---python
并发与并行的区别 Erlang 之父 Joe Armstrong 用一张5岁小孩都能看懂的图解释了并发与并行的区别 并发是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机 如果是串行,一个 ...
- 简单配置Sql专家云
一.实例配置 1.添加实例 点击全面诊断实例配置,右上角点击添加. 2.填写实例信息 根据下图填写对应的信息,连接测试成功后点击保存. 3.添加完成 4.修改实例 找到对应的实例,点击下图蓝色框修改即 ...
- Tiktok api接口 获取视频列表、用户详情,视频无水印数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Tiktok数据采集API,供用户按需调用. 接口使用详情请参考Tiktok接口文档 接口列 ...
- php本地上传文件类
/** * Class UploadFile * @author fengzi */ class UploadFile { public $error = array(); //上传前的error信息 ...
- 借助 Terraform 功能协调部署 CI/CD 流水线-Part 2
在第一部分的文章中,我们介绍了3个步骤,完成了教程的基础配置: 使用 Terraform 创建 AWS EKS Infra 在 EKS 集群上部署 ArgoCD 及其依赖项 设置 Bitbucket ...
- [MAUI] 混合开发概念
混合开发的概念是相对与原生开发来说的:App不直接运行原生程序,而是在原生程序中运行一个Web程序,原生程序中包含Web运行时,用于承载Web页面.暂且将原生应用称之为Web容器,Web容器应该能 ...
- isNumber 数字正则校验 表达式
isNumber 数字正则校验 表达式 isNumber(value) { return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/).t ...