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):只有在本地和远程磁盘都确定写入已完成时,主节点才会认为 ...
随机推荐
- Vuex中的核心方法
Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.每一个Vuex应用的核心就是 ...
- Java并发编程实例--10.使用线程组
并发API提供的一个有趣功能是可以将多个线程组成一个组. 这样我们就能将这一组线程看做一个单元并且提供改组内线程对象的读取操作.例如 你有一些线程在执行同样的任务并且你想控制他们,不考虑有多少个线程仍 ...
- 基于javaweb的个人音乐网站
一 .需求 ① 前台用户: 用户注册和登录以及完善个人资料: 添加好友功能(用户之间可通过发送好友申请添加好友,被添加人可以同意或拒绝好友申请): 下载歌曲功能(当用户点击下载按钮时,就能下载相对应的 ...
- 【Python语法糖】闭包和装饰器
Python闭包和装饰器 参考: https://zhuanlan.zhihu.com/p/453787908 https://www.bilibili.com/video/BV1JW411i7HR/ ...
- 【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
问题描述 将 JS项目打包为静态文件后,通过 FTP 上传到 App Service For Linux 的 /home/site/wwwroot文件夹中.但打开App Service URL 后依旧 ...
- Dockerfile编写(备份)
1-使用#注释 2-Dockerfile 主体内容分为四部分:基础镜像信息. 维护者信息. 镜像操作指令和容器启动时执行指令 简单示例: FROM xxx:latest #基于xxx:late ...
- Apache Hudi 在 vivo 湖仓一体的落地实践
作者:vivo 互联网大数据团队 - Xu Yu 在增效降本的大背景下,vivo大数据基础团队引入Hudi组件为公司业务部门湖仓加速的场景进行赋能.主要应用在流批同源.实时链路优化及宽表拼接等业务场景 ...
- idea技巧-自定义后缀补全
Idea技巧-Postfix Completion 在idea中可以使用.xxx进行后缀补全 比如.sout 如何自定义后缀补全? 比如.log 在idea中打开设置 File | Settings ...
- 摆脱鼠标操作 - vscode - vim - 官方说明文档 github上的,防止打不开,这里发一个
Key - command done - command done with VS Code specific customization ️ - some variations of the com ...
- if (ctx.ifTo(ctx.property, next)) return
if (ctx.ifTo(ctx.property, next)) return if (ctx.ifGoto(ctx.property, 'functionName')) return 试试 a & ...