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

Chuyển từ MySQL sang PostgreSQL - Điều bạn nên biết

Cho dù di chuyển cơ sở dữ liệu hoặc dự án từ MySQL sang PostgreSQL hoặc chọn PostgreSQL cho một dự án mới chỉ với kiến ​​thức MySQL, có một số điều cần biết về PostgreSQL và sự khác biệt giữa hai hệ thống cơ sở dữ liệu.

PostgreSQL là một hệ thống cơ sở dữ liệu mã nguồn mở hoàn toàn được phát hành theo giấy phép riêng của nó, Giấy phép PostgreSQL, được mô tả là “giấy phép Nguồn mở tự do, tương tự như giấy phép BSD hoặc MIT.” Điều này đã cho phép Nhóm Phát triển Toàn cầu PostgreSQL (thường được gọi là PGDG), người phát triển và duy trì dự án nguồn mở, cải thiện dự án với sự giúp đỡ từ mọi người trên khắp thế giới, biến nó thành một trong những giải pháp cơ sở dữ liệu phong phú và ổn định nhất. có sẵn. Ngày nay, PostgreSQL cạnh tranh với các hệ thống cơ sở dữ liệu mã nguồn mở và độc quyền hàng đầu về các tính năng, hiệu suất và mức độ phổ biến.

PostgreSQL là Hệ thống cơ sở dữ liệu quan hệ có tính tuân thủ cao, có thể mở rộng, tùy chỉnh và có một cộng đồng lớn mạnh gồm những người đang cải thiện nó mỗi ngày.

PostgreSQL cần gì

Trong một blog trước, chúng ta đã thảo luận về việc thiết lập và tối ưu hóa PostgreSQL cho một dự án mới. Đây là phần giới thiệu hay về cấu hình và hành vi của PostgreSQL và có thể tìm thấy tại đây:https://severalnines.com/blog/setting-optimal-enosystem-postgresql.

Nếu di chuyển một ứng dụng từ MySQL sang PostgreSQL, thì nơi tốt nhất để bắt đầu là lưu trữ nó trên phần cứng hoặc nền tảng lưu trữ tương tự như cơ sở dữ liệu MySQL nguồn.

On Premise

Nếu lưu trữ cơ sở dữ liệu tại chỗ, các máy chủ bằng kim loại trần (thay vì Máy ảo) thường là lựa chọn tốt nhất để lưu trữ PostgreSQL. Máy ảo đôi khi bổ sung một số tính năng hữu ích, nhưng chúng phải trả giá bằng việc mất nguồn và hiệu suất từ ​​máy chủ nói chung, trong khi kim loại trần cho phép phần mềm PostgreSQL có toàn quyền truy cập vào hiệu suất với ít lớp hơn giữa nó và phần cứng. Trên các máy chủ tiền đề sẽ cần một quản trị viên để duy trì cơ sở dữ liệu, cho dù đó là nhân viên toàn thời gian hay nhà thầu, tùy theo điều kiện nào phù hợp hơn với nhu cầu của ứng dụng.

Trong đám mây

Dịch vụ lưu trữ đám mây đã đi được một chặng đường dài trong vài năm qua và vô số công ty trên khắp thế giới lưu trữ cơ sở dữ liệu của họ trong các máy chủ dựa trên đám mây. Vì máy chủ đám mây có thể cấu hình cao, nên có thể chọn kích thước và sức mạnh phù hợp của máy chủ lưu trữ cho các nhu cầu cụ thể của cơ sở dữ liệu, với chi phí phù hợp.

Tùy thuộc vào tùy chọn lưu trữ được sử dụng, các máy chủ mới có thể được cung cấp nhanh chóng, bộ nhớ / cpu / đĩa có thể được tinh chỉnh nhanh chóng và thậm chí có thể có các phương pháp sao lưu bổ sung. Khi chọn máy chủ lưu trữ đám mây, hãy tìm xem máy chủ lưu trữ chuyên dụng hay máy chủ chia sẻ, máy chủ lưu trữ chuyên dụng sẽ tốt hơn cho cơ sở dữ liệu tải cực cao. Một chìa khóa khác là đảm bảo IOPS có sẵn cho máy chủ lưu trữ đám mây đủ tốt cho nhu cầu hoạt động cơ sở dữ liệu. Ngay cả với một nhóm bộ nhớ lớn cho PostgreSQL, sẽ luôn có các hoạt động trên đĩa để ghi dữ liệu vào đĩa hoặc tìm nạp dữ liệu khi không có trong bộ nhớ.

Dịch vụ đám mây

Vì PostgreSQL ngày càng phổ biến, nên nó đang được tìm thấy trên nhiều dịch vụ lưu trữ cơ sở dữ liệu đám mây như Heroku, Amazon AWS, v.v. và đang nhanh chóng bắt kịp sự phổ biến của MySQL. Các dịch vụ này cho phép bên thứ ba lưu trữ và quản lý cơ sở dữ liệu PostgreSQL một cách dễ dàng, cho phép tập trung vào ứng dụng.

Các khái niệm / so sánh thuật ngữ

Có một số so sánh cần xem xét khi chuyển từ MySQL sang PostgreSQL, các tham số cấu hình phổ biến, thuật ngữ hoặc khái niệm hoạt động tương tự nhưng có sự khác biệt của chúng.

Điều khoản cơ sở dữ liệu

Các thuật ngữ cơ sở dữ liệu khác nhau có thể có ý nghĩa khác nhau trong các triển khai khác nhau của công nghệ. Giữa MySQL và PostgreSQL, có một số thuật ngữ cơ bản được hiểu hơi khác nhau, do đó, đôi khi cần có bản dịch.

“Cụm”

Trong MySQL, một 'cụm' thường đề cập đến nhiều máy chủ cơ sở dữ liệu MySQL được kết nối với nhau để xuất hiện dưới dạng một cơ sở dữ liệu duy nhất hoặc tập hợp cơ sở dữ liệu cho máy khách.

Trong PostgreSQL, khi tham chiếu đến một "cụm", nó là một phiên bản đang chạy duy nhất của phần mềm cơ sở dữ liệu và tất cả các quy trình con của nó, sau đó chứa một hoặc nhiều cơ sở dữ liệu.

“Cơ sở dữ liệu”

Trong MySQL, các truy vấn có thể truy cập đồng thời các bảng từ các cơ sở dữ liệu khác nhau (miễn là người dùng có quyền truy cập từng cơ sở dữ liệu).

SELECT *
FROM customer_database.customer_table t1
JOIN orders_database.order_table t2 ON t1.customer_id = t2.customer_id
WHERE name = ‘Bob’;

Tuy nhiên trong PostgreSQL, điều này không thể xảy ra trừ khi sử dụng Trình gói dữ liệu nước ngoài (một chủ đề cho thời gian khác). Thay vào đó, cơ sở dữ liệu PostgreSQL có tùy chọn cho nhiều ‘lược đồ’ hoạt động tương tự như cơ sở dữ liệu trong MySQL. Các lược đồ chứa các bảng, chỉ mục, v.v. và có thể được truy cập đồng thời bằng cùng một kết nối với cơ sở dữ liệu chứa chúng.

SELECT *
FROM customer_schema.customer_table t1
JOIN orders_schema.order_table t2 ON t1.customer_id = t2.customer_id
WHERE name = ‘Bob’;

Giao diện với PostgreSQL

Trong máy khách dòng lệnh MySQL (mysql), việc giao tiếp với cơ sở dữ liệu sử dụng các công việc chính như ‘bảng DESCRIBE’ hoặc ‘SHOW TABLES’. Máy khách dòng lệnh PostgreSQL (psql) sử dụng dạng ‘lệnh gạch chéo ngược’ của riêng nó. Ví dụ:thay vì ‘SHOW TABLES’, lệnh của PostgreSQL là ‘\ dt’ và thay vì ‘SHOW DATABASES;’, lệnh là ‘\ l’.

Bạn có thể tìm thấy danh sách đầy đủ các lệnh cho ‘psql’ bằng lệnh dấu gạch chéo ngược ‘\?’ Trong psql.

Hỗ trợ ngôn ngữ

Giống như MySQL, PostgreSQL có các thư viện và plugin cho tất cả các ngôn ngữ chính, cũng như các trình điều khiển ODBC dọc theo dòng MySQL và Oracle. Tìm một thư viện tuyệt vời và ổn định cho bất kỳ ngôn ngữ nào cần thiết là một nhiệm vụ dễ dàng.

Thủ tục được lưu trữ

Không giống như MySQL, PostgreSQL có một loạt các Ngôn ngữ Thủ tục được hỗ trợ để lựa chọn. Trong bản cài đặt cơ sở của PostgreSQL, các ngôn ngữ được hỗ trợ là PL / pgSQL (Ngôn ngữ thủ tục SQL), PL / Tcl (Ngôn ngữ thủ tục Tcl), PL / Perl (Ngôn ngữ thủ tục Perl) và PL / Python (Ngôn ngữ thủ tục Python). Các nhà phát triển bên thứ ba có thể có nhiều ngôn ngữ không được nhóm PostgreSQL chính thức hỗ trợ.

Cấu hình

  • Bộ nhớ

    MySQL điều chỉnh điều này với key_buffer_size khi sử dụng MyISAM và với innodb_buffer_pool_size khi sử dụng InnoDB.

    PostgreSQL sử dụng shared_buffers cho khối bộ nhớ chính được cấp cho cơ sở dữ liệu để lưu vào bộ nhớ đệm dữ liệu và thường nằm trong khoảng 1/4 bộ nhớ hệ thống trừ khi một số tình huống nhất định yêu cầu thay đổi. Các truy vấn sử dụng bộ nhớ để sắp xếp sử dụng giá trị work_mem, giá trị này sẽ được tăng lên một cách thận trọng.

Các công cụ để di chuyển

Chuyển sang PostgreSQL có thể mất một số công việc, nhưng có những công cụ mà cộng đồng đã phát triển để trợ giúp quá trình này. Nói chung, họ sẽ chuyển đổi / di chuyển dữ liệu từ MySQL sang PostgreSQL và tạo lại các bảng / chỉ mục. Các thủ tục hoặc chức năng được lưu trữ là một câu chuyện khác và thường yêu cầu viết lại thủ công một phần hoặc từ đầu.

Một số công cụ ví dụ có sẵn là pgloader và FromMySqlToPostgreSql. Pgloader là một công cụ được viết bằng Common Lisp để nhập dữ liệu từ MySQL vào PostgreSQL bằng lệnh COPY và tải dữ liệu, chỉ mục, khóa ngoại và nhận xét với chuyển đổi dữ liệu để thể hiện dữ liệu một cách chính xác trong PostgreSQL như dự định. FromMySqlToPostgreSql là một công cụ tương tự được viết bằng PHP và có thể chuyển đổi các kiểu dữ liệu MySQL sang PostgreSQL cũng như các khóa và chỉ mục ngoại. Cả hai công cụ đều miễn phí, tuy nhiên nhiều công cụ khác (miễn phí và trả phí) tồn tại và mới được phát triển khi các phiên bản mới của mỗi phần mềm cơ sở dữ liệu được phát hành.

Việc chuyển đổi phải luôn bao gồm đánh giá chuyên sâu sau khi di chuyển để đảm bảo dữ liệu được chuyển đổi chính xác và chức năng hoạt động như mong đợi. Việc kiểm tra trước luôn được khuyến khích để xác định thời gian và xác thực dữ liệu.

Tùy chọn sao chép

Nếu đến từ MySQL, nơi bản sao đã được sử dụng hoặc cần sao chép vì bất kỳ lý do gì, thì PostgreSQL có sẵn một số tùy chọn, mỗi tùy chọn có ưu và nhược điểm riêng, tùy thuộc vào những gì cần thiết thông qua sao chép.

  • Tích hợp:

    Theo mặc định, PostgreSQL có chế độ nhân bản được xây dựng riêng cho Point In Time Recovery (PITR). Điều này có thể được thiết lập bằng cách sử dụng vận chuyển nhật ký dựa trên tệp, trong đó các tệp Ghi nhật ký được chuyển đến máy chủ dự phòng nơi chúng được đọc và phát lại, hoặc Nhân bản truyền trực tuyến, nơi máy chủ chờ chỉ đọc tìm nạp nhật ký giao dịch qua kết nối cơ sở dữ liệu để phát lại họ.

    Một trong các tùy chọn tích hợp này có thể được thiết lập làm 'chế độ chờ ấm' hoặc 'chế độ chờ nóng'. Chế độ "chế độ chờ ấm" không cho phép kết nối nhưng sẵn sàng trở thành thiết bị chính bất cứ lúc nào để thay thế thiết bị chính đang gặp sự cố . "Chế độ chờ nóng" cho phép các kết nối chỉ đọc kết nối và đưa ra các truy vấn, ngoài ra còn có thể sẵn sàng trở thành trình điều khiển đọc / ghi bất cứ lúc nào nếu cần.

  • Slony:

    Một trong những công cụ sao chép lâu đời nhất dành cho PostgreSQL là Slony, là một phương pháp sao chép dựa trên trình kích hoạt cho phép mức độ tùy chỉnh cao. Slony cho phép thiết lập nút Chính và bất kỳ số lượng nút Bản sao nào cũng như khả năng chuyển Bản chính sang bất kỳ nút nào mong muốn và cho phép quản trị viên chọn bảng nào (nếu không muốn tất cả các bảng) sao chép. Nó không chỉ được sử dụng để sao chép dữ liệu trong trường hợp bị lỗi / cân bằng tải, mà còn vận chuyển dữ liệu cụ thể đến các dịch vụ khác hoặc thậm chí nâng cấp thời gian chết tối thiểu, vì sao chép có thể đi qua các phiên bản PostgreSQL khác nhau.

    Slony có yêu cầu chính là mọi bảng được sao chép phải có KHÓA CHÍNH hoặc chỉ mục DUY NHẤT không có cột rỗng.

  • Bucardo:

    Khi nói đến các tùy chọn đa tổng thể, Bucardo là một trong số ít đối với PostgreSQL. Giống như Slony, nó là một gói phần mềm của bên thứ ba nằm trên PostgreSQL. Bucardo tự gọi mình là “một hệ thống sao chép PostgreSQL không đồng bộ, cho phép thực hiện cả hoạt động đa chủ và đa nô lệ”. Lợi ích chính là sao chép đa tổng thể, hoạt động khá tốt, tuy nhiên nó không có khả năng giải quyết xung đột, vì vậy các ứng dụng cần lưu ý các vấn đề có thể xảy ra và khắc phục cho phù hợp.

    Cũng có nhiều công cụ sao chép khác và việc tìm ra công cụ hoạt động tốt nhất cho ứng dụng phụ thuộc vào nhu cầu cụ thể.

Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thức

Cộng đồng

PostgreSQL có một cộng đồng lớn mạnh sẵn sàng trợ giúp mọi vấn đề / thông tin có thể cần thiết.

  • IRC

    Phòng trò chuyện IRC đang hoạt động có tên #postgresql có sẵn trên freenode, khi quản trị viên và nhà phát triển trò chuyện trên toàn thế giới về PostgreSQL và các dự án / vấn đề liên quan. Thậm chí còn có những phòng nhỏ hơn dành cho các chi tiết cụ thể như Slony, Bucardo, v.v.

  • Danh sách gửi thư

    Có một số danh sách gửi thư PostgreSQL dành cho ‘chung’, ‘quản trị’, ‘hiệu suất’ và thậm chí cả ‘người mới làm quen’ (một nơi tuyệt vời để bắt đầu nếu mới sử dụng PostgreSQL nói chung). Danh sách gửi thư được nhiều người trên khắp thế giới đăng ký và cung cấp vô số tài nguyên hữu ích để trả lời bất kỳ câu hỏi nào có thể cần trả lời.

    Danh sách đầy đủ các danh sách gửi thư PostgreSQL có thể được tìm thấy tại https://www.postgresql.org/list/

  • Nhóm người dùng

    Các nhóm người dùng là một nơi tuyệt vời để tham gia và hoạt động tích cực trong cộng đồng, và nhiều thành phố lớn trên toàn thế giới có sẵn Nhóm người dùng PostgreSQL (PUG) để tham gia và tham dự, và nếu không, hãy cân nhắc bắt đầu một nhóm. Những nhóm này rất phù hợp để kết nối mạng, học hỏi công nghệ mới và thậm chí chỉ đặt câu hỏi trực tiếp cho những người ở bất kỳ cấp độ kinh nghiệm nào.

  • Tài liệu

    Quan trọng nhất, PostgreSQL được ghi lại rất tốt. Mọi thông tin về tham số cấu hình, hàm SQL, cách sử dụng, tất cả đều có thể dễ dàng tìm hiểu thông qua tài liệu chính thức được cung cấp trên trang web của PostgreSQL. Nếu có bất kỳ điều gì không rõ ràng, cộng đồng sẽ giúp đỡ trong các tùy chọn đã nêu trướ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. mysql PDO cách liên kết LIKE

  2. Kích thước bộ nhớ tối đa TINYTEXT, TEXT, MEDIUMTEXT và LONGTEXT

  3. Mối quan hệ giữa danh mục, lược đồ, người dùng và phiên bản cơ sở dữ liệu

  4. Hàm MySQL LN () - Trả về Logarit tự nhiên của một số

  5. Làm cách nào để xem các chỉ mục cho cơ sở dữ liệu hoặc bảng trong MySQL?