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

PostgreSQL 9.0 Backup &Recovery

Trong PostgreSQL, Backup &Recovery rất thân thiện với người dùng so với các cơ sở dữ liệu khác. Nhiều người trong số họ sẽ không đồng ý với điều này, ok đừng tranh luận. Đến với Sao lưu, PostgreSQL không hỗ trợ DỰ PHÒNG TĂNG, tuy nhiên có các công cụ sao lưu rất nhất quán và hoạt động ở cấp độ hệ điều hành để đạt được mục tiêu này.

Bài thuyết trình bằng hình ảnh của tôi về Sao lưu và phục hồi PostgreSQL đưa ra một ý tưởng hoàn chỉnh. Nhìn vào Sơ đồ, bạn có thể tìm ra bản sao lưu nào có thể được sử dụng để khôi phục hoặc khôi phục.

Sao lưu lôgic

các tiện ích pg_dump, pg_restore và pg_dumpall được sử dụng để sao lưu logic. pg_dump và pg_restore sẽ giúp sao lưu cho cấp Cơ sở dữ liệu, cấp giản đồ và cấp bảng. Pg_dumpall được sử dụng cho kết xuất cấp độ cụm.

Ba định dạng được hỗ trợ là pg_dump, Định dạng SQL thuần túy, Định dạng Tùy chỉnh và Định dạng Tar. Các kết xuất Định dạng Tar và Tùy chỉnh tương thích với tiện ích pg_restore trong khi các kết xuất Định dạng SQL Thông thường tương thích với tiện ích psql để khôi phục.

Dưới đây là các ví dụ cho từng cấp độ Sao lưu và với các lệnh khôi phục liên quan.

Lưu ý:Đặt giá trị mặc định cho PGDATABASE, PGUSER, PGPASSWORD và PGPORT trong .bash_profile (Biến môi trường trong Windows)

Kết xuất và khôi phục định dạng SQL thuần túy

$ pg_dump -U username -Fp dbname  >  filename
or
$ pg_dump -U username dbname -f filename
or
$ pg_dump -Fp -U username dbname -f filename

For restoring use psql command

$ psql -U username -f filename dbname
or
postgres=# i SQL-file-name //in psql terminal with i option

Định dạng Tùy chỉnh

$ pg_dump -Fc dbname -f filename
$ pg_restore -Fc -U username -d dbname filename.dmp

Định dạng Tar

$ pg_dump -Ft dbname -f filename
$ pg_restore -U username -d dbname filename
or
$ cat tar-file.tar | psql -U username dbname

Lưu ý:Kết xuất Mức giản đồ và Bảng có thể được thực hiện theo cùng một cách bằng cách thêm các tùy chọn liên quan.

Dump cấp độ cụm:

$pg_dumpall -p portnumber > filename

For restoring use psql command

$ psql -f filename

Có rất nhiều cách tốt nhất để thực hiện các bãi chứa và khôi phục các phương pháp. Đặc biệt, Simon Riggs và Hannu Krosing - cuốn sách “PostgreSQL 9 Administration Cookbook - 2010” là cách tốt để bắt đầu với PostgreSQL Backup and Recovery do www.2ndQuadrant.com xuất bản.

Sao lưu vật lý (Sao lưu hệ thống tệp)

Dự phòng lạnh:

Trong sao lưu lạnh, một bản sao lưu hệ thống tệp đơn giản của thư mục / data khi Postgres Instance gặp sự cố, có nghĩa là, để đạt được bản sao lưu thư mục dữ liệu tự nhất quán, máy chủ cơ sở dữ liệu phải được tắt trước khi sao chép. PostgreSQL mang lại sự linh hoạt để giữ pg_xlog và pg_tblspce ở các điểm gắn kết khác nhau thông qua liên kết mềm. Trong khi sao chép thư mục / data bao gồm dữ liệu của liên kết mềm, hãy sử dụng lệnh bên dưới.

tar czf backup.tar.gz $PGDATA
or
cp -r $PGDATA /backup/
or
rsync -a $PGDATA /wherever/data

Sao lưu nóng (Sao lưu trực tuyến):

Trong Sao lưu nóng, cụm sẽ được thiết lập và chạy và Cơ sở dữ liệu phải ở Chế độ nhật ký lưu trữ. Hai hàm hệ thống sẽ thông báo phiên bản về việc bắt đầu và dừng quá trình Hot Backup (pg_start_backup (), pg_stop_backup ()). Trước khi tiếp tục với Sao lưu trực tuyến, hãy thảo luận về chế độ Nhật ký lưu trữ cơ sở dữ liệu là chế độ bắt buộc đối với Sao lưu trực tuyến.

Bật lưu trữ WAL:

Các bài viết sắp tới của tôi sẽ giới thiệu sơ lược về PITR / Tunning WAL, v.v., hiện tại chúng tôi đang xem xét WAL Archiving. Trong hệ thống cơ sở dữ liệu PostgreSQL, cơ sở dữ liệu thực tế ‘ghi’ vào một tệp bổ sung được gọi là ghi trước nhật ký (WAL) vào đĩa. Nó chứa một bản ghi các lần ghi được thực hiện trong hệ thống cơ sở dữ liệu. Trong trường hợp Sự cố, cơ sở dữ liệu có thể được sửa chữa / phục hồi từ các bản ghi này.

Thông thường, các bản ghi ghi trước nhật ký theo các khoảng thời gian đều đặn (được gọi là Điểm kiểm tra) khớp với cơ sở dữ liệu và sau đó bị xóa vì nó không còn được yêu cầu nữa. Bạn cũng có thể sử dụng WAL làm bản sao lưu vì có một bản ghi của tất cả các lần ghi được thực hiện vào cơ sở dữ liệu.

Khái niệm về Lưu trữ WAL:

Nhật ký ghi trước bao gồm mỗi bản ghi lớn 16 MB, được gọi là các phân đoạn. WALs nằm trong thư mục pg_xlog và nó là thư mục con của "data directory". Tên tệp sẽ được đặt tên theo thứ tự tăng dần bởi PostgreSQL Instance. Để thực hiện sao lưu trên cơ sở WAL, người ta cần một bản sao lưu cơ bản, một bản sao lưu hoàn chỉnh thư mục dữ liệu và các Phân đoạn WAL giữa bản sao lưu cơ sở và ngày hiện tại.

Bạn có thể chọn định cấu hình lưu trữ các phân đoạn WAL bằng cách đặt hai lệnh archive_command và archive_mode của tham số cấu hình trong postgresql.conf. Đặt cụm ở chế độ Lưu trữ-nhật ký yêu cầu RESTART.

archive_mode= on/off (boolean parameter)
archive_command = 'cp –i %p / Archive/Location/ f% '

Lưu ý: % p để sao chép tệp với đường dẫn được sử dụng làm tên tệp và % f không có mục nhập thư mục cho tệp đích.

Để biết thêm thông tin về Quy trình lưu trữ, hãy tham khảo bài đăng Bộ nhớ &Xử lý PostgreSQL 9.0.

Sao lưu Trực tuyến:

Để thực hiện sao lưu trực tuyến:

Step 1 : Issue pg_start_backup('lable') in the psql terminal
postgres=# select pg_start_backup('fb');
Step 2 : OS level copy the $PGDATA directory to any Backup Location
$ cp -r $PGDATA /anylocation
Step 3 : Issue pg_stop_backup() in psql terminal.
postgres=# select pg_stop_backup();

Lưu ý: Không nhất thiết hai hàm này phải chạy trong cùng một kết nối cơ sở dữ liệu. Chế độ sao lưu là toàn cầu và ổn định.

Trong PostgreSQL, không có danh mục để lưu trữ thời gian Bắt đầu và Dừng của bản sao lưu Trực tuyến. Tuy nhiên, khi quá trình sao lưu trực tuyến đang diễn ra, một số tệp được tạo và bị xóa.

pg_start_backup (‘label’) và pg_stop_backup là hai chức năng hệ thống để thực hiện Sao lưu Trực tuyến. Với pg_start_backup (‘label’), một tệp backup_label được tạo trong thư mục $ PGDATA và với pg_stop_backup () một tệp tin ‘wal-segement-number.backup’ được tạo trong $ PGDATA / pg_xlog. Backup_label sẽ cung cấp thời gian bắt đầu và vị trí Checkpoint của WAL Segment, nó cũng sẽ thông báo cho cá thể PostgreSQL rằng Cluster đang ở chế độ BACKUP-MODE. Tệp ‘wal-segment-number.backup’ trong thư mục $ PGDATA / pg_xlog mô tả thời gian bắt đầu và dừng, vị trí Điểm kiểm tra với số phân chia WAL.

Lưu ý:Sau pg_stop_backup (), tệp backup_label sẽ bị xóa bởi phiên bản PostgreSQL.

Đăng nhận xét, đề xuất của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Những thách thức khi mở rộng quy mô cơ sở dữ liệu Moodle PostgreSQL

  2. Chèn các số không ở bên trái trong postgreSQL

  3. Tối ưu hóa truy vấn Postgres (buộc quét chỉ mục)

  4. Viết truy vấn cho nhiều bảng trong php

  5. Trong khi thực hiện PITR, liệu có thể Tạm dừng / Tiếp tục trong PostgreSQL không?