表空间迁移

文章目录

环境

系统平台: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)
相关推荐
2401_873587822 小时前
Linux——高级IO
服务器·数据库·php
liux35282 小时前
使用DataX实现MySQL到MySQL的批量表同步(灵活配置方案)
数据库·mysql
程序员夏末2 小时前
【JchatMind智能体 | 第二天】为何选 PostgreSQL + pgvector 而非 MySQL?
数据库·mysql·postgresql·ai编程·ai agent
数据知道2 小时前
详解MongoDB标签感知分片:基于区域的数据分布控制与优化策略
数据库·mongodb
xcLeigh2 小时前
复杂 SQL 过滤时机过晚?金仓基于代价的连接条件下推方案来了
java·数据库·sql语句·union·金仓·kingbasees
wwwwanggy2 小时前
【MySQL】表空间丢失处理(Tablespace is missing for table 错误处理)
数据库·mysql
Mr. Cao code2 小时前
快速部署MySQL 8.0:二进制安装全攻略
运维·数据库·mysql
herinspace2 小时前
管家婆iShop如何调整商品成本?
服务器·数据库·学习·电脑·excel
Nuopiane2 小时前
Mypal3(9)
前端·javascript·数据库