安装后默认的目录:

/var/lib/pgsql/{version}/data

1,哪儿启动的数据库?

数据库服务一般开机自动启动,那么就可以顺藤摸瓜找到相关的service。(Centos7.X参照这个方式

对于postgresql10,它的服务名为postgresql-10.service,该文件的路径为:

 不同的方式启动文件位置不一样,请看文章末尾,都是修改Environment为最新的文件存放路径

从上面来看里面用到了Environment,后面需要修改该变量,但是得先执行步骤2和3。

2,关闭数据库服务

service postgresql-10 stop

3,拷贝原先的data目录到新的data目录

使用命令cp,示例如下:

sudo cp -rf /var/lib/pgsql/ /home/hadoop/pgsql

设置用户和权限

sudo chown -R postgres:postgres /home/hadoop/pgsql
sudo chmod 700 /home/hadoop/pgsql
sudo chmod -R 0700 /home/hadoop/pgsql/10/data  
前面的是原data目录,后面是修改后的data目录

4,拷贝完之后,就可以修改service文件里面的enviroment变量,可以将这个变量修改为自己的data目录

sudo vi postgresql-10.service
修改PGDATA路径之后,就可以执行下面的命令让其立即生效
sudo systemctl daemon-reload
5,重启数据库
service postgresql-10 start
6,进入psql,查看当前的data_directory


按照下面三步执行

   (1)su postgres

   (2)psql

   (3)show data_directory;

通过上面的路径查看data目录是否已经完全更改过来

7,如果上面的目录还没更改过来,可以看到第1步里面有个环境变量,${PGDATA}

所以,这个变量在哪儿呢?

我们知道可以设置环境变量的地方之后那么几个地方,这里因为postgresql安装后会自动生成一个postgres用户,因此猜测这个用户下存在PGDATA环境变量

因此,

su postgres ,进入postgres用户下,查看当前用户的环境变量

echo $PGDATA,打印出PGDATA变量值,可以看到这个变量值还是之前那个值。因此我们可以知道了,是这个地方有问题。

于是,修改这个用户的环境变量设置文件

vi ~/.bash_profile,修改里面的PGDATA路径

source ~/.bash_profile使文件生效

8,重启数据库

service postgresql-10 restart

9,更改postgres用户的宿主目录

查看uid

id postgres,得到uid为26

sudo usermod -d /home/hadoop/pgsql -u 26 postgres


注意:修改目录时先停止服务!(我是文章末尾


1、命令行方式启动时指定目录

pg_ctl stop -D /data/pgsql/data2

pg_ctl start -D /data/pgsql/data2


2、以init脚本启动的,修改脚本(10+):

vi /etc/init.d/postgresql-10

# 修改为如下内容

PGDATA=/home/hadoop/pgsql/10/data


2、以systemd启动的,修改脚本(10+):

vi /usr/lib/systemd/system/postgresql-10.service # 修改为如下内容

Environment=PGDATA=/home/hadoop/pgsql/10/data


参考:

postgresql数据库安装以及修改数据文件路径http://m.blog.itpub.net/29654823/viewspace-2147325/

---------------------


原文:https://blog.csdn.net/wk1134314305/article/details/79054248

扩展知识:https://www.cnblogs.com/EasonJim/p/9052836.html(启动文件找不到参考答案)

欢迎留言