PostgreSQL 14如何将数据库从pg_default迁移至自定义表空间?
PostgreSQL 14 迁移默认表空间数据库至自定义表空间操作步骤
1. 确认自定义表空间状态
登录PostgreSQL命令行,先确认目标自定义表空间存在且可用:
SELECT spcname, spclocation FROM pg_tablespace;
找到你的自定义表空间名称(示例中用new_tablespace指代),核对其关联目录的空间充足性。
2. 迁移数据库至自定义表空间
方式一:整库切换默认表空间
将目标数据库的默认表空间直接切换到自定义表空间,执行前需确保该数据库无活跃连接(可切换至postgres等其他库执行命令):
ALTER DATABASE your_database_name SET TABLESPACE new_tablespace;
方式二:迁移单个对象(可选)
若无需整库迁移,可单独迁移表或索引:
- 迁移指定表:
ALTER TABLE your_table_name SET TABLESPACE new_tablespace;
- 迁移指定索引:
ALTER INDEX your_index_name SET TABLESPACE new_tablespace;
3. 验证迁移结果
迁移完成后,检查对象的表空间归属是否更新:
- 检查数据库默认表空间:
SELECT datname, spcname FROM pg_database d JOIN pg_tablespace t ON d.dattablespace = t.oid WHERE datname = 'your_database_name';
- 检查指定表的表空间:
SELECT relname, spcname FROM pg_class c JOIN pg_tablespace t ON c.reltablespace = t.oid WHERE relname = 'your_table_name';
4. 清理旧表空间(可选)
确认迁移成功且数据无异常后,可回收原表空间的闲置空间:
VACUUM FULL;
注意:禁止手动删除PostgreSQL数据目录下的文件,所有空间操作需通过数据库命令执行。
重要提醒:操作前务必完成数据库全量备份,建议在业务低峰期执行迁移,避免影响服务可用性。
内容的提问来源于stack exchange,提问作者Nodirali
相关产品推荐
相关产品推荐

