PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mempertahankan data menggunakan gambar buruh pelabuhan postgres?

Pertama, variabel lingkungan tersebut terlihat mencurigakan. Lihat dokumentasi untuk gambar resmi Docker , dan perhatikan bahwa Anda memerlukan POSTGRES_DB , POSTGRES_USER , dan POSTGRES_PASSWORD , daripada DB_NAME , DB_USER , dan DB_PASS .

Selain itu, Anda tampaknya sebagian besar berada di jalur yang benar. Berikut ini contoh lengkapnya:

Pertama, saya memulai wadah Postgres. Saya menemukan penyimpanan persisten di suatu tempat di luar direktori home saya, karena seperti yang telah Anda catat bahwa file tidak akan dimiliki oleh Anda, yang dapat membingungkan di direktori home Anda (meskipun tidak selalu bermasalah):

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

Karena ini adalah pertama kalinya saya memulai postgres menunjuk ke direktori data itu, kita akan melihatnya menginisialisasi database:

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:

Sekarang, dari jendela lain, saya dapat menyambungkannya...

$ 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.

...dan buat beberapa data:

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)

Sekarang, saya keluar dari wadah:

^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

Kami dapat memverifikasi bahwa itu tidak lagi berjalan:

$ docker ps | grep postgres

Tetapi jika kita memulainya lagi dengan argumen baris perintah yang sama;

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

Kami melihat bahwa itu tidak menginisialisasi database, karena sudah ada, dan langsung melompat ke:

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

Pada titik ini, kita dapat menghubungkan kembali ke database dan menemukan bahwa data kita masih ada:

$ 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)

Kurang lebih itu saja.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan nama host di postgresql

  2. Adakah cara untuk * tidak * menggunakan pernyataan yang disiapkan sisi server di Postgresql?

  3. Ruby Datamapper .count selalu mengembalikan 0

  4. Mencocokkan pola antara beberapa kolom

  5. Nama elemen XML dari data di Postgres