PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để duy trì dữ liệu bằng cách sử dụng hình ảnh docker postgres?

Đầu tiên, những biến môi trường đó trông đáng ngờ. Hãy xem tài liệu về hình ảnh Docker chính thức và lưu ý rằng bạn cần POSTGRES_DB , POSTGRES_USERPOSTGRES_PASSWORD , thay vì DB_NAME , DB_USERDB_PASS .

Ngoài ra, bạn dường như hầu hết đang đi đúng hướng. Đây là một ví dụ đầy đủ:

Đầu tiên, tôi bắt đầu một vùng chứa Postgres. Tôi đang định vị bộ nhớ liên tục ở đâu đó bên ngoài thư mục chính của mình, vì như bạn đã lưu ý rằng các tệp sẽ không thuộc quyền sở hữu của bạn, điều này có thể gây nhầm lẫn trong thư mục chính của bạn (mặc dù không nhất thiết có vấn đề):

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

Vì đây là lần đầu tiên tôi bắt đầu postgres trỏ vào thư mục dữ liệu đó, chúng tôi sẽ thấy nó khởi tạo cơ sở dữ liệu:

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:

Bây giờ, từ một cửa sổ khác, tôi có thể kết nối với nó ...

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

... và tạo một số dữ liệu:

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)

Bây giờ, tôi thoát khỏi vùng chứa:

^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

Chúng tôi có thể xác minh rằng nó không còn chạy nữa:

$ docker ps | grep postgres

Nhưng nếu chúng ta khởi động lại nó với cùng các đối số dòng lệnh;

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

Chúng tôi thấy rằng nó không khởi tạo cơ sở dữ liệu, vì nó đã tồn tại và chuyển thẳng đến:

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

Tại thời điểm này, chúng tôi có thể kết nối lại với cơ sở dữ liệu và thấy rằng dữ liệu của chúng tôi vẫn tồn tại:

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

Đó là tất cả những gì cần có.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể tách một truy vấn thành nhiều truy vấn hoặc tạo song song để tăng tốc độ truy vấn không?

  2. Tải kết xuất Postgres sau khi docker-soạn lên

  3. Chọn chỉ mục phù hợp cho truy vấn PostgreSQL

  4. Cài đặt icu4c phiên bản 63 với Homebrew

  5. Tạo chuỗi tháng cho mọi hàng trong Oracle