docker安裝的postgresql的基本使用


1、查看本地postgresql鏡像

[root@localhost home]# docker images |grep postgres
postgres                    latest              0d2531ee3abd        4 days ago          397MB

2、初始化鏡像

[root@localhost home]# docker run --name postgres2 -e POSTGRES_PASSWORD=password -p 5432:5432 -v pgdata:/var/lib/postgresql/data -d postgres
72c5af7ed83cf389d8a950411dd25124d0feae1b017213818d1b19d2609c7a49

-p端口映射

-v將數據存到宿主服務器

-e POSTGRES_PASSWORD 密碼(默認用戶名postgres)

-e TZ=PRC時區,中國

-d后台運行

--name容器名稱

時區問題

如果在啟動容器時不設置時區,默認為UTC,使用now()設置默認值的時候將有時間差。

3、進入鏡像

[root@localhost home]# docker exec -it postgres2 /bin/bash
root@72c5af7ed83c:/# ls
bin  boot  dev  docker-entrypoint-initdb.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

鏡像的data目錄在 /var/lib/postgresql/data

root@72c5af7ed83c:/# cd /var/lib/postgresql/data
root@72c5af7ed83c:/var/lib/postgresql/data# ls
base          pg_dynshmem    pg_logical    pg_replslot   pg_stat      pg_tblspc    pg_wal                postgresql.conf
global        pg_hba.conf    pg_multixact  pg_serial     pg_stat_tmp  pg_twophase  pg_xact               postmaster.opts
pg_commit_ts  pg_ident.conf  pg_notify     pg_snapshots  pg_subtrans  PG_VERSION   postgresql.auto.conf  postmaster.pid

4、進入postgresql的工具目錄 /usr/lib/postgresql/12/bin

root@72c5af7ed83c:/# cd /usr/lib/postgresql/12/bin
root@72c5af7ed83c:/usr/lib/postgresql/12/bin# ls
clusterdb   dropdb    oid2name           pgbench       pg_controldata  pg_dumpall     pg_recvlogical  pg_rewind      pg_test_timing  postgres    reindexdb
createdb    dropuser  pg_archivecleanup  pg_checksums  pg_ctl          pg_isready     pg_resetwal     pg_standby     pg_upgrade      postmaster  vacuumdb
createuser  initdb    pg_basebackup      pg_config     pg_dump         pg_receivewal  pg_restore      pg_test_fsync  pg_waldump      psql        vacuumlo

5、連接數據庫

root@72c5af7ed83c:/usr/lib/postgresql/12/bin# psql -Upostgres
psql (12.2 (Debian 12.2-1.pgdg100+1))
Type "help" for help.

postgres=#

6、創建數據庫db1,在db1中插入對象,備份db1的數據,還原到db2

--創建數據庫
postgres=# CREATE DATABASE DB1; CREATE DATABASE postgres=# CREATE DATABASE DB2; CREATE DATABASE
--查看數據庫
postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+------------+------------+----------------------- db1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | db2 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (5 rows)
--切換數據庫 postgres
=# \c db1 You are now connected to database "db1" as user "postgres". db1=# create table t1(a int); CREATE TABLE db1=# insert into t1 values (123); INSERT 0 1 db1=# select * from t1; a ----- 123 (1 row)

備份

./pg_dump -Upostgres -ddb1 -F c -f dump.sql

還原

./pg_restore -Upostgres -ddb2 -Fc  dump.dmp

查看還原結果

root@72c5af7ed83c:/usr/lib/postgresql/12/bin# psql -Upostgres -d db2
psql (12.2 (Debian 12.2-1.pgdg100+1))
Type "help" for help.

db2=# select * from t1;
  a
-----
 123
(1 row)

---end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM