文章目录
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 8
版本:4.5.10
文档用途
瀚高数据库表空间位置变更及表空间的数据迁移
详细信息
1.将原表空间下的数据备份
sql
pg_dump -F c -f /opt/db111.dmp -C -v -E UTF8 -U sysdba -d db111 >>/opt/db111.txt 2>&1
2.删除原有表空间,删除表空间前请先删除表空间内的对象,否则会提示表空间目录不为空不允许删除
sql
highgo=# \l+
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace |
Description
-----------+--------+----------+-------------+-------------+-------------------+----------+------------+----
----------------------------------------
db111 | sysdba | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 10018 kB | db111 |
highgo=# \db
List of tablespaces
Name | Owner | Location
------------+--------+----------
pg_default | sysdba |
pg_global | sysdba |
db111 | sysdba | /opt
可以看到表空间db111关联的库为db111,位置为/opt,此时如果只删除表空间会报错,先删除数据库后才能正常删除表空间
sql
highgo=# drop tablespace db111;
ERROR: tablespace "db111" is not empty
highgo=# drop database db111;
DROP DATABASE
highgo=# drop tablespace db111;
DROP TABLESPACE
highgo=#
3.新建表空间和数据库
sql
highgo=# create tablespace db111 location '/data/hgtbs01';
CREATE TABLESPACE
highgo=# create database db111;
CREATE DATABASE
highgo=# alter database db111 tablespace db111;
ALTER DATABASE
4.恢复数据
sql
pg_restore -U sysdba -d db111 -v /opt/db111.dmp >> /opt/db111.txt 2>&1
5.验证数据
sql
[root@CentOS opt]# psql -U sysdba -d db111
Password for user sysdba:
NOTICE:
-------------------------------------------
Login User: sysdba
Login time: 2025-04-21 01:05:34.040101+08
Login Address: [local]
Last Login Status: SUCCESS
Login Failures: 0
Valied Until: infinity
-------------------------------------------
psql (4.5.10.2)
Type "help" for help.
db111=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------------+-------+--------
public | hg_t_audit_log | table | syssao
public | test111 | table | sysdba
(2 rows)
db111=# select * from test111;
a
---
3
3
3
(3 rows)