Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何将PostgreSQL数据目录移动到Ubuntu 18.04上的新位置

如何将PostgreSQL数据目录移动到Ubuntu 18.04上的新位置

原创
作者头像
大瓜皮
修改于 2018-10-22 03:30:12
修改于 2018-10-22 03:30:12
2.6K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

数据库随着时间的推移而增长,有时会超出原始文件系统的空间。当它们与操作系统的其余部分位于同一分区时,这也可能导致I / O争用。

RAID,网络块存储和其他设备可以提供冗余并提高可扩展性以及其他所需功能。无论您是添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新定位PostgreSQL的数据目录。

课程准备

要完成本指南,您需要:

在这个例子中,我们将数据移动到安装在/mnt/volume_nyc1_01的块存储设备上。

但是,无论您使用什么底层存储,以下步骤都可以帮助您将数据目录移动到新位置。

第1步 - 移动PostgreSQL数据目录

在我们开始移动PostgreSQL的数据目录之前,让我们通过启动交互式PostgreSQL会话来验证当前位置。在以下命令中,psql是进入交互式监视器的命令,并且 -u postgres 告诉sudo执行psql作为系统的postgres用户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo -u postgres psql

打开PostgreSQL提示后,使用以下命令显示当前数据目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHOW data_directory;
       data_directory       
------------------------------
/var/lib/postgresql/10/main
(1 row)

此输出确认PostgreSQL配置为使用默认数据目录,也就是/var/lib/postgresql/10/main,因此这是我们需要移动的目录。确认系统上的目录后,键入\q并按ENTER以关闭PostgreSQL提示符。

要确保数据的完整性,请在实际更改数据目录之前停止PostgreSQL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl stop postgresql

systemctl不显示所有服务管理命令的结果。要验证是否已成功停止服务,请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl status postgresql

输出的最后一行应该告诉你PostgreSQL已经停止:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
​
Jul 12 15:22:44 ubuntu-512mb-nyc1-01 systemd[1]: Stopped PostgreSQL RDBMS.

现在关闭了PostgreSQL服务器,我们将使用rsync将现有的数据库目录复制到新的位置。使用该-a标志会保留权限和其他目录属性,同时-v提供详细输出,以便您可以跟踪进度。我们将从postgresql目录开始rsync,以模仿新位置中的原始目录结构。通过在mount-point目录中创建该postgresql目录并保留PostgreSQL用户的所有权,我们可以避免将来升级的权限问题。

注意:确保目录上没有尾部斜杠,如果使用制表符完成,则可以添加斜杠。如果包含尾部斜杠,rsync则会将目录的内容转储到挂载点,而不是复制目录本身。

版本目录10不是必需的,因为我们已经在postgresql.conf文件中明确定义了位置,但遵循项目约定肯定不会受到影响,特别是如果将来需要运行多个版本的PostgreSQL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01

复制完成后,我们将使用.bak扩展名重命名当前文件夹并保留,直到我们确认移动成功为止。这将有助于避免因在新旧位置具有类似命名的目录而引起的混淆:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak

现在我们准备配置PostgreSQL来访问新位置的数据目录。

第2步 - 指向新数据位置

默认情况下,在/etc/postgresql/10/main/postgresql.conf文件中data_directory会被设置为/var/lib/postgresql/10/main。编辑此文件以反映新数据目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/postgresql/10/main/postgresql.conf

找到以data_directory开头的行并更改后面的路径以反映新位置。在本教程的上下文中,updated指令将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/10/main'
. . .

通过按下CTRL + XYENTER来保存并关闭文件。这就是配置PostgreSQL以使用新数据目录位置所需的全部操作。此时剩下的就是再次启动PostgreSQL服务并检查它是否确实指向了正确的数据目录。

第3步 - 重新启动PostgreSQL

更改postgresql.conf文件中的data-directory指令后,继续使用systemctl来启动PostgreSQL服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl start postgresql

要确认PostgreSQL服务器已成功启动,请再次使用systemctl来检查其状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl status postgresql

如果服务正确启动,您将在此命令的输出结尾处看到以下行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
​
Jul 12 15:45:01  ubuntu-512mb-nyc1-01[1]: Started PostgreSQL RDBMS.
. . .

最后,要确保新数据目录确实在使用中,请打开PostgreSQL命令提示符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo -u postgres psql

再次检查数据目录的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHOW data_directory;
            data_directory
-----------------------------------------
/mnt/volume_nyc1_01/postgresql/10/main
(1 row)

这证实了PostgreSQL正在使用新的数据目录位置。在此之后,请花点时间确保您能够访问数据库以及与其中的数据进行交互。验证完现有数据后,可以删除备份数据目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo rm -Rf /var/lib/postgresql/10/main.bak

有了这个,您已成功将PostgreSQL数据目录移动到新位置。

结论:

如果您已经跟进,那么您的数据库应该在新位置运行其数据目录,并且您已经完成了向能够扩展存储的重要一步。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Move a PostgreSQL Data Directory to a New Location on Ubuntu 18.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何在MySQL Ubuntu 16.04上将MySQL数据目录移动到新位置
数据库随着时间的推移而增长,有时会超出文件系统的空间。当它们与操作系统的其余部分位于同一分区时,您也可能遇到I / O争用。RAID,网络块存储和其他设备可以提供冗余和其他所需的功能。无论您是要添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新定位MySQL的数据目录。
GeekZ
2018/10/16
1.8K0
PostgreSQL基础(二):PostgreSQL的安装与配置
PostgreSQL不推荐使用root管理,在安装成功postgreSQL后,他默认会给你创建一个用户:postgres
Lansonli
2024/09/06
5.3K0
PostgreSQL基础(二):PostgreSQL的安装与配置
PostgreSQL入门
这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。
老马
2019/05/25
2K0
第一章 第一节 postgresql安装与配置
本次安装环境为Ubuntu18.04 Server,postgresql采用10版本。
cn華少
2018/12/25
1.2K0
PostgreSQL 操作命令
认证方式除“trust”外,还有“peer”, “ident”, “md5”, “password”等
Kevin song
2020/02/19
1.2K0
PostgreSQL 操作命令
如何在CentOS 7上使用Barman备份,恢复和迁移PostgreSQL数据库
PostgreSQL是一个开源数据库平台,因其易于维护,成本效益以及与其他开源技术的简单集成而广受网络和移动应用程序开发人员的欢迎。
你在哪里
2018/09/20
6.2K2
在Ubuntu上迁移你的MySQL数据库
无论是要添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新迁移MySQL的数据目录。
SQL GM
2018/07/26
14.3K5
CentOS7 部署 PostgreSQL
陳斯托洛夫斯記
2024/08/07
1560
Docker + PostgreSQL 主从环境搭建
环境说明 Docker Ubuntu/CentOS PostgreSQL v10.1 1. 运行PostgreSQL 1.1 主库 docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=pgsmaster -v $(pwd)/pgsmaster:/var/lib/postgresql/data -d postgres 1.2 从库 docker run --name pgsslave -p 5501:5432 -e POS
happyJared
2018/09/20
3.1K0
Docker + PostgreSQL 主从环境搭建
PostgresSQL 主从搭建步骤
由于工作需要,最近开始接触各种数据库,并尝试各种数据库产品的高可用方案。今天分享的是postgresSQL的主从配置,其实还是蛮简单的,跟随本文的步骤,保证能实现PG主从的搭建。
星哥玩云
2022/08/13
2.7K0
如何在Ubuntu 18.04上将Apache Web Root移动到新位置
在Ubuntu上,Apache Web服务器将其文档存储在/var/www/html中,该文档通常位于具有其余操作系统的根文件系统上。但有时,将文档根移动到另一个位置(例如单独安装的文件系统)会很有帮助。例如,如果您从同一个Apache实例提供多个网站,则将每个网站的文档根目录放在其自己的卷上,这样您就可以根据特定网站或客户端的需求进行扩展。
木纸鸢
2018/10/16
1.2K0
PostgreSQL集群篇——2、PG环境安装准备
PostgreSQL官方文档中讲到了多种高可用、负载均衡和复制特性解决方案,如下图所示:
cn華少
2021/07/15
3.2K1
进阶数据库系列(二十):PostgreSQL 数据库备份与恢复
此种方式是直接备份数据库物理文件,在pg数据库里,这通常指的是PGDATA变量定义的文件夹,例如:
民工哥
2023/08/22
8.4K0
进阶数据库系列(二十):PostgreSQL 数据库备份与恢复
如何在服务器上更改MySQL数据库目录
数据库的大小将会随着时间的推移而增长,有时会超出文件系统的空间。当它们与其余操作系统的部分位于同一分区时,您也可能会遇到I / O争用的问题。RAID,网络块存储和其他设备可以提供冗余和其他功能。无论您是想要添加更多空间,评估优化性能,还是希望利用其他存储功能的优势,本教程都将指导您重新定位MySQL的数据目录。
不会飞的蝴蝶
2018/07/13
7.1K0
再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应。大家发现了另一款开源的数据库: PostgreSQL。
sanshengshui
2019/09/11
2.6K0
再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
PostgreSQL 之 pg_rewind使用详解
是postgresql主丛数据库之同步数据目录的工具。需要目标服务器在postgresql.conf 中允许wal_log_hints,或者在 initdb初始化集群时允许 checksums ,full_page_writes也必须为on
星哥玩云
2022/08/17
1.7K0
从零开始学PostgreSQL (六): 备份和恢复
PostgreSQL 提供了多种备份和恢复策略,旨在满足不同规模和需求的数据库环境。以下是 PostgreSQL 备份和恢复的主要方法概览:
DBA实战
2024/09/06
1K0
从零开始学PostgreSQL (六): 备份和恢复
Linux 上安装 PostgreSQL
可以参考:https://www.cnblogs.com/freeweb/p/8006639.html#top
别先生
2020/09/01
6.7K0
Linux 上安装 PostgreSQL
如何在Ubuntu 16.04上移动ownCloud的数据目录
ownCloud是一种能够将您的数字生活存储在私人服务器上的强大解决方案。默认情况下,数据与操作系统保存在同一分区中,这可能会导致可用磁盘空间不足。例如,随着高分辨率图片和高清视频的不断备份,很容易耗尽空间。随着存储需求的增长,可能需要移动ownCloud的data目录。无论您是要添加更多空间还是只是想要更改默认存储位置,本教程都将指导您重新定位ownCloud的data目录。
大瓜皮
2018/10/16
1.8K0
2.5 Linux(Ubuntu18.04)安装数据库PostgreSQL
2.5 Linux(Ubuntu18.04)安装数据库PostgreSQL “卜算子·大数据”一个开源、成体系的大数据学习教程。——每周日更新 本节主要内容: 创建一台database虚拟机(本章称为
王小雷
2019/05/28
1.1K0
推荐阅读
相关推荐
如何在MySQL Ubuntu 16.04上将MySQL数据目录移动到新位置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验