案例说明:

数据库下的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故障案例的更多相关文章

  1. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  2. KingbaseES V8R6单实例外部备份故障案例

    案例说明: 在KingbaseES V8R6单实例环境,配置外部备份服务器使用sys_backup.sh物理备份时,出现以下"WAL segment xxx was not archived ...

  3. PHM与智慧运维落地实践案例集 — 机车运用数据智能诊断系统正式上线

    2019年9月20日,经过为期一个多月的紧张测试,北京润科通用技术有限公司为中车某机车单位倾力打造的“机车运用数据智能诊断系统”正式上线运行,标志着润科通用在轨道交通智慧运维领域的又一案例成功落地. ...

  4. 线上 S1 故障是什么, 线上 S1 故障, 运维故障分级, 运维, 故障分级, P1 级别故障, 故障, P1 , S1

    线上 S1 故障是什么 线上 S1 故障, 运维故障分级, 运维, 故障分级, P1 级别故障, 故障, P1 , S1 故障复盘 https://time.geekbang.org/column/a ...

  5. IT Operations(IT 运营),运维的更价值化认识

    一直想努力向别人(甚至包括从事运维的人)解释清楚什么是运维,发现很难! 6月20号,在InfoQ高效运维群里面,对运维创业做了一次激烈的讨论,很自然地,过程中不可避免的谈到运维苦逼和运维无法产品化的问 ...

  6. 从零起步做到Linux运维经理, 你必须管好的23个细节

    “不想成为将军的士兵,不是好士兵”-拿破仑 如何成为运维经理? 一般来说,运维经理大概有两种出身:一种是从底层最基础的维护做起,通过出色的维护工作,让公司领导对这个人非常认可,同时对Linux运维工作 ...

  7. 从零起步做到Linux运维经理,你必须管好的23个细节

    不想成为将军的士兵,不是好士兵-拿破仑 如何成为运维经理?成为运维经理需要什么样的能力?我想很多运维工程师都会有这样的思考和问题. 如何成为运维经理.一般来说,运维经理大概有两种出身,一种是从底层最基 ...

  8. 破解IT运维成本困境,专业化分工是妙方

    随着IT建设的不断深入和发展,IT运维成为了企业运营的必需品.许多企业的IT预算相比于去年虽然有了很大的提高,但总体来说还是非常紧张.上周,我参加了一个CIO沙龙研讨会,现场调查问到目前CIO在IT运 ...

  9. 如何将运维的报警做成运营的报警--Java后端架构

    转:http://mp.weixin.qq.com/s?__biz=MzI4OTU3ODk3NQ==&mid=2247483970&idx=1&sn=2a00acfb25f0c ...

  10. Linux 运维面试问题总结

    Linux 运维面试问题总结 1.详细描述mysql主从复制的方式?(类似跟DRBD高可用的协议类型) 答: (1)同步复制(C协议:sync):只有在本地和远程磁盘都确定写入已完成时,主节点才会认为 ...

随机推荐

  1. Springboot+Bootstrap实现增删改查实战

    说明 最近有朋友问我有没有Springboot+Bootstrap实现增删改查的DEMO,当时没有,现在他来了! 实现效果 代码地址 https://gitee.com/indexman/bootst ...

  2. python第二章pta习题总结

    chapter2 一.选择填空判断部分 1. C语言中,变量变的是内存空间中的值,不变的是地址: Python中,变量变的是地址,不变的是内存空间中的值. 2. 3.bool('False') 的返回 ...

  3. ysoserial CommonsCollections1 分析

    /* Gadget chain: ObjectInputStream.readObject() AnnotationInvocationHandler.readObject() Map(Proxy). ...

  4. OsgEarth开发笔记(二):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(中)

    上一篇:<OsgEarth开发笔记(一):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(上)>下一篇:敬请期待-   前言  上一篇编译了osg和osgCurl ...

  5. 【LeetCode栈与队列#06】前K个高频元素(TopK问题),以及pair、priority_queue的使用

    前 K 个高频元素 力扣题目链接(opens new window) 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = ...

  6. MySQL 数据库死锁排查

    死锁排查方法 查看进程状态 show processlist; 查看行锁的状态 show status like 'InnoDB_row_lock%'; 查询是否有死锁 show engine inn ...

  7. 【Azure Redis 缓存】Redis性能指标之Server Load

    Server Load描述 在Redis的官方介绍中,Server Load指标是Redis 服务器忙于处理消息并且非空闲等待消息的周期百分比. 如果此计数器达到 100,则意味着 Redis 服务器 ...

  8. 新零售SaaS架构:订单履约系统的概念模型设计

    订单履约系统的概念模型 订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息.下单日期.所购买的商品或服务明细.价格.数量.收货地址以及支付方式等详细信息. 子订单:为了更高效地进行履约,大订单 ...

  9. 接口自动化有多少case?覆盖率是多少?执行完需要多久?

    case根据接口数量而定,比如两百个接口,大概有5000个用例,一个接口大概有25到30个用例,一个接口大概200ms左右响应时间 覆盖率能达到95%以上,有时候可以达到百分之百,所有接口自动化用例执 ...

  10. 字典嵌套列表 与 列表嵌套字典 导出为csv 的方法

    字典嵌套列表 导出csv {'rank': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '1 ...