postgresql

问题描述:
DQ想要下载2018年的raps报表数据,但是数据库中没有完整版的数据,最早是2018年12月份的数据,之前devops有物理备份过pg数据库,所以现在有个需求就是将这部分数据恢复出来
问题解决:
整库备份它长这个样子:
images

1.知道这是物理备份,先在虚拟机上实操一下

1.1.安装相同版本的pg

安装PostgreSQL9.6
将新的PostgreSQL 9.6存储库添加到系统中

yum -y install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7.4-x86_64/pgdg-redhat-repo-latest.noarch.rpm

现在使用下面的yum命令安装PostgreSQL 9.6

yum -y install postgresql96-server postgresql96-contrib

启动并配置PostgreSQL 9.6
在开始postgres服务之前,我们需要初始化数据库。

cd /usr/pgsql-9.6/bin
./postgresql96-setup initdb

接下来,启动postgres服务,并启用它在系统启动时自动启动。

systemctl start postgresql-9.6
systemctl enable postgresql-9.6

默认情况下,postgres在端口5432上运行。所以通过执行netstat命令来确保端口5432的状态是’ LISTEN ‘

netstat -plntu

如果您没有netstat命令,请安装net-tools。 这是网络工具的一部分

yum -y install net-tools

所以PostgreSQL 9.6已经启动了。 但是我们仍然需要为postgres用户配置密码。 以“postgres”用户身份登录,然后访问postgres的“psql”shell。

su - postgres
psql

用下面的查询给’ postgres ‘用户设置新密码:juoperbhju90habfj#hg

\password postgres
Enter new password:

images
所以PostgreSQL 9.6已经启动了,并为postgres用户配置了一个新的密码。
安装好后,使用navicat连接试一下,能连接上就OK了

1.2.挪动pg数据库默认的存放数据的文件夹到/data目录下

这一步的操作原因是只有data目录下才有比较大的空间供我解压一个近200G的压缩文件
images
在换路径前先关掉pg数据库

systemctl stop postgresql-9.6.service

然后复制pg数据库默认的存放数据的文件夹到/data目录下

sudo cp -rf /var/lib/pgsql/9.6/data /data/pgsql/

挪动后,设置用户和权限

cd /data/
sudo chown -R postgres:postgres pgsql/
sudo chmod 700 pgsql/

修改pg数据库的service文件

vim /usr/lib/systemd/system/postgresql-9.6.service

将默认加载文件指向自己想要的路径

Environment=PGDATA=/data/pgsql/

修改PGDATA路径之后,就可以执行下面的命令让其立即生效

sudo systemctl daemon-reload
systemctl restart postgresql-9.6.service

如果不报错,万事大吉,如果报错,查看报错内容,解决报错问题
如果报错内容说是找不到文件夹或者什么empty,那就是上面赋予权限问题没有做好,挪动一下,重新赋予权限即可
查看是否属于某个用户或者用户组,下面这种是对的
images

2.实际恢复数据

具体操作
为了避免解压不完全,使用一个工具screen,因为毕竟近200G的压缩文件,解压后有近700G的文件,在解压时,不让其中断。

yum -y install screen

创建一个会话

screen -S 会话名称

例如,我想在这个会话中执行解压的命令,我可以创建下面这个会话

screen -S tarzxdq

然后就是正常的在终端中的常规操作
进到某个文件夹下,执行解压命令,然后X掉这个终端,该干嘛干嘛

tar -zxvf full.tar.gz

查看会话列表:

screen -ls

进入到某个会话

screen -r 会话名称
screen -r tarzxdq

有时在恢复 screen 时会出现 There is no screen to be resumed matching **
遇到这种情况,先退出这个会话,然后再进入

screen -d tarzxdq
screen -r tarzxdq
cd /data

将解压好的full文件夹复制到/data目录下,其实在原来目录应该也可以,只是尝试过失败很多次,有阴影了

mv restore_for_dq/full .

给文件夹赋予权限

sudo chown -R postgres:postgres full/
sudo chmod 700 full/

拿到full文件夹路径

cd full/
pwd

修改service中PGDATA路径

vim /usr/lib/systemd/system/postgresql-9.6.service

生效变更

systemctl daemon-reload

重启数据库

systemctl restart postgresql-9.6.service

报错了:
查看报错信息

journalctl -xe

images

将postgresql.conf先复制一份

cp postgresql.conf postgresql.conf.bak

再根据报错信息,将报错中提到的这个搜一下,全部注释掉,然后将logging_collector由on改成off
images

重启一下,继续报错

systemctl restart postgresql-9.6.service
journalctl -xe

再次修改

vim postgresql.conf

将报错中的内容注释掉,再次重启

systemctl restart postgresql-9.6.service
ls

成功了,但是不支持postgres连接,将连接用户名改成root
然后将其改成信任所有连接,这样任何密码都能连上来

vim pg_hba.conf
将上面这行注释,下面新加一行改成信任
#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            trust

再次重启

systemctl restart postgresql-9.6.service

然后就可以连上来了
images


世界碎掉了,但潮汐在牡蛎心里。

星空博客。

© 2024 星空的博客