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

Bagaimana cara menggunakan wadah PostgreSQL dengan data yang ada?

Untuk membangun jawaban irakli, inilah solusi yang diperbarui:

  • gunakan file Tulis Docker versi 2 yang lebih baru
  • pisahkan volumes bagian
  • setelan ekstra dihapus

docker-compose.yml

version: '2'

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

volumes:
  data: {}

demo

Mulai server basis data Postgres:

$ docker-compose up

Tampilkan semua tabel dalam database. Di terminal lain, bicaralah dengan Postgres container:

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

Itu tidak akan menunjukkan apa-apa, karena databasenya kosong. Buat tabel:

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

Cantumkan tabel yang baru dibuat:

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

Ya! Kami sekarang telah memulai database Postgres menggunakan volume penyimpanan bersama, dan menyimpan beberapa data di dalamnya. Langkah selanjutnya adalah memeriksa apakah data benar-benar tersimpan setelah server berhenti.

Sekarang, matikan wadah server Postgres:

$ docker-compose stop

Mulai wadah Postgres lagi:

$ docker-compose up

Kami berharap server database akan menggunakan kembali penyimpanan, sehingga data kami yang sangat penting masih ada. Periksa:

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

Kami telah berhasil menggunakan file Docker Compose gaya baru untuk menjalankan database Postgres menggunakan volume data eksternal, dan memeriksa apakah itu menjaga data kami tetap aman dan sehat.

menyimpan data

Pertama, buat cadangan, simpan data kita di host:

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

Ambil data kami dari database tamu:

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

Pulihkan cadangan kami (disimpan di host) ke dalam wadah Postgres.

Catatan: gunakan "exec -i", bukan "-it", jika tidak, Anda akan mendapatkan kesalahan "perangkat input bukan TTY".

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

Buat daftar tabel untuk memverifikasi bahwa pemulihan berhasil:

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

Singkatnya, kami telah memverifikasi bahwa kami dapat memulai database, data tetap ada setelah restart, dan kami dapat memulihkan cadangan ke dalamnya dari host.

Terima kasih Tomasz!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psql:FATAL:peran postgres tidak ada

  2. Bagaimana cara mengubah nilai default kolom di PostgreSQL?

  3. cara memeriksa jenis nilai di postgres

  4. Batasan unik Postgres vs indeks

  5. Tidak ada hasil yang dikembalikan oleh kesalahan Kueri di PostgreSQL