sql >> Databáze >  >> RDS >> PostgreSQL

Jak používat kontejner PostgreSQL se stávajícími daty?

Chcete-li stavět na odpovědi irakli, zde je aktualizované řešení:

  • použijte novější verzi 2 souboru Docker Compose
  • samostatné volumes sekce
  • další nastavení byla smazána

docker-compose.yml

version: '2'

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

volumes:
  data: {}

ukázka

Spusťte databázový server Postgres:

$ docker-compose up

Zobrazit všechny tabulky v databázi. V jiném terminálu si promluvte s Postgresem v kontejneru:

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

Neukáže nic, protože databáze je prázdná. Vytvořte tabulku:

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

Seznam nově vytvořené tabulky:

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

Hurá! Nyní jsme spustili databázi Postgres pomocí sdíleného úložného svazku a uložili do ní některá data. Dalším krokem je zkontrolovat, zda se data po zastavení serveru skutečně drží.

Nyní zabijte kontejner serveru Postgres:

$ docker-compose stop

Znovu spusťte kontejner Postgres:

$ docker-compose up

Očekáváme, že databázový server znovu použije úložiště, takže naše velmi důležitá data jsou stále tam. Zkontrolujte:

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

Úspěšně jsme použili soubor Docker Compose nového stylu ke spuštění databáze Postgres pomocí externího datového svazku a zkontrolovali jsme, že udržuje naše data v bezpečí a v pořádku.

ukládání dat

Nejprve si vytvořte zálohu a uložte naše data na hostitele:

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

Zapněte naše data z databáze hostů:

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

Obnovte naši zálohu (uloženou na hostiteli) do kontejneru Postgres.

Poznámka: použijte "exec -i", ne "-it", jinak se zobrazí chyba "vstupní zařízení není TTY".

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

Vyjmenujte tabulky, abyste ověřili, že obnovení proběhlo:

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

Abych to shrnul, ověřili jsme, že můžeme spustit databázi, data po restartu přetrvávají a můžeme do ní obnovit zálohu z hostitele.

Díky Tomaszi!



  1. SQL Server 2000 – propojený server

  2. Přehled důvěryhodných rozšíření v PostgreSQL 13

  3. Len() vs datalength() v SQL Server 2005

  4. Hvězdné schéma vs. schéma sněhové vločky