首页 > 其他分享 >PG重建控制文件

PG重建控制文件

时间:2024-10-03 18:20:37浏览次数:9  
标签:文件 postgres Aug -- checkpoint Latest pg 重建 PG


1. 工具
	a. pg10版本以前使用pg_resetxlog工具
	b. pg10及以后版本pg_resetwal工具
2. 命令语法
Usage:
  pg_resetwal [OPTION]... DATADIR

Options:
  -c, --commit-timestamp-ids=XID,XID
                                   set oldest and newest transactions bearing
                                   commit timestamp (zero means no change)
 [-D, --pgdata=]DATADIR            data directory
  -e, --epoch=XIDEPOCH             set next transaction ID epoch
  -f, --force                      force update to be done
  -l, --next-wal-file=WALFILE      set minimum starting location for new WAL
  -m, --multixact-ids=MXID,MXID    set next and oldest multitransaction ID
  -n, --dry-run                    no update, just show what would be done
  -o, --next-oid=OID               set next OID
  -O, --multixact-offset=OFFSET    set next multitransaction offset
  -u, --oldest-transaction-id=XID  set oldest transaction ID
  -V, --version                    output version information, then exit
  -x, --next-transaction-id=XID    set next transaction ID
      --wal-segsize=SIZE           size of WAL segments, in megabytes
  -?, --help                       show this help, then exit
3. 重建控制具体操作
	a. 模拟pg_control文件丢失
	[postgres@pg15tar global]$ mv pg_control pg_control.bak
	[postgres@pg15tar global]$ pg_ctl start
	waiting for server to start....postgres: could not find the database system
	Expected to find it in the directory "/u01/app/postgresql/pgdata",
	but could not open file "/u01/app/postgresql/pgdata/global/pg_control": No such file or directory
	 stopped waiting
	pg_ctl: could not start server
	Examine the log output.
	b. 获取-l参数
	-l XLOGFILE:  force minimum WAL starting location for new transaction log(XLOGFILE强制新事务日志的最小WAL起始位置)
	定位办法:pg_wal下面创建的最大的日志文件,编号+1
	
	[postgres@pg15tar pgdata]$ ll pg_wal
	total 114712
	-rw------- 1 postgres postgres       41 Aug  4 12:46 00000002.history
	-rw------- 1 postgres postgres       93 Aug  4 12:46 00000003.history
	-rw------- 1 postgres postgres      348 Aug  4 12:46 0000000400000000000000AF.00000028.backup
	-rw------- 1 postgres postgres      145 Aug  5 08:27 00000004.history
	-rw------- 1 postgres postgres 16777216 Aug  5 12:09 0000000500000000000000B1
	-rw------- 1 postgres postgres 16777216 Aug  4 12:46 0000000500000000000000B2
	-rw------- 1 postgres postgres 16777216 Aug  4 12:46 0000000500000000000000B3
	-rw------- 1 postgres postgres 16777216 Aug  4 12:46 0000000500000000000000B4
	-rw------- 1 postgres postgres 16777216 Aug  4 12:46 0000000500000000000000B5
	-rw------- 1 postgres postgres 16777216 Aug  4 12:46 0000000500000000000000B6
	-rw------- 1 postgres postgres 16777216 Aug  5 08:27 0000000500000000000000B7
	-rw------- 1 postgres postgres      197 Aug  5 11:02 00000005.history
	drwx------ 2 postgres postgres     4096 Aug  5 12:09 archive_status
	
	那么这里的-l=0000000500000000000000B8 (编号+1)
	c. 获取-O参数
	-O OFFSET: set next multitransaction offset
	在pg_multixact/members下面,取最大值加1然后乘以65536, 转换成16进制,然后在末尾添加4个0
	
	#步骤
	*进入相应目录
	cd $PGDATA/pg_multixact/memebers/
	
	*查看文件
	[postgres@pg15tar members]$ ll
	-rwx------ 1 postgres postgres 8192 Aug  4 12:46 0000
	
	*计算
	(0+1)*65536=65536
	65536转换成16进制为10000
	
	那么-O =0x100000000
	d. 获取-m
	-m=MXID:MXID set next and oldest multitransaction ID
	zai pg_multixact/offsets下面,找到最大的文件编号,+1(文件编号+1) 后面跟上4个0
	
	#步骤
	*进入相应目录
	cd $PGDATA/pg_multixact/offsets
	
	*查看文件
	[postgres@pg15tar offsets]$ ll
	-rwx------ 1 postgres postgres 8192 Aug  5 11:02 0000
	
	*计算结果
	-m=0x00010000
	e. 获取-x
	-x XID :set next transaction ID
	在pg_xact下面,找到最大的文件编号,+1后面跟上5个0
	
	步骤
	*进入相应目录
	cd $PGDATA/pg_xact
	
	*查看当前文件
	[postgres@pg15tar pg_xact]$ ll
	-rwx------ 1 postgres postgres 8192 Aug  5 11:02 0000
	
	*计算-x值
	-x=0x000100000
	f. 重建控制文件
	cd $PGDATA/global
	touch pg_control
	
	[postgres@pg15tar global]$ pg_resetwal -l 0000000500000000000000B8 -O 0x100000000 -m 0x00010000,0x00010000 -x 0x000100000 -f $PGDATA
	pg_resetwal: warning: pg_control exists but is broken or wrong version; ignoring it
	Write-ahead log reset
	g. 启动数据库
	pg_ctl start
	
	[postgres@pg15tar global]$ pg_controldata
	pg_control version number:            1300
	Catalog version number:               202209061
	Database system identifier:           7399511071694827642
	Database cluster state:               in production
	pg_control last modified:             Mon 05 Aug 2024 12:45:14 PM CST
	Latest checkpoint location:           0/B8000028
	Latest checkpoint's REDO location:    0/B8000028
	Latest checkpoint's REDO WAL file:    0000000500000000000000B8
	Latest checkpoint's TimeLineID:       5
	Latest checkpoint's PrevTimeLineID:   5
	Latest checkpoint's full_page_writes: off
	Latest checkpoint's NextXID:          0:1048576
	Latest checkpoint's NextOID:          10000
	Latest checkpoint's NextMultiXactId:  65536
	Latest checkpoint's NextMultiOffset:  0
	Latest checkpoint's oldestXID:        3
	Latest checkpoint's oldestXID's DB:   0
	Latest checkpoint's oldestActiveXID:  0
	Latest checkpoint's oldestMultiXid:   65536
	Latest checkpoint's oldestMulti's DB: 0
	Latest checkpoint's oldestCommitTsXid:0
	Latest checkpoint's newestCommitTsXid:0
	Time of latest checkpoint:            Mon 05 Aug 2024 12:42:05 PM CST
	Fake LSN counter for unlogged rels:   0/3E8
	Minimum recovery ending location:     0/0
	Min recovery ending loc's timeline:   0
	Backup start location:                0/0
	Backup end location:                  0/0
	End-of-backup record required:        no
	wal_level setting:                    replica
	wal_log_hints setting:                off
	max_connections setting:              100
	max_worker_processes setting:         8
	max_wal_senders setting:              10
	max_prepared_xacts setting:           0
	max_locks_per_xact setting:           64
	track_commit_timestamp setting:       on
	Maximum data alignment:               8
	Database block size:                  8192
	Blocks per segment of large relation: 131072
	WAL block size:                       8192
	Bytes per WAL segment:                16777216
	Maximum length of identifiers:        64
	Maximum columns in an index:          32
	Maximum size of a TOAST chunk:        1996
	Size of a large-object chunk:         2048
	Date/time type storage:               64-bit integers
	Float8 argument passing:              by value
	Data page checksum version:           0
	Mock authentication nonce:            0000000000000000000000000000000000000000000000000000000000000000

标签:文件,postgres,Aug,--,checkpoint,Latest,pg,重建,PG
From: https://blog.51cto.com/ablewang/12167789

相关文章

  • SpringBoot项目使用yml文件链接数据库异常
    SpringBoot使用properties连接数据库时没有出现问题SpringBoot使用yml连接数据库时出现:UnabletoconnecttoRedis并在报错信息中出现:发现是用户或者密码出现问题通过查询知道yml是区分数据类型的,所以如果用户名或者密码是数字的话,就要注意将密码用双引号括起来,将其识别为......
  • GoogLeNet训练CIFAR10[Pytorch+训练信息+.pth文件]
    0引言GoogLeNet,它是一种深度卷积神经网络,由Google研究人员在2014年提出,用于图像识别任务。CIFAR-10是一个常用的图像识别数据集,包含10个类别,每个类别有6000张32x32的彩色图像。本文使用Pycharm及Pytorch框架搭建GoogLeNet神经网络框架,使用CIFAR10数据集训练模型。笔者查阅资......
  • linux系统下修改文件夹目录权限-chmod
    很多人开始接触Linux时都很头痛Linux的文件权限问题。这里告诉大家如何修改Linux文件-文件夹权限。以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:1.打开终端。输入su2.接下来会要你输入密码,输入你的root密码。3.假设我的文件夹在主目录里,地址为 ......
  • gz文件查看,syslog系统压缩的
    .gz文件是使用gzip压缩的文件,而不是tar打包的归档文件,所以你不能使用tar来解压缩它。要查看或解压缩.gz文件,应该使用gunzip或zcat工具。如果你想解压并查看syslog.7.gz,可以使用以下方法:查看.gz文件的内容直接查看压缩文件的内容,而无需解压:zcat/var/log/syslo......
  • 文件
    一个文件会对应一个inode软硬链接有什么区别:是否具有独立的inode!!软连接具有独立的inode--可以被当作独立文件看待。硬连接没有独立的inode--就是链接前的inode编号。建立硬链接,根本就没有创建新文件,因为没有给硬链接分配独立的inode。既然没有创建文件,那么一定没有自己......
  • 66_索引管理_复杂上机实验:基于scoll+bulk+索引别名实现零停机重建索引
    课程大纲1、重建索引一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulkapi写入index中批量查询的时候,建议采用scrollapi,并且采用多线程并发的方式来reindex数据,每次scoll就查询指定日期的一段数据......
  • 自动化运维-修改主机名&hosts文件脚本
    脚本:#!/bin/bash#提示用户输入新的主机名read-p"请输入新的主机名:"NEW_HOSTNAME#检查是否提供了新主机名if[-z"$NEW_HOSTNAME"];thenecho"错误:没有输入新的主机名。"exit1fi#备份原有的hostname文件sudocp/etc/hostname/etc/hostname.......
  • 织梦网站迁移后如何修改数据库配置文件
    当你迁移织梦CMS网站时,需要修改数据库配置文件以确保新的数据库连接能够正常工作。以下是如何修改数据库配置文件的具体步骤:1.修改数据库配置文件定位配置文件:打开织梦CMS安装目录下的 data/common.inc.php 文件。编辑配置文件:使用文本编辑器(如Notepad++或记事本......
  • linux文件编程_进程
    1.进程相关概念面试中关于进程,应该会问的的几个问题:1.1.什么是程序,什么是进程,有什么区别?程序是静态的概念,比如:磁盘中生成的a.out文件,就叫做:程序进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程程序是静态的概念,进程是动态的概念简单的来说,没有......
  • Linux统计文件夹下的文件数目
    最近需要统计Linux系统中某个文件夹下的文件数目,而Linux系统下有三个命令:ls、grep、wc。通过这三个命令的组合,可以实现上述要求!统计当前目录下文件的个数(不包括目录)$ls-l|grep"^-"|wc-l递归统计当前目录下文件的个数(包括子目录)$ls-lR|grep"^-"|wc-l查看......