当前位置: 首页 > 编程笔记 >

如何在Ubuntu 16.04上更改PostgreSQL数据文件夹位置

易弘亮
2023-03-14
本文向大家介绍如何在Ubuntu 16.04上更改PostgreSQL数据文件夹位置,包括了如何在Ubuntu 16.04上更改PostgreSQL数据文件夹位置的使用技巧和注意事项,需要的朋友参考一下

在本文中,我们将学习如何将PostgreSQL数据库数据目录更改或重定位到Ubuntu 16.04上的新位置。由于我们需要更多空间,并且出于安全原因,我们将数据目录更改为另一个卷或其他位置,因此该数据库的增长频率更高,并且取决于公司的规模。

先决条件

  • 具有具有Sudo权限的非root用户的Ubuntu计算机

  • PostgreSQL服务器已安装并且正在运行。

  • 我们要在其中移动数据库数据位置的新卷或新位置,新位置将是/ mnt / data_vol / PostgreSQL,因为data_vol是连接到计算机或服务器的新卷。

更改PostgreSQL数据文件夹位置

在更改PostgreSQL数据位置的位置之前,我们将首先检查PostgreSQL服务器上的当前设置。以下是验证服务器上当前数据位置设置的命令。

$ sudo –u postgre psql
Output:
psql (9.5.4)
Type "help" for help.
postgres=#

验证服务器上的当前数据位置设置

postgres=# SHOW data_directory;
Output:
   data_directory
------------------------------
/var/lib/postgresql/9.5/main
(1 row)
postgres=#

通过上面的命令,我们将知道默认的数据目录位置是/var/lib/postgresql/9.5/main

现在,我们将停止PostgreSQL服务以更改数据文件夹的默认位置

下面是停止PostgreSQL服务的命令。

$ sudo systemctl stop postgresql

停止PostgreSQL后,我们将使用以下命令检查PostgreSQL服务的状态

$ sudo systemctl status postgresql
Output:
   postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese
   Active: inactive (dead) since Mon 2016-09-12 15:40:23 IST; 3s ago
   Process: 1553 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 1553 (code=exited, status=0/SUCCESS)
Sep 07 19:27:27 ubuntu-16 systemd[1]: Starting PostgreSQL RDBMS...
Sep 07 19:27:27 ubuntu-16 systemd[1]: Started PostgreSQL RDBMS.
Sep 12 15:20:23 ubuntu-16 systemd[1]: Stopped PostgreSQL RDBMS.

将现有的PostgreSQL数据移动到新位置

当我们停止数据时,我们现在将使用带有-a和–v标志的rysnc命令将现有的PostgreSQL数据移动到新位置,-a将文件和文件夹权限保留在新位置,并且–v将显示详细输出。

使用rsync,我们将在新位置创建一个新的postgresql文件夹,这里的新位置意味着在/ mnt / data_vol上具有data_vol的新装入的卷,并且权限保留在PostgreSQL中,因此在将文件复制到新目录时不会出现任何权限问题位置。

下面是复制数据的命令。

$ sudo rsync -av /var/lib/postgresql /mnt/data_vol/
Output:
sending incremental file list
postgresql/
postgresql/.pgpass
postgresql/.psql_history
postgresql/9.5/
postgresql/9.5/main/
postgresql/9.5/main/PG_VERSION
postgresql/9.5/main/postgresql.auto.conf
postgresql/9.5/main/postmaster.opts
postgresql/9.5/main/base/
postgresql/9.5/main/base/1/
postgresql/9.5/main/global/3592_vm
postgresql/9.5/main/global/3593
postgresql/9.5/main/global/4060
postgresql/9.5/main/global/4060_vm
postgresql/9.5/main/global/4061
postgresql/9.5/main/global/6000
postgresql/9.5/main/global/6000_vm
postgresql/9.5/main/global/6001
postgresql/9.5/main/global/6002
postgresql/9.5/main/global/pg_control
postgresql/9.5/main/global/pg_filenode.map
…
…
postgresql/9.5/main/pg_subtrans/0000
postgresql/9.5/main/pg_tblspc/
postgresql/9.5/main/pg_twophase/
postgresql/9.5/main/pg_xlog/
postgresql/9.5/main/pg_xlog/000000010000000000000001
postgresql/9.5/main/pg_xlog/archive_status/
sent 63,180,570 bytes received 36,410 bytes 42,144,653.33 bytes/sec
total size is 63,053,465 speedup is 1.00

复制数据库后,我们将重命名旧的数据文件夹,并将保留此文件夹,直到在以后的步骤中确认更改为止,这样我们才不会丢失计算机中的数据。

$ sudo mv /var/lib/postgresql/9.5/main /var/lib/postgresql_backup

更改Postgresql配置文件上的数据文件夹位置

我们可以通过编辑/etc/postgresql/9.5/main/postgresql.conf文件并编辑data_directory来更改默认数据文件夹。

$ sudo vi /etc/postgresql/9.5/main/postgresql.conf
Output:
….
….
….
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------
# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir
data_directory = '/mnt/data_vol/postgresql/9.5/main' # use data in another directory
                                       # (change requires restart)
hba_file = '/etc/postgresql/9.5/main/pg_hba.conf' # host-based authentication file
                                       # (change requires restart)
ident_file = '/etc/postgresql/9.5/main/pg_ident.conf' # ident configuration file
….
….
….

在/etc/postgresql/9.5/main/postgresql.conf中更新了新的数据文件夹后,我们需要重新启动服务器。

重新启动PostgreSQL服务器并验证Data文件夹的位置

由于我们必须更新PostgreSQL配置,因此我们将重新启动PostgreSQL服务,以便应用该配置。

$ sudo systemctl start postgresql

一旦获得服务,重新启动,我们现在将使用以下命令检查PostgreSQL服务的状态–

$ sudo systemctl status postgresql
postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor pres
Active: active (exited) since Mon 2016-09-12 16:57:32 IST; 12s ago
Process: 22296 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 22296 (code=exited, status=0/SUCCESS)
Sep 12 16:57:32 ubuntu-16 systemd[1]: Starting PostgreSQL RDBMS...
Sep 12 16:57:32 ubuntu-16 systemd[1]: Started PostgreSQL RDBMS.
Sep 12 16:57:39 ubuntu-16 systemd[1]: Started PostgreSQL RDBMS.

服务重新启动后,我们现在将验证数据文件夹的位置。

$ sudo –u postgre psql
Output:
psql (9.5.4)
Type "help" for help.
postgres=#

要验证服务器上的当前数据位置设置–

postgres=# SHOW data_directory;
Output:
data_directory
------------------------------
/mnt/data_vol/postgresql/9.5/main
(1 row)
postgres=#

确认PostgreSQL上的数据文件夹已更改后,我们现在将使用以下命令删除旧数据。

$ sudo rm –rf /var/lib/postgresql_backup

在上面的文章中,我们学习了如何将PostgreSQL数据文件夹更改到一个我们可以存储更多数据的新位置,以及如何将现有数据与数据库一起移动到新位置。

 类似资料:
  • 我有postgresql数据库,通过自制安装在我的macOS系统驱动器上。系统驱动器不是很大,数据库变得越来越大。如果可能的话,我想把它移到我的大数据驱动器上。我找到了一本Ubuntu的手册,但它似乎不适合我的情况。因为它表示postgresql.conf位于数据库本身之外的其他目录中。但Homebrew的数据库位于/usr/local/var/postgres,其中包含postgreql.con

  • 问题内容: 如何在Jenkins作为Windows服务运行的Windows上更改Jenkins默认文件夹。由于分区上空间不足,我想将文件夹更改为(每个版本占用〜10MB的可用空间)。我不想重新安装为Windows服务。我只想更改现有实例的文件夹。在缺乏全局解决方案的情况下,我只能专注于重定位文件夹。 在此先感谢您的帮助。 问题答案: 停止詹金斯服务 将文件夹移到 使用regedit,更改为 启动服

  • 如何更改Jenkins作为Windows服务运行的Windows上的Jenkins默认文件夹。由于分区上的空间不足(每个构建占用10MB左右的可用空间),我想将文件夹更改为。我不想将重新安装为Windows服务。我只想更改现有实例的文件夹。在缺乏全局解决方案的情况下,我只能专注于重新定位文件夹。 事先谢谢你的帮助。

  • 本文向大家介绍如何在Ubuntu 16.04上将Apache默认Web根文件夹更改为新位置,包括了如何在Ubuntu 16.04上将Apache默认Web根文件夹更改为新位置的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将学习如何将Apache默认的Web根文件夹更改为新位置。默认情况下,Apache Web根目录或Document根目录文件夹位于/ var / www / html。

  • 问题内容: 我正在尝试查看特定文件夹中的更改,然后,如果其中发生任何添加/修订/删除,则需要获取该文件夹及其子文件夹中所有文件的更改类型。我正在为此使用,但它仅监视单个路径,不处理子文件夹。 这是我的方法: 就像我之前说过的,我只获取所选路径中文件的日志,并且我想查看所有文件夹和子文件夹文件,例如: 范例1: 范例2: 有没有更好的解决方案? 问题答案: A 仅监视您注册的S。它不会递归地通过这些

  • 问题内容: 因此,如何在Java(Windows系统)中更改文件夹的图标,是否有类或某些原因导致我搜索了却找不到任何东西? 问题答案: 根据注释,您正在谈论的文件夹图标是在文件夹本身的隐藏“ ini”文件中指定的。 您 可以 通过将其读取为文本等方式 来 创建/修改文件,但是使用现有的第三方Java库更简单。我已经成功使用了开源ini4j Java库。