Làm cách nào để di chuyển một vùng bảng PostgreSQL?


12

Có cách nào để di chuyển vật lý một không gian bảng PostgreQuery 9.3 từ /old/dirsang /new/dirkhông? Tôi chỉ muốn mvthư mục và nói với PostgreSQL rằng không gian bảng hiện được đặt tại /new/dir. Hình như ALTER TABLESPACEchỉ cho phép bạn đổi tên.

Tôi muốn tránh tạo một vùng bảng mới và di chuyển cơ sở dữ liệu đến nó. Tôi cho rằng đó sẽ là một quá trình sao chép chậm đòi hỏi nhiều thời gian và dung lượng đĩa. Tôi cũng muốn tránh liên /old/dirkết đến /new/dir.


di chuyển / old / dir sang Veryold / dir, gắn new / dir vào old / dir, sao chép dữ liệu từ ver_old dir sang old / dir?
Simplexio

Câu trả lời:


12

Tôi giả sử rằng tên không gian bảng của bạn là tblspc.

  1. Nhận Oid của không gian bảng của bạn
test = # CHỌN oid, spcname TỪ pg_tablespace WHERE spcname = 'tblspc';
  oid | tên gọi
------- + ---------
 24580 | tblspc
(1 hàng)
  1. Dừng bài
$ pg_ctl -D $ PGDATA dừng
  1. Di chuyển thư mục từ cái cũ sang cái mới
$ mv / cũ / dir / mới / dir

hoặc là

$ cp -r / cũ / dir / mới / dir
$ rm -rf / cũ / dir
  1. Thay đổi liên kết của không gian bảng sang thư mục mới
$ cd $ PGDATA / pg_tblspc
$ rm 24580
$ ln -s / mới / dir 24580
  1. Bắt đầu postgres
$ pg_ctl -D $ PGDATA bắt đầu

Sau đó, bạn có thể thấy thư mục của không gian bảng đã thay đổi.

test = # CHỌN pg_tablespace_location (24580);
 pg_tablespace_location
------------------------
 / mới / thư mục
(1 hàng)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.