PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मौजूदा डेटा के साथ PostgreSQL कंटेनर का उपयोग कैसे करें?

इराकली के उत्तर पर निर्माण करने के लिए, यहां एक अद्यतन समाधान दिया गया है:

  • नए संस्करण 2 डॉकर कंपोज़ फ़ाइल का उपयोग करें
  • अलग volumes अनुभाग
  • अतिरिक्त सेटिंग हटाई गईं

docker-compose.yml

version: '2'

services:
  postgres9:
    image: postgres:9.4
    expose:
      - 5432
    volumes:
      - data:/var/lib/postgresql/data

volumes:
  data: {}

डेमो

पोस्टग्रेज़ डेटाबेस सर्वर प्रारंभ करें:

$ docker-compose up

डेटाबेस में सभी टेबल दिखाएं। दूसरे टर्मिनल में, कंटेनर के पोस्टग्रेज़ से बात करें:

$ docker exec -it $(docker-compose ps -q postgres9 ) psql -Upostgres -c '\z'

यह कुछ भी नहीं दिखाएगा, क्योंकि डेटाबेस खाली है। एक टेबल बनाएं:

$ docker exec -it $(docker-compose ps -q postgres9 ) psql -Upostgres -c 'create table beer()'

नव निर्मित तालिका की सूची बनाएं:

$ docker exec -it $(docker-compose ps -q postgres9 ) psql -Upostgres -c '\z'

                         Access privileges
 Schema |   Name    | Type  | Access privileges | Column access privileges 
--------+-----------+-------+-------------------+--------------------------
 public | beer      | table |                   | 

वाह! हमने अब एक साझा भंडारण मात्रा का उपयोग करके एक पोस्टग्रेज डेटाबेस शुरू किया है, और इसमें कुछ डेटा संग्रहीत किया है। अगला कदम यह जांचना है कि सर्वर बंद होने के बाद डेटा वास्तव में चिपक जाता है।

अब, Postgres सर्वर कंटेनर को मारें:

$ docker-compose stop

पोस्टग्रेज कंटेनर को फिर से शुरू करें:

$ docker-compose up

हम उम्मीद करते हैं कि डेटाबेस सर्वर भंडारण का पुन:उपयोग करेगा, इसलिए हमारा बहुत महत्वपूर्ण डेटा अभी भी है। जाँच करें:

$ docker exec -it $(docker-compose ps -q postgres9 ) psql -Upostgres -c '\z'
                         Access privileges
Schema |   Name    | Type  | Access privileges | Column access privileges 
--------+-----------+-------+-------------------+--------------------------
public | beer      | table |                   | 

हमने बाहरी डेटा वॉल्यूम का उपयोग करके पोस्टग्रेज़ डेटाबेस चलाने के लिए एक नई शैली की डॉकर कंपोज़ फ़ाइल का सफलतापूर्वक उपयोग किया है, और जाँच की है कि यह हमारे डेटा को सुरक्षित और स्वस्थ रखता है।

डेटा संग्रहित करना

सबसे पहले, एक बैकअप बनाएं, हमारे डेटा को होस्ट पर संग्रहीत करें:

$ docker exec -it $(docker-compose ps -q postgres9 ) pg_dump -Upostgres > backup.sql

अतिथि डेटाबेस से हमारे डेटा को जैप करें:

$ docker exec -it $(docker-compose ps -q postgres9 ) psql -Upostgres -c 'drop table beer'

पोस्टग्रेज़ कंटेनर में हमारे बैकअप (होस्ट पर संग्रहीत) को पुनर्स्थापित करें।

नोट: "exec -i" का उपयोग करें, नहीं "-it", अन्यथा आपको "इनपुट डिवाइस एक TTY नहीं है" त्रुटि मिलेगी।

$ docker exec -i $(docker-compose ps -q postgres9 ) psql -Upostgres < backup.sql

पुनर्स्थापना कार्य को सत्यापित करने के लिए तालिकाएँ सूचीबद्ध करें:

$ docker exec -it $(docker-compose ps -q postgres9 ) psql -Upostgres -c '\z'
                         Access privileges
Schema |   Name    | Type  | Access privileges | Column access privileges 
--------+-----------+-------+-------------------+--------------------------
public | beer      | table |                   | 

संक्षेप में, हमने सत्यापित किया है कि हम एक डेटाबेस शुरू कर सकते हैं, डेटा पुनरारंभ होने के बाद भी बना रहता है, और हम होस्ट से बैकअप को पुनर्स्थापित कर सकते हैं।

धन्यवाद टोमाज़!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubuntu 20.04/18.04/16.04 पर PostgreSQL 12 कैसे स्थापित करें?

  2. PostgreSQL MySQL से कितना अलग है?

  3. कैसे pg_sleep_for () PostgreSQL में काम करता है

  4. पोस्टग्रेएसक्यूएल बराबर टॉप एन विद टाईज़:लिमिट विद टाईज़?

  5. PostgreSQL में दोष सहिष्णुता का विकास:तुल्यकालिक प्रतिबद्धता