postgresql数据库路径迁移

迁移方法有两种:
(1)重新初始化postgresql数据库,初始化时指定新的数据路径---PGDATA,然后在新的环境下将原有的数据库备份恢复一下。不过这个方法有点麻烦
(2)直接将现有的数据库文件全部拷贝到新的数据库路径下,然后重起数据库服务
第二种方法比较简单,因此,就详细描述一下第二种方法:
1、postgresql安装后,默认的数据库路径是/var/lib/pgsql/9.x/data
2、新建一个路径作为新的数据库数据路径,假如是/home/data
sudo mkdir /home/data
sudo chown -R postgres:postgres data
sudo chmod 700 data
最后这个赋权命令是必须的,不然数据库启动回有问题的
3、文件拷贝,
首先要停止postgresql服务
sudo systemctl stop postgresql
sudo su - postgres
cp -rf /var/lib/pgsql/9.x/data/* /home/data
4、修改service文件
找到/usr/lib/systemd/system/postgresql*.service
修改这个文件中的
Environment=PGDATA=/var/lib/pgsql/9.4/data/
将其修改为自己的新的数据路径:
Environment=PGDATA=/home/data/
至此所有的修改工作就完成了,这个方法比较简单,但是前提是postgresql已经作为服务添加到了systemctl,这一点需要注意
5、此时可以重新启动postgresql了,但是,尝试了几个方法都不能成功,只有重起一下系统,才可以
reboot系统
然后启动postgres服务
sudo systemctl restart posrgresql
所有的一切和原来一样一样地!顺利完成数据迁移。

为了避免数据迁移的工作,今后再新部署postgresql时,应该考虑到系统分区的问题,要避免使用默认的数据路径

root@pg-1:/root# systemctl start postgresql-9.6
Warning: postgresql-9.6.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for postgresql-9.6.service failed because the control process exited with error code. See "systemctl status postgresql-9.6.service" and "journalctl -xe" for details.
root@pg-1:/root# systemctl daemon-reload
root@pg-1:/root# ps -ef|grep postgres
root      13725  13487  0 11:22 pts/0    00:00:00 su - postgres
postgres  13726  13725  0 11:22 pts/0    00:00:00 -bash
postgres  13765  13726  0 11:23 pts/0    00:00:00 psql -U postgres
root      13795  13773  0 11:27 pts/1    00:00:00 su - postgres
postgres  13796  13795  0 11:27 pts/1    00:00:00 -bash
root      13888  13867  0 11:31 pts/3    00:00:00 su - postgres
postgres  13889  13888  0 11:31 pts/3    00:00:00 -bash
root      14264  14085  0 13:32 pts/4    00:00:00 grep --color=auto postgres
root@pg-1:/root# systemctl start postgresql-9.6
root@pg-1:/root# ps -ef|grep postgres
root      13725  13487  0 11:22 pts/0    00:00:00 su - postgres
postgres  13726  13725  0 11:22 pts/0    00:00:00 -bash
postgres  13765  13726  0 11:23 pts/0    00:00:00 psql -U postgres
root      13795  13773  0 11:27 pts/1    00:00:00 su - postgres
postgres  13796  13795  0 11:27 pts/1    00:00:00 -bash
root      13888  13867  0 11:31 pts/3    00:00:00 su - postgres
postgres  13889  13888  0 11:31 pts/3    00:00:00 -bash
postgres  14277      1  0 13:32 ?        00:00:00 /usr/pgsql-9.6/bin/postmaster -D /opt/postgresql9.6/data/
postgres  14281  14277  0 13:32 ?        00:00:00 postgres: logger process   
postgres  14284  14277  0 13:32 ?        00:00:00 postgres: checkpointer process   
postgres  14285  14277  0 13:32 ?        00:00:00 postgres: writer process   
postgres  14286  14277  0 13:32 ?        00:00:00 postgres: wal writer process   
postgres  14287  14277  0 13:32 ?        00:00:00 postgres: autovacuum launcher process   
postgres  14288  14277  0 13:32 ?        00:00:00 postgres: stats collector process   
root      14290  14085  0 13:32 pts/4    00:00:00 grep --color=auto postgres
root@pg-1:/root#

 

Postgresql迁移数据文件存放位置 

1. POSTGRESQL的安装

centos7 里面默认的pgsql的版本是 9.2.4 如果想用更高的版本需要执行以下如下的命令
rpm -ivh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
安装成功后进行安装
yum install postgresql11
yum install postgresql11-server

然后启动并且设置为开机启动
systemctl enable postgresql-11 
systemctl start  postgresql-11

启动之后进行数据库初始化
11 以上的系统 还是比较简单的 直接执行
postgresql-setup initdb 就可以初始化数据库

设置密码等工作
su - postgres
登录数据库
psql -U postgres
修改密码
ALTER USER postgres WITH PASSWORD 'Test6530'  设置密码   

\q退出数据库

2. 修改数据库使之能够被远程链接

数据库的配置文件默认为:

查看服务状态可得

进入 data目录

/var/lib/pgsql/11/data/
/usr/lib/systemd/system/postgresql-11.service

cd /var/lib/pgsql/11/data/

修改pg_hba.conf 即可

3. 创建新的数据目录

mkdir /home/pgdata

4.关闭pgsql

systemctl stop postgresql-11

5. 复制原来的文件

cp -R /var/lib/pgsql/11/data/* /home/pgdata

6.修改权限

chown -R postgres:postgres /home/pgdata
chmod 750 /home/pgdata -R

7. 修改systemd 里面的配置文件

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

修改PGDATA的指向

8.执行命令重启

systemctl daemon-reload
systemctl start postgresql-11

9. 删除原始PGDATA 里面的内容 重启虚拟机验证。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值