将数据库保存在外部硬盘上

时间:2016-03-17 20:03:52

标签: sql postgresql

我正在使用PostgreSQL创建一些数据库,但由于计算机内存不足,我想将它们保存在外部硬盘上。

我该怎么做?

3 个答案:

答案 0 :(得分:4)

您可以将数据库指定为data_directory设置,将数据库存储在另一个磁盘上。您需要在启动时指定它,它将适用于所有数据库。

您可以将其放入postgresql.conf

data_directory = '/volume/path/'

或者,在启动PostgreSQL时在命令行中指定它:

postgres -c data_directory='/volume/path/'

参考:18.2. File Locations

答案 1 :(得分:1)

第 1 步:如果 postgresql 正在运行,请停止它:

sudo systemctl stop postgresql

第 2 步: 获取访问硬盘的路径。 (如果是 Linux)通过以下方式查找并挂载您的硬盘:

# Retrieve your device's name with:
sudo fdisk -l
# Then mount your device
sudo mount /dev/DEVICE_NAME YOUR_HD_DIR_PATH

步骤 3: 使用 rsync 将现有数据库目录复制到新位置(在您的硬盘驱动器中)。

sudo rsync -av /var/lib/postgresql YOUR_HD_DIR_PATH

然后用 .bak 扩展名重命名之前的 postgres 主目录以防止冲突

sudo mv /var/lib/postgresql/11/main /var/lib/postgresql/11/main.bak

注意:我的 postgres 版本是 11。用你的版本替换路径。

步骤 4: 编辑 postgres 配置文件:

sudo nano /etc/postgresql/11/main/postgresql.conf

data_directory 行更改为:

data_directory = 'YOUR_HD_DIR_PATH/postgresql/11/main'

步骤 5: 重新启动 Postgres 并检查一切是否正常

sudo systemctl start postgresql
pg_lsclusters

输出应显示状态为“在线”

Ver Cluster Port Status Owner    Data directory                      Log file
11  main    5432 online postgres YOUR_HD_DIR_PATH/postgresql/11/main /var/log/postgresql/postgresql-11-main.log

最后您可以通过以下方式访问您的 PostgresSQL:

sudo -u postgres psql

答案 2 :(得分:0)

您可以尝试按照演练 here 进行操作。这对我很有效,类似于@Antiez 的回答。

目前,我正在尝试做同样的事情,目前我遇到的唯一冲突是 PostgreSQL 的增量备份和时间点恢复过程似乎存在问题。我认为这与文件夹权限有关。如果我尝试将 ~30MB csv 上传到 postgres 数据库,它将崩溃并且服务器不会再次启动,因为文件无法写入 pg_wal 目录。该目录中唯一的文件是 000000010000000000000001 并且在写入新表时不会移动到 000000010000000000000002 等。

可以在 here 找到我的 stackoverflow 帖子,寻找解决此问题的方法。