如何在AWS EC2 CentOS 7实例的第二块数据卷上安装PostgreSQL
问题1:调整PostgreSQL数据存储到第二块数据卷的操作步骤
首先明确:你使用的yum安装命令仅会将PostgreSQL的二进制程序、依赖库安装到系统盘,占用空间仅几十MB,无需修改安装路径,仅需要把数据库核心的数据目录指定到第二块数据卷即可,具体操作如下:
- 第一步:完成第二块数据卷的挂载配置
先将第二块EBS卷格式化为XFS/ext4文件系统,写入/etc/fstab配置开机自动挂载,避免重启后挂载丢失,推荐挂载路径为/data/postgresql。挂载完成后修改目录权限,确保PostgreSQL的运行用户可读写:sudo chown -R postgres:postgres /data/postgresql sudo chmod 700 /data/postgresql - 第二步:正常安装PostgreSQL软件包
直接执行你当前的安装命令即可,无需修改:sudo yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs - 第三步:初始化数据目录到第二块卷
跳过默认初始化命令,手动指定数据目录路径执行初始化(路径可根据自己的规划调整,注意版本号和你安装的PostgreSQL版本匹配):sudo postgresql-setup --initdb --pgdata=/data/postgresql/15/data - 第四步:修改服务配置指定数据目录
编辑PostgreSQL的systemd服务配置文件,或者修改/var/lib/pgsql/.bash_profile中的PGDATA环境变量,将其值改为你刚才指定的第二块卷数据目录路径。修改完成后重载systemd配置:sudo systemctl daemon-reload - 第五步:启动验证
启动PostgreSQL服务,执行ps aux | grep postgres检查启动参数中的数据目录是否为你指定的路径,确认无误后设置开机自启:sudo systemctl start postgresql sudo systemctl enable postgresql
如果是已经安装过默认配置、需要迁移存量数据的场景,先停止PostgreSQL服务,将默认数据目录/var/lib/pgsql/data全量复制到第二块卷的目标路径,修改好目录权限后,再按上述步骤修改PGDATA路径重启即可。
问题2:将PostgreSQL数据部署在第二块非系统卷的方案评估
这个方案是生产环境的标准推荐部署方案,不存在不推荐的情况,核心优势如下:
- 存储扩容灵活:可单独扩展数据卷容量,无需调整系统盘配置,也避免了数据库数据占满磁盘导致系统无法登录的故障
- 性能可单独调优:可根据数据库的IO需求单独配置数据卷的IOPS、吞吐量(如选择gp3、io2类型的高性能EBS卷),不需要和系统盘的性能配置绑定
- 备份恢复效率更高:可单独为数据卷创建快照备份,无需备份整个系统盘,数据恢复时也可以单独挂载数据卷到其他实例快速恢复业务
- 隔离风险:系统盘重装、重置等操作不会影响数据卷中的数据库内容,降低误操作导致的数据丢失风险
唯一需要注意的是:第二块卷必须选择持久化的EBS卷,不要使用EC2的实例存储临时卷,否则实例停机或者硬件故障时数据会永久丢失。
内容的提问来源于stack exchange,提问作者Tristan Tran
相关产品推荐
相关产品推荐

