当前位置:   article > 正文

x. CentOS7系统下PostgreSQL数据库数据目录指定与迁移_根据postgresql数据目录拉起一台新的postgresql

根据postgresql数据目录拉起一台新的postgresql

PostgreSQL数据库安装完毕后,须要进行初始化才能使用。其中,对于数据库的数据目录初始化有两种方式:第一种是,初始化时数据库时指定数据库的数据目录;第二种是,初始化时没有指定数据库的数据目录,后期进行数据库的数据目录迁移。本文对这两种方法都进行了详细地介绍。在本文中假定操作系统环境是CentOS7;PostgreSQL数据库的版本为9.6系列;默认安装位置为"/usr/pgsql-9.6";如已经进行了初始化,则默认初始化的数据库数据目录为“/var/lib/pgsql/9.6”

1.安装时指定(修改)数据库数据目录

  • 如果数据库安装完毕后,还未初始化数据库,也未启动数据库,则可直接使用如下方式来指定数据库的数据目录,不再须要做上边的迁移工作。
  • 使用如下命令,首先在数据分区目录创建存储PG数据库的数据目录“/home/data/pgsql/9.6/data”,然后赋予postgres相应的权限。
mkdir -p /home/data/pgsql/9.6/data
chown -R postgres:postgres /home/data/pgsql/
chmod -R 700 /home/data/pgsql/
  • 1
  • 2
  • 3
  • PG数据库数据目录创建完毕后,切换到postgres用户工作环境,使用initdb程序,指定数据库目录,初始化数据库
su - postgres
cd /usr/pgsql-9.6/bin/
./initdb -D /home/data/pgsql/9.6/data
  • 1
  • 2
  • 3
  • 接下来,即可跳转到下文,即接着从下文2.4开始,完成PG数据库的剩余安装工作。

2.安装后迁移数据库数据目录

  • 如果PG数据库已经安装完毕,并使用了默认参数初始化数据库,处于日常正常使用状态时,想迁移数据库的数据目录,则须要进行如下7个步骤的操作。与第一种方式的不同点,主要体现在,创建的数据分区目录不同,此外,需要递归复制数据库旧的目录下下的文件到新的新的目录下

2.1创建新的数据目录

  • 这里假定“/home”目录存储空间较大(数据库数据目录一般迁移到/存放到存储空间较大的目录),要进行的操作是将PG数据库的数据目录迁移到home目录下的db_data目录,因此这里先创建db_data文件夹
mkdir /home/data/pgsql/
  • 1

2.1停止PostgreSQL数据库服务

systemctl stop postgresql-9.6.service
  • 1

2.3拷贝PostgreSQL数据目录到新目录,并赋予权限

  • 依次使用如下条命令将pg数据库的数据目录拷贝过来,并授予postgres用户相应的权限。
cp -r /var/lib/pgsql/* -t /home/data/pgsql/
chown -R postgres:postgres /home/data/pgsql/
chmod -R 700 /home/data/pgsql/
  • 1
  • 2
  • 3
  • 拷贝完成后,在新的数据目录下,将得到如下的目录"/home/data/pgsql/9.6/data"

2.4修改系统服务中PostgreSQL数据库的Environment配置

  • 值得注意的是,这里修改的是CentOS系统级别的服务配置,而非软件级(即非PostgreSQL本身)的配置文件
vi /usr/lib/systemd/system/postgresql-9.6.service
  • 1
  • 将postgresql-9.6.service配置文件里的“Environment=PGDATA=”,修改为新目录下正确的PGDATA路径,然后保存退出(该步骤很关键,网上很多博客都缺少这一步)
Environment=PGDATA=/home/data/pgsql/9.6/data
  • 1

2.5重新读取PostgreSQL的系统服务配置

  • 上一步中,修改了PostgreSQL数据库再CentOS系统服务中的配置,因此需要重新加载PostgreSQL系统及服务的配置文件(该步骤很关键,网上很多博客都缺少这一步)
systemctl daemon-reload
  • 1

2.6修改PostgreSQL数据库软件级配置文件

  • 根据上一步中指定的数据目录,可以在迁移后的数据库数据目录中找到"postgresql.conf"和“pg_hba.conf”配置文件,并进行相应的修改:

  • 修改新的数据库数据目录下,postgresql.conf文件中监听端口由localhost,修改为“*”,使其默认监听所有端口。即 须修改该文件中的listen配置值为星号,并取消注释

vi /home/data/pgsql/9.6/data/postgresql.conf
  • 1
  • 修改新的数据库数据目录下,pg_hba.conf文件中的IPV4访问方式,使用MD5加密密码验证:
vi /home/data/pgsql/9.6/data/pg_hba.conf
  • 1

pg_hba.conf,在ipv4处,新增 如下配置。”all all 0.0.0.0/0 md5”

TYPEDATABASEUSERADDRESSMETHOD
hostallall0.0.0.0/0md5

在ipv4处,新增“”

2.7设置PostgreSQL数据库密码

  • 切换到postgres用户工作环境,使用psql程序,进入pg数据库的shell环境,从而使用\password命令设置新的密码
su - postgres
cd /usr/pgsql-9.6/bin/
./psql
\password
[输入您的新密码]
[再次输入,确认新密码]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.8启动PostgreSQL数据库服务

  • 激活PostgreSQL系统服务,使其随开机自动启动
systemctl enable postgresql-9.6.service
  • 1
  • 启动PostgreSQL服务
systemctl start postgresql-9.6.service
  • 1
  • 重启PostgreSQL服务则是使用如下命令:
systemctl restart postgresql-9.6.service
  • 1
  • 最后,值得注意的是,上数据库安装启动完毕后,如想通过Navicat进行连接,则需要注意防火墙的开启或关闭状态,这可使用如下命令查看,只有数据所在的服务器防火墙关闭,才能打赢。
systemctl status firewalld.service
  • 1
systemctl stop firewalld.service
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/434096
推荐阅读
相关标签
  

闽ICP备14008679号