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

Các công cụ mã nguồn mở hàng đầu cho PostgreSQL Migrations

Di chuyển cơ sở dữ liệu là quá trình di chuyển dữ liệu từ một hoặc nhiều cơ sở dữ liệu nguồn sang một hoặc nhiều cơ sở dữ liệu đích bằng cách sử dụng một dịch vụ hoặc công cụ. Có nhiều kiểu di cư khác nhau. Bạn có thể di chuyển từ một công nghệ sang một công nghệ khác, đến một trung tâm dữ liệu khác hoặc lên đám mây, hoặc thậm chí ở cùng một nơi và cùng một công nghệ sang một máy khác. Công cụ tốt nhất để di chuyển PostgreSQL phụ thuộc vào loại di chuyển và các yêu cầu như tính khả dụng hoặc khả năng chịu thời gian chết và đôi khi rất khó để tìm ra công cụ tốt nhất để thực hiện công việc.

Trong blog này, chúng tôi sẽ đề cập đến một số công cụ mã nguồn mở để di chuyển PostgreSQL với tổng quan ngắn gọn về từng tùy chọn.

Công cụ Di chuyển Sao lưu và Khôi phục

Đây có thể là cách dễ nhất để thực hiện di chuyển dữ liệu, nhưng cũng là cách chậm nhất về Mục tiêu thời gian khôi phục (RTO). Sử dụng phương pháp này có nghĩa là bạn sẽ sao lưu từ cơ sở dữ liệu hiện tại của mình, hầu hết có thể là bản sao lưu hợp lý nếu bạn muốn khôi phục nó trong một phiên bản hoặc cơ sở hạ tầng khác, sao chép kết xuất và khôi phục nó trong máy chủ mới. Tùy thuộc vào lượng dữ liệu, có thể mất rất nhiều thời gian, nhưng đó là cách cơ bản để di chuyển cơ sở dữ liệu của bạn. Hãy xem một số công cụ cho việc này.

pgdump / pgdumpall

pg_dump là một tiện ích để sao lưu một cơ sở dữ liệu PostgreSQL. Nó tạo các bản sao lưu nhất quán ngay cả khi cơ sở dữ liệu đang được sử dụng đồng thời, vì nó không chặn người dùng khác. Để sao lưu toàn bộ cụm hoặc để sao lưu các đối tượng chung cho tất cả cơ sở dữ liệu trong một cụm (chẳng hạn như vai trò và không gian bảng), bạn phải sử dụng pg_dumpall thay thế.

Kết xuất có thể được xuất ra ở định dạng tập lệnh hoặc tệp lưu trữ. Tập lệnh kết xuất là các tệp văn bản thuần túy chứa các lệnh SQL cần thiết để cấu trúc lại cơ sở dữ liệu về trạng thái tại thời điểm nó được lưu. Nó có thể được sử dụng để xây dựng lại cơ sở dữ liệu trên các máy khác, các kiến ​​trúc khác hoặc thậm chí trên các sản phẩm cơ sở dữ liệu SQL khác.

pg_basebackup

pg_basebackup được sử dụng để sao lưu cơ sở của một cụm cơ sở dữ liệu PostgreSQL đang chạy. Bản sao lưu được thực hiện mà không ảnh hưởng đến các máy khách cơ sở dữ liệu khác và có thể được sử dụng cho cả PITR (Point-In-Time-Recovery) và như một điểm khởi đầu của một máy chủ dự phòng Streaming Replication. Nó tạo bản sao chính xác các tệp của cụm cơ sở dữ liệu trong khi đảm bảo máy chủ được đưa vào và ra khỏi chế độ sao lưu tự động. Các bản sao lưu luôn được lấy toàn bộ cụm cơ sở dữ liệu; không thể sao lưu các cơ sở dữ liệu riêng lẻ hoặc các đối tượng cơ sở dữ liệu.

pgBackRest

pgBackRest là một công cụ sao lưu mã nguồn mở tạo các bản sao lưu vật lý với một số cải tiến so với công cụ pg_basebackup cổ điển. Bạn có thể sử dụng pgBackRest để thực hiện sao chép cơ sở dữ liệu ban đầu cho Nhân bản truyền trực tuyến bằng cách sử dụng bản sao lưu hiện có hoặc bạn có thể sử dụng tùy chọn delta để xây dựng lại máy chủ dự phòng cũ.

Một số tính năng quan trọng nhất của pgBackRest là:

  • Sao lưu và khôi phục song song
  • Hoạt động cục bộ hoặc từ xa
  • Bản sao lưu đầy đủ, tăng dần và chênh lệch
  • Hết hạn Xoay vòng sao lưu và Lưu trữ
  • Kiểm tra tính toàn vẹn của bản sao lưu
  • Tiếp tục sao lưu
  • Khôi phục Delta
  • Mã hóa

Công cụ Di chuyển PostgreSQL

Thay vì sử dụng công cụ sao lưu, có các tiện ích khác nhau để thực hiện việc di chuyển này theo cách nhanh hơn, với các phương pháp khác nhau. Nó có thể sử dụng cách tiếp cận ETL, hoặc thậm chí định cấu hình sao chép giữa các công nghệ cơ sở dữ liệu khác nhau bằng cách sử dụng cùng một khái niệm về Trích xuất - Chuyển đổi - Tải. Hãy xem một số công cụ này.

pg_chameleon

pg_chameleon là một hệ thống sao chép từ MySQL sang PostgreSQL. Nó có thể kết nối với giao thức nhân bản MySQL và sao chép các thay đổi dữ liệu trong PostgreSQL. Cho dù người dùng cần thiết lập một bản sao vĩnh viễn giữa MySQL và PostgreSQL hoặc thực hiện di chuyển động cơ, pg_chameleon là một lựa chọn tốt cho nhiệm vụ.

Các tính năng chính là:

  • Đọc từ nhiều lược đồ MySQL và khôi phục chúng vào cơ sở dữ liệu PostgreSQL đích
  • Thiết lập PostgreSQL để hoạt động như một MySQL slave
  • Hỗ trợ DDL cơ bản (TẠO / DROP / ALTER TABLE, DROP PRIMARY KEY / TRUNCATE, RENAME)
  • Các bảng tạo ra lỗi sẽ tự động bị loại trừ khỏi bản sao
  • Khả năng làm mới các bảng hoặc lược đồ đơn lẻ
  • Tách bản sao khỏi MySQL để hỗ trợ di chuyển
  • Ghi đè kiểu dữ liệu
  • Quy trình ion hóa init_replica
  • Quy trình sao chép Daemonized với hai quy trình con riêng biệt, một quy trình đọc và một quy trình phát lại

pgloader

pgloader tải dữ liệu từ nhiều nguồn khác nhau vào PostgreSQL. Nó có thể chuyển đổi dữ liệu mà nó đọc được và gửi SQL thô trước và sau khi tải. Nó sử dụng giao thức COPY PostgreSQL để truyền dữ liệu vào máy chủ và quản lý các lỗi bằng cách điền vào một cặp tệp từ chối.dat và từ chối.log.

Nhờ có thể tải dữ liệu trực tiếp từ nguồn cơ sở dữ liệu, pgloader cũng hỗ trợ di chuyển từ các sản phẩm khác sang PostgreSQL. Trong chế độ hoạt động này, pgloader xử lý cả lược đồ và phần dữ liệu của quá trình di chuyển, trong một lệnh không người lái duy nhất, cho phép thực hiện Di chuyển liên tục.

Các tính năng chính là:

  • Hỗ trợ nhiều định dạng nguồn, như tệp CSV, db3 và IBM IXF
  • Chuyển đổi dữ liệu nhanh chóng
  • Phép chiếu Toàn trường
  • Đọc từ các tệp nén (zip, tar và gzip)
  • Hỗ trợ HTTP (S)
  • Khám phá lược đồ mục tiêu
  • Khi lỗi dừng / tiếp tục các tùy chọn tiếp theo
  • Trước / Đăng các lệnh SQL
  • Di chuyển bằng một lệnh
  • Khám phá lược đồ
  • Quy tắc truyền do người dùng xác định
  • Di chuyển một phần bao gồm / loại trừ bảng
  • Giản đồ hoặc Chỉ dữ liệu
  • Chế độ xem cụ thể hóa hoặc ghi lại giản đồ một cách nhanh chóng
  • Di chuyển liên tục

Ora2Pg

Ora2Pg là một công cụ miễn phí được sử dụng để di chuyển cơ sở dữ liệu Oracle hoặc MySQL sang một lược đồ tương thích với PostgreSQL. Nó kết nối cơ sở dữ liệu hiện tại của bạn, quét nó và trích xuất cấu trúc hoặc dữ liệu của nó, sau đó tạo các tập lệnh SQL mà bạn có thể tải vào cơ sở dữ liệu PostgreSQL của mình.

Các tính năng chính là:

  • Xuất lược đồ cơ sở dữ liệu đầy đủ (bảng, dạng xem, chuỗi, chỉ mục), với các ràng buộc kiểm tra, khóa chính, duy nhất và khóa ngoài
  • Xuất tài trợ / đặc quyền cho người dùng và nhóm
  • Xuất phạm vi / phân vùng danh sách và tiêu đề con
  • Xuất lựa chọn bảng (bằng cách chỉ định tên bảng).
  • Xuất các hàm, trình kích hoạt, thủ tục, gói và nội dung gói được xác định trước
  • Xuất toàn bộ dữ liệu hoặc tuân theo mệnh đề WHERE
  • Hỗ trợ đầy đủ đối tượng Oracle BLOB dưới dạng PG BYTEA
  • Xuất các dạng xem Oracle dưới dạng bảng PG
  • Xuất các kiểu do người dùng Oracle xác định
  • Cung cấp một số chuyển đổi tự động cơ bản của mã PLSQL sang PLPGSQL
  • Xuất bảng Oracle dưới dạng bảng trình bao bọc dữ liệu nước ngoài
  • Xuất chế độ xem cụ thể hóa
  • Hiển thị báo cáo chi tiết về nội dung cơ sở dữ liệu Oracle
  • Đánh giá chi phí di chuyển của cơ sở dữ liệu Oracle
  • Đánh giá mức độ khó di chuyển của cơ sở dữ liệu Oracle
  • Đánh giá chi phí di chuyển của mã PL / SQL từ một tệp
  • Đánh giá chi phí di chuyển của các truy vấn Oracle SQL được lưu trữ trong một tệp
  • Tạo tệp ktr XML để sử dụng với Bộ tích hợp dữ liệu Penthalo (Ấm đun nước)
  • Xuất bộ định vị Oracle và hình học không gian sang PostGis
  • Xuất DBLINK dưới dạng Oracle FDW
  • Xuất SYNONYMS dưới dạng chế độ xem
  • Xuất DIRECTORY dưới dạng một bảng hoặc thư mục bên ngoài cho phần mở rộng external_file
  • Xuất toàn bộ MySQL giống như cơ sở dữ liệu Oracle

Có nhiều tùy chọn ETL khả dụng hơn, như Pentaho hoặc Talen, nhưng những tùy chọn đó thiên về tích hợp dữ liệu hoặc quản lý dữ liệu hơn là di chuyển, vì vậy chúng tôi sẽ không mô tả chúng ở đây để tránh một bài đăng blog mở rộng. Bạn có thể tìm thêm thông tin tại đây.

PostgreSQL Logical Replication for Migrations

Sao chép lôgic là phương pháp sao chép các đối tượng dữ liệu và các thay đổi của chúng, dựa trên nhận dạng bản sao của chúng (thường là khóa chính). Nó dựa trên chế độ xuất bản và đăng ký, trong đó một hoặc nhiều người đăng ký đăng ký một hoặc nhiều ấn phẩm trên một nút nhà xuất bản.

Ấn phẩm là một tập hợp các thay đổi được tạo ra từ một bảng hoặc một nhóm bảng (còn được gọi là tập sao chép). Nút nơi một ấn phẩm được xác định được gọi là nhà xuất bản. Đăng ký là mặt sau của sao chép hợp lý. Nút nơi đăng ký được xác định được gọi là người đăng ký và nó xác định kết nối với cơ sở dữ liệu khác và tập hợp các ấn phẩm (một hoặc nhiều) mà nó muốn đăng ký. Người đăng ký lấy dữ liệu từ các ấn phẩm mà họ đăng ký.

Phương pháp này có thể được sử dụng để di chuyển hoặc nâng cấp cơ sở dữ liệu PostgreSQL của bạn.

Để biết thêm thông tin, bạn có thể tham khảo bài đăng trên blog tương ứng về nâng cấp PostgreSQL với thời gian chết bằng không.

Kết luận

Di chuyển là một nhiệm vụ khó khăn và rủi ro, vì bạn đang di chuyển hoặc chuyển đổi dữ liệu từ một (hoặc nhiều) nguồn sang một mục tiêu (hoặc nhiều hơn một) và thậm chí còn tệ hơn nếu mục tiêu của bạn là động cơ khác nhau. Vì vậy, bạn sẽ cần phải có một kế hoạch tốt, với các bước chi tiết, và tất nhiên, một môi trường thử nghiệm để kiểm tra tất cả các giai đoạn của quá trình di chuyển. Trong blog này, chúng tôi đã đề cập đến một số công cụ giúp thực hiện nhiệm vụ này và lựa chọn tốt nhất sẽ tùy thuộc vào yêu cầu của bạn về tính khả dụng của hệ thống 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. Cài đặt PostgreSQL trên Ubuntu cho Ruby on Rails

  2. Nâng cấp dựa trên trình kích hoạt tùy chỉnh cho PostgreSQL

  3. Sao lưu PostgreSQL bằng pg_dump và pg_dumpall

  4. Điều đó có nghĩa là gì khi một quy trình PostgreSQL không hoạt động trong giao dịch?

  5. Làm cách nào để cài đặt gem hoạt động trên OS X Lion với Ruby 1.8.7 mà không bị lỗi seg?