Python sao chép postgres

Để 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ều

Nó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
3

Quá 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 Postgres

Nhậ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úng

Tạ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ệu

Nế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

Chủ Đề