将ubuntu下postgresql数据库从默认存储位置 迁移到 其它指定的位置

手把手:将ubuntu下postgresql数据库从默认存储位置 迁移到 其它指定的位置


背景:
1)系统:Ubuntu16.04.5 + Postgresql9.5 + pgadmin3
2)使用root权限
3)服务器加了2块新硬盘,已组Raid 10扩容。因此希望将原postgresql数据库从默认存储位置 全部迁移到 新挂载的硬盘中。
4)新挂载硬盘的挂载点为/datadisk。
挂载新硬盘,可参看:《随笔:Ubuntu挂载新硬盘》https://blog.csdn.net/garbageceo/article/details/87473241


步骤一:准备阶段,检查当前Postgresql数据库是否可正常访问,且data_directory存储目录所在位置
步骤二:迁移阶段,将Postgresql数据库当前存储目录,迁移到新硬盘中(新目录,新挂载点)
步骤三:检查测试,检查迁移后的Postgresql数据库是否可正常访问
步骤四:收工结束,删除旧的存储目录

-------------------------------------------------------------
步骤一:准备阶段,检查当前Postgresql数据库是否可正常访问,且data_directory目录所在位置
1.1)先检查确认,postgresql数据库当前工作状态正常,可见“....Started PostgreSQL RDBMS.”

# sudo service postgresql status
或 # sudo systemctl status postgresql
若没启动,则启动下(sudo service postgresql start),再查看确认。

1.2)再启动下,确认pgadmin3可以正常登录。若您不使用或未安装pgadmin3,可跳过。

# pgadmin3
1.3)终端模式下,查看当前Postgresql数据库默认位置,并推出数据库终端连接。

# sudo -u postgres psql
postgres=# show data_directory;
data_directory
- - - - - - - - - - - - - - - -
/var/lib/postgresql/9.5/main
(1 row)

postgres=# \q
至此:确认了数据库当前状态正常,且默认位置在/var/lib/postgresql/9.5/main


-------------------------------------------------------------
步骤二:迁移阶段,将Postgresql数据库默认的目录,迁移到新硬盘中(新目录,新挂载点)
2.1)停止数据库服务

# sudo service postgresql stop
或 # sudo systemctl stop postgresql
# sudo service postgresql status
输出的最后一行应该告知PostgreSQL已经停止:“....Stopped PostgreSQL RDBMS.”

2.2)更改Postgresql数据库配置文件,将存储指向新位置。
注意,配置文件在/etc/...下,而存储在/var/...下

# sudo vim /etc/postgresql/9.5/main/postgresql.conf
大约在40行,可找到:
data_directory = '/var/lib/postgresql/9.5/main'
将其注释掉,增加指向的存储位置(也可以直接修改),具体的新存储位置请根据实际情况修改
data_directory = '/datadisk/postgresql/9.5/main'
保存,退出。

2.3)将原/旧数据库存储目录 迁移 到新的存储位置
在命令终端下,使用rsync来进行数据库存储目录的迁移,千万别使用其它方式(例如:mv,或图形下的复制粘贴)。在迁移过程中,使用参数-a,保留原存储目录的权限和各类属性(这很重要);使用参数-v,来显示进度(若您的存储目录很大,这很有效)

# sudo rsync -av /var/lib/postgresql /datadisk/
注意:a)原存储目录指向了postgresql,而不是main。
b)原存储目录的尾部没有斜杠,postgresql后面没有斜杠,没有斜杠,没有斜杠。如果包含尾部斜杠,rsync则会将目录的内容转储到挂载点,而不是复制目录本身。

2.4)备份下原/旧的数据库存储目录(改名后,更便于检查迁移结果)

# sudo mv /var/lib/postgresql /var/lib/postgresql_bak
-------------------------------------------------------------
步骤三:检查测试,检查迁移后的Postgresql数据库是否可正常访问。基本类似第一步
3.1)启动Postgresql服务

# sudo service postgresql start
或 # sudo systemctl start postgresql
3.2)检查启动后状态

# sudo service postgresql status
或 # sudo systemctl status postgresql
3.3)检查存储目录是否已变更

# sudo -u postgres psql
postgres=# show data_directory;
data_directory
- - - - - - - - - - - - - - - -
/datadisk/postgresql/9.5/main
(1 row)

postgres=# \q

3.4)确认pgadmin3可以正常登录。若您不使用或未安装pgadmin3,可跳过。

# pgadmin3

-------------------------------------------------------------
步骤四:收工结束,删除旧的存储目录
根据自己的实际情况,可立刻或稍后删除旧的存储目录。注意:我们在步骤2.4中改过目录名

# sudo rm -rf /var/lib/postgresql_bak

 


推荐阅读
如何将PostgreSQL数据目录移动到Ubuntu 18.04上的新位置
https://cloud.tencent.com/developer/article/1356056

如何移动PostgreSQL的数据目录移到新位置上的Ubuntu 16.04
https://www.howtoing.com/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04/
————————————————
版权声明:本文为CSDN博主「名字被占咯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/garbageceo/article/details/87750318

posted @ 2021-12-24 16:20  阳光依旧是我  阅读(1129)  评论(0)    收藏  举报