Để kết nối tới Cơ sở dữ liệu PostgreSQL trong Python 3 setting, chúng ta cần sử dụng 1 thư viện của Python 3 đó là psycopg2. Nó cung cấp các phương thức để thao tác với Cơ sở dữ liệu PostgreSQL. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách cài đặt cũng như kết nối với PostgreSQL
Tạo cơ sở dữ liệu PostgreSQL
Đầu tiên chúng ta tạo 1 cơ sở dữ liệu để thực hiện kết nối. Đăng nhập bằng user postgres và thực hiện lệnh dưới đây
Nhìn bề ngoài, PG Backups cung cấp một cách để nắm bắt các bản sao lưu thường xuyên của cơ sở dữ liệu Heroku Postgres của bạn. Tuy nhiên, do kiến trúc có mục đích chung và việc sử dụng các tiện ích PostgreSQL tiêu chuẩn, nó cũng là một công cụ hữu ích có khả năng xuất hoặc nhập từ cơ sở dữ liệu PostgreSQL bên ngoài
Một cách khác để sử dụng kết xuất và khôi phục phương thức nhập/xuất nếu bạn có phiên bản Postgres trên máy cục bộ của mình là sử dụng lệnh pg. đẩy và pg. kéo các lệnh CLI để tự động hóa quy trình
Xuất khẩu
PG Backups sử dụng công cụ PostgreSQL
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
1 gốc để tạo các tệp sao lưu của nó, làm cho việc xuất sang các bản cài đặt PostgreSQL khác trở nên đơn giản. Tệp sao lưu kết quả sử dụng tùy chọn định dạng tùy chỉnh trong $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
1. So với định dạng văn bản thuần túy, các tùy chọn định dạng tùy chỉnh dẫn đến các tệp sao lưu có thể nhỏ hơn nhiềuNói chung, PGBackups dành cho cơ sở dữ liệu được tải vừa phải lên tới 20 GB. Tranh giành I/O, bộ nhớ và CPU cần thiết để sao lưu cơ sở dữ liệu lớn hơn trở nên khó khăn ở mức tải vừa phải và thời gian chạy lâu hơn sẽ làm tăng khả năng xảy ra lỗi khiến quá trình sao lưu của bạn kết thúc sớm. Đối với cơ sở dữ liệu lớn hơn 20 GB, hãy xem Chụp bản sao lưu hợp lý trên cơ sở dữ liệu lớn hơn
Tải xuống bản sao lưu
Để xuất dữ liệu từ cơ sở dữ liệu Heroku Postgres của bạn, hãy tạo bản sao lưu mới và tải xuống
$ heroku pg:backups:capture --app example-app
$ heroku pg:backups:download --app example-app
Khôi phục cơ sở dữ liệu cục bộ
Tải kết xuất vào cơ sở dữ liệu cục bộ của bạn bằng công cụ pg_restore. Nếu các đối tượng đã tồn tại trong bản sao cục bộ của cơ sở dữ liệu, bạn có thể gặp phải sự không nhất quán khi thực hiện
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3Quá trình này thường tạo ra một số cảnh báo, do sự khác biệt giữa cơ sở dữ liệu Heroku của bạn và cơ sở dữ liệu cục bộ, nhưng chúng thường an toàn để bỏ qua
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
Nếu đang sử dụng phiên bản cũ của
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3, bạn có thể thấy một lỗi chẳng hạn như $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
5 khi cố chạy $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3. Đảm bảo rằng phiên bản $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3 bạn đang sử dụng được cập nhật và tương thích với phiên bản của cơ sở dữ liệu đã xuất. Bạn có thể kiểm tra phiên bản $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3 của mình bằng cách chạy $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3
Bạn có thể tùy chọn sử dụng cờ
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
4 với $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
3 để song song khôi phục kết xuất. Tùy chọn này chỉ hỗ trợ các định dạng lưu trữ thư mục và tùy chỉnh. Thông tin thêm về tùy chọn này có thể được tìm thấy trong tài liệu PostgresNhập khẩu
PG Backups có thể được sử dụng như một công cụ thuận tiện để nhập các kết xuất cơ sở dữ liệu từ các nguồn khác vào cơ sở dữ liệu Heroku Postgres của bạn
Nếu bạn đang nhập dữ liệu như một phần của quá trình khởi tạo ứng dụng mới, trước tiên bạn phải tạo và định cấu hình ứng dụng trên Heroku trước khi thực hiện nhập
Tạo tệp kết xuất
Kết xuất cơ sở dữ liệu cục bộ của bạn ở định dạng nén bằng công cụ pg_dump mã nguồn mở
# set the password in an environment variable
export PGPASSWORD=mypassword # linux/mac
set PGPASSWORD=mypassword # windows
# create the database dump
$ pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump
Nhập vào Heroku Postgres
Để PG Backups truy cập và nhập tệp kết xuất của bạn, bạn phải tải tệp lên một nơi nào đó có URL có thể truy cập HTTP. Chúng tôi khuyên bạn nên sử dụng Amazon S3 với url đã ký
Lệnh
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
6 loại bỏ bất kỳ bảng nào và các đối tượng cơ sở dữ liệu khác trước khi tạo lại chúngTạo URL đã ký bằng bảng điều khiển aws
$ aws s3 presign s3://your-bucket-address/your-object
Sử dụng URL tệp thô trong lệnh
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
6________số 8$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
8 đại diện cho $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
9 của cơ sở dữ liệu bạn muốn khôi phục. Bạn phải chỉ định một biến cấu hình cơ sở dữ liệu để khôi phục cơ sở dữ liệuNếu bạn đang sử dụng hệ điều hành giống Unix, hãy đảm bảo sử dụng dấu nháy đơn xung quanh URL S3 tạm thời, vì URL này có thể chứa dấu và và các ký tự khác gây nhầm lẫn cho trình bao của bạn. Nếu bạn đang chạy Windows, bạn phải sử dụng dấu ngoặc kép
Khi bạn đã hoàn tất quá trình nhập, hãy xóa tệp kết xuất khỏi vị trí lưu trữ nếu tệp không còn cần thiết