步骤1-移动PostgreSQL数据目录
在开始使用PostgreSQL目录的移动数据之前,通过启动交互式PostgreSQL会话来验证当前位置,在以下命令中,psql
是进入交互式监视器的命令,-u postgres
告诉sudo
以系统postgres用户的身份执行psql
:
sudo -u postgres psql
打开PostgreSQL提示后,使用以下命令显示当前数据目录:
SHOW data_directory;
Output data_directory
------------------------------
/var/lib/postgresql/10/main
(1 row)
此输出确认PostgreSQL配置为使用默认数据目录/var/lib/postgresql/10/main
,这是我们需要移动的目录,确认系统上的目录后,键入q
并按ENTER键关闭PostgreSQL提示符。
要确保数据的完整性,在实际更改数据目录之前,请停止PostgreSQL :
sudo systemctl stop postgresql
systemctl不显示所有服务管理命令的结果,要验证是否已成功停止服务,请使用以下命令:
sudo systemctl status postgresql
输出的最后一行应该告诉你PostgreSQL已停止:
Output. . .
Jul 12 15:22:44 ubuntu-512mb-nyc1-01 systemd[1]: Stopped PostgreSQL RDBMS.
一旦复制完成,我们用.bak
扩展重命名当前文件夹并保留它直到我们确认移动成功
sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak
现在我们可以配置PostgreSQL来访问它新位置中的数据目录了。
步骤2-指向新的数据位置
默认情况下,将data_directory设置为,/etc/postgresql/10/main/postgresql.conf
文件编辑此文件以反映新的数据目录:
sudo nano /etc/postgresql/10/main/postgresql.conf
查找以data_directory开头的行,并且更改下面的路径以反映新位置,
/etc/postgresql/10/main/postgresql.conf
. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/10/main'
. . .
按CTRL +X,Y
,然后ENTER保存并关闭文件,你需要做的就是将PostgreSQL配置为使用新的数据目录位置,现在剩下的就是再次启动PostgreSQL服务,并检查它是否确实指向正确的数据目录。
步骤3-重新启动PostgreSQL
更改postgresql.conf
文件中的data-directory指令后,请继续使用systemctl启动PostgreSQL服务器:
sudo systemctl start postgresql
若要确认PostgreSQL服务器已成功启动,请使用systemctl
再次检查它状态:
sudo systemctl status postgresql
如果服务正确启动,你将在此命令输出的结尾处看到以下行:
Output. . .
Jul 12 15:45:01 ubuntu-512mb-nyc1-01[1]: Started PostgreSQL RDBMS.
. . .
最后,要确保新的数据目录确实正在使用中,请打开PostgreSQL命令提示符。
sudo -u postgres psql
再次检查数据目录的值:
SHOW data_directory;
Output data_directory
-----------------------------------------
/mnt/volume_nyc1_01/postgresql/10/main
(1 row)
这就确认PostgreSQL正在使用新的数据目录位置,验证现有数据的完整性后,即可删除备份数据目录:
sudo rm -Rf /var/lib/postgresql/10/main.bak
这样,你已经成功地将PostgreSQL数据目录移到了新位置。