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

पोस्टग्रेज़ डॉकर छवि का उपयोग करके डेटा कैसे बनाए रखें?

सबसे पहले, वे पर्यावरण चर संदिग्ध लगते हैं। डॉकर की आधिकारिक छवि के दस्तावेज़ पर एक नज़र डालें , और ध्यान दें कि आपको POSTGRES_DB . की आवश्यकता है , POSTGRES_USER , और POSTGRES_PASSWORD , के बजाय DB_NAME , DB_USER , और DB_PASS

इसके अलावा, ऐसा लगता है कि आप ज्यादातर सही रास्ते पर हैं। यहां एक पूरा उदाहरण दिया गया है:

सबसे पहले, मैं एक पोस्टग्रेज कंटेनर शुरू करता हूं। मैं अपने होम डायरेक्टरी के बाहर कहीं और लगातार स्टोरेज का पता लगा रहा हूं, क्योंकि जैसा कि आपने पहले ही नोट कर लिया है कि फाइलें आपके स्वामित्व में नहीं होंगी, जो आपके होम डायरेक्टरी में भ्रमित करने वाली हो सकती हैं (हालांकि जरूरी नहीं कि समस्याग्रस्त हो):

docker run --rm --name postgres \
  -v /tmp/postgres:/var/lib/postgresql/data \
  -e POSTGRES_DB=larstest \
  -e POSTGRES_USER=lars \
  -e POSTGRES_PASSWORD=secret postgres

चूंकि यह पहली बार है जब मैंने उस डेटा निर्देशिका की ओर इशारा करते हुए पोस्टग्रेज शुरू किया है, हम देखेंगे कि यह डेटाबेस को इनिशियलाइज़ करता है:

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

अब, दूसरी विंडो से, मैं इससे जुड़ सकता हूं...

$ psql -h 172.17.0.4 -U lars larstest
Password for user lars: 
psql (9.5.4, server 9.6.0)
WARNING: psql major version 9.5, server major version 9.6.
         Some psql features might not work.
Type "help" for help.

...और कुछ डेटा बनाएं:

larstest=# create table testtable (id integer);
CREATE TABLE
larstest=# insert into testtable values (1);
INSERT 0 1
larstest=# select * from testtable;
 id 
----
  1
(1 row)

अब, मैं कंटेनर से बाहर निकलता हूं:

^CLOG:  received fast shutdown request
LOG:  aborting any active transactions
FATAL:  terminating connection due to administrator command
LOG:  autovacuum launcher shutting down
LOG:  shutting down
LOG:  database system is shut down

हम सत्यापित कर सकते हैं कि यह अब नहीं चल रहा है:

$ docker ps | grep postgres

लेकिन अगर हम इसे उसी कमांड लाइन तर्कों के साथ फिर से शुरू करते हैं;

docker run --rm --name postgres \
  -v /tmp/postgres:/var/lib/postgresql/data \
  -e POSTGRES_DB=larstest \
  -e POSTGRES_USER=lars \
  -e POSTGRES_PASSWORD=secret postgres

हम देखते हैं कि यह डेटाबेस को इनिशियलाइज़ नहीं करता है, क्योंकि यह पहले से मौजूद है, और सीधे इस पर जाएँ:

LOG:  database system was shut down at 2016-10-21 03:13:50 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

इस बिंदु पर, हम डेटाबेस से फिर से जुड़ सकते हैं और पा सकते हैं कि हमारा डेटा अभी भी मौजूद है:

$ psql -h 172.17.0.2 -U lars larstest
Password for user lars: 
psql (9.5.4, server 9.6.0)
WARNING: psql major version 9.5, server major version 9.6.
         Some psql features might not work.
Type "help" for help.

larstest=# select * from testtable;
 id 
----
  1
(1 row)

इसमें बस इतना ही है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कुल समूह के साथ विंडोज़ फ़ंक्शन को पोस्टग्रेज करता है

  2. PostgreSQL ट्रिगर कुछ भी वापस नहीं कर रहा है

  3. एक जेसन कॉलम के लिए डिफ़ॉल्ट मान सेट करना

  4. कॉलम xxxx के लिए डिफ़ॉल्ट पोस्टग्रेज डीबी में बूलियन टाइप करने के लिए स्वचालित रूप से नहीं डाला जा सकता है

  5. Postgres में -Infinity &Infinity के लिए उपयुक्त मान