मैं एक PostgreSQL टेबलस्पेस कैसे स्थानांतरित करूं?


12

वहाँ एक तरीका है शारीरिक रूप से एक PostgreSQL 9.3 टेबलस्पेस से स्थानांतरित /old/dirकरने के लिए /new/dir? मैं सिर्फ mvडायरेक्टरी चाहता हूं और PostgreSQL को बताऊंगा कि टेबलस्पेस अब स्थित है /new/dir। लगता है कि ALTER TABLESPACEकेवल आपको नाम बदलने देता है।

मैं एक नया टेबल बनाने और डेटाबेस को उसके पास ले जाने से बचना चाहता हूँ। मुझे लगता है कि यह एक धीमी प्रतिलिपि प्रक्रिया होगी जिसमें बहुत समय और डिस्क स्थान की आवश्यकता होती है। मैं भी सहानुभूति /old/dirरखने से बचना चाहता हूं /new/dir


चाल / पुराने / डीआईआर को बहुत अधिक / डीआईआर करने के लिए, पुराने / डीआईआर पर नए / डीआईआर को माउंट करें, डेटा को पुराने / डीआईआर के लिए ver_old dir से कॉपी करें?
सिंप्लेक्सियो

जवाबों:


12

मैं मानता हूं कि आपका टेबलस्पेस नाम है tblspc

  1. अपने टेबलस्पेस की ओआईडी प्राप्त करें
test = # select oid, spcname from pg_tablespace WHERE spcname = 'tblspc';
  Oid | spcname
------- + ---------
 24580 | tblspc
(1 पंक्ति)
  1. पोस्टग्रेज बंद करो
$ pg_ctl -D $ PGDATA स्टॉप
  1. निर्देशिका को पुराने एक से नए में स्थानांतरित करें
$ mv / पुराना / dir / नया / dir

या

$ cp -r / पुराना / dir / नया / dir
$ rm -rf / पुराना / dir
  1. टेबलपेस के लिंक को नई डायरेक्टरी में बदलें
$ cd $ PGDATA / pg_tblspc
$ rm 24580
$ ln -s / new / dir 24580
  1. पोस्टग्रेट्स शुरू करें
$ pg_ctl -D $ PGDATA प्रारंभ

फिर, आप देख सकते हैं कि तालिकाओं की निर्देशिका बदल गई है।

परीक्षण = # चयनित pg_tablespace_location (24580);
 pg_tablespace_location
------------------------
 / नई / dir
(1 पंक्ति)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.