Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Migrasi dari MySQL ke PostgreSQL - Yang Harus Anda Ketahui

Baik memigrasi database atau proyek dari MySQL ke PostgreSQL, atau memilih PostgreSQL untuk proyek baru hanya dengan pengetahuan MySQL, ada beberapa hal yang perlu diketahui tentang PostgreSQL dan perbedaan antara kedua sistem database.

PostgreSQL adalah sistem database open source sepenuhnya yang dirilis di bawah lisensinya sendiri, Lisensi PostgreSQL, yang digambarkan sebagai "lisensi Open Source liberal, mirip dengan lisensi BSD atau MIT." Hal ini memungkinkan The PostgreSQL Global Development Group (biasa disebut sebagai PGDG), yang mengembangkan dan memelihara proyek open source, untuk meningkatkan proyek dengan bantuan dari orang-orang di seluruh dunia, mengubahnya menjadi salah satu solusi database yang paling stabil dan kaya fitur. tersedia. Saat ini, PostgreSQL bersaing dengan sistem database open source dan berpemilik teratas untuk fitur, performa, dan popularitas.

PostgreSQL adalah Sistem Basis Data Relasional yang sangat sesuai yang dapat diskalakan, dapat disesuaikan, dan memiliki komunitas orang-orang yang berkembang untuk meningkatkannya setiap hari.

Apa yang Dibutuhkan PostgreSQL

Di blog sebelumnya, kami membahas pengaturan dan pengoptimalan PostgreSQL untuk proyek baru. Ini adalah pengantar yang bagus untuk konfigurasi dan perilaku PostgreSQL, dan dapat ditemukan di sini:https://severalnines.com/blog/setting-optimal-environment-postgresql.

Jika memigrasikan aplikasi dari MySQL ke PostgreSQL, tempat terbaik untuk memulai adalah menghostingnya di perangkat keras yang sama atau platform hosting sebagai sumber database MySQL.

Di Tempat

Jika menghosting database di lokasi, host bare metal (bukan Mesin Virtual) umumnya merupakan pilihan terbaik untuk menghosting PostgreSQL. Mesin Virtual memang terkadang menambahkan beberapa fitur bermanfaat, tetapi mereka harus kehilangan daya dan kinerja dari host secara umum, sementara bare metal memungkinkan perangkat lunak PostgreSQL memiliki akses penuh ke kinerja dengan lebih sedikit lapisan antara itu dan perangkat keras. Host lokal akan membutuhkan administrator untuk memelihara database, apakah itu karyawan tetap atau kontraktor, mana saja yang lebih sesuai untuk kebutuhan aplikasi.

Di Awan

Cloud hosting telah berkembang pesat dalam beberapa tahun terakhir, dan banyak perusahaan di seluruh dunia meng-host database mereka di server berbasis cloud. Karena host cloud sangat dapat dikonfigurasi, ukuran dan kekuatan host yang tepat dapat dipilih untuk kebutuhan spesifik database, dengan biaya yang sesuai.

Tergantung pada opsi hosting yang digunakan, host baru dapat disediakan dengan cepat, memori / cpu / disk dapat diubah dengan cepat, dan bahkan metode pencadangan tambahan dapat tersedia. Saat memilih host cloud, cari tahu apakah host didedikasikan atau dibagikan, didedikasikan lebih baik untuk database beban sangat tinggi. Kunci lainnya adalah memastikan IOPS yang tersedia untuk cloud host cukup baik untuk kebutuhan aktivitas database. Bahkan dengan kumpulan memori yang besar untuk PostgreSQL, akan selalu ada operasi disk untuk menulis data ke disk, atau mengambil data saat tidak ada di memori.

Layanan Cloud

Karena PostgreSQL semakin populer, PostgreSQL tersedia di banyak layanan hosting basis data cloud seperti Heroku, Amazon AWS, dan lainnya, dan dengan cepat mengejar popularitas MySQL. Layanan ini memungkinkan pihak ketiga untuk menghosting dan mengelola database PostgreSQL dengan mudah, memungkinkan fokus tetap pada aplikasi.

Konsep / perbandingan istilah

Ada beberapa perbandingan untuk dibahas saat bermigrasi dari MySQL ke PostgreSQL, parameter konfigurasi umum, istilah, atau konsep yang beroperasi serupa tetapi memiliki perbedaan.

Persyaratan Basis Data

Berbagai istilah database dapat memiliki arti yang berbeda dalam implementasi teknologi yang berbeda. Antara MySQL dan PostgreSQL, ada beberapa istilah dasar yang dipahami sedikit berbeda, sehingga terjemahan terkadang diperlukan.

“Kelompok”

Di MySQL, 'cluster' biasanya mengacu pada beberapa host database MySQL yang terhubung bersama untuk muncul sebagai database tunggal atau kumpulan database ke klien.

Di PostgreSQL, saat mereferensikan sebuah 'cluster', ini adalah instance tunggal yang berjalan dari perangkat lunak database dan semua sub-prosesnya, yang kemudian berisi satu atau lebih database.

“Basis Data”

Di MySQL, kueri dapat mengakses tabel dari database yang berbeda secara bersamaan (asalkan pengguna memiliki izin untuk mengakses setiap database).

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

Namun di PostgreSQL ini tidak dapat terjadi kecuali menggunakan Pembungkus Data Asing (topik untuk lain waktu). Sebagai gantinya, database PostgreSQL memiliki opsi untuk beberapa 'skema' yang beroperasi mirip dengan database di MySQL. Skema berisi tabel, indeks, dll, dan dapat diakses secara bersamaan dengan koneksi yang sama ke database yang menampungnya.

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

Interface dengan PostgreSQL

Di klien baris perintah MySQL (mysql), berinteraksi dengan database menggunakan pekerjaan utama seperti 'DESCRIBE table' atau 'SHOW TABLES'. Klien baris perintah PostgreSQL (psql) menggunakan bentuk 'perintah garis miring terbalik' sendiri. Misalnya, alih-alih 'SHOW TABLES', perintah PostgreSQL adalah '\dt', dan alih-alih 'SHOW DATABASES;', perintahnya adalah '\l'.

Daftar lengkap perintah untuk 'psql' dapat ditemukan dengan perintah garis miring terbalik '\?' di dalam psql.

Dukungan Bahasa

Seperti MySQL, PostgreSQL memiliki perpustakaan dan plugin untuk semua bahasa utama, serta driver ODBC di sepanjang baris MySQL dan Oracle. Menemukan perpustakaan yang hebat dan stabil untuk bahasa apa pun yang dibutuhkan adalah tugas yang mudah.

Prosedur Tersimpan

Tidak seperti MySQL, PostgreSQL memiliki beragam Bahasa Prosedural yang didukung untuk dipilih. Dalam instalasi dasar PostgreSQL, bahasa yang didukung adalah PL/pgSQL (Bahasa Prosedur SQL), PL/Tcl (Bahasa Prosedur Tcl), PL/Perl (Bahasa Prosedur Perl), dan PL/Python (Bahasa Prosedur Python). Pengembang pihak ketiga mungkin memiliki lebih banyak bahasa yang tidak didukung secara resmi oleh grup PostgreSQL utama.

Konfigurasi

  • Memori

    MySQL menyetelnya dengan key_buffer_size saat menggunakan MyISAM, dan dengan innodb_buffer_pool_size saat menggunakan InnoDB.

    PostgreSQL menggunakan shared_buffers untuk blok memori utama yang diberikan ke database untuk menyimpan data, dan umumnya menggunakan 1/4 dari memori sistem kecuali skenario tertentu mengharuskannya untuk berubah. Kueri yang menggunakan memori untuk menyortir menggunakan nilai work_mem, yang harus ditingkatkan dengan hati-hati.

Alat untuk migrasi

Migrasi ke PostgreSQL membutuhkan beberapa pekerjaan, tetapi ada alat yang dikembangkan komunitas untuk membantu prosesnya. Umumnya mereka akan mengonversi/memigrasikan data dari MySQL ke PostgreSQL, dan membuat ulang tabel/indeks. Prosedur Tersimpan atau fungsi, adalah cerita yang berbeda, dan biasanya memerlukan penulisan ulang manual baik sebagian, atau dari awal.

Beberapa contoh alat yang tersedia adalah pgloader dan FromMySqlToPostgreSql. Pgloader adalah alat yang ditulis dalam Common Lisp yang mengimpor data dari MySQL ke PostgreSQL menggunakan perintah COPY, dan memuat data, indeks, kunci asing, dan komentar dengan konversi data untuk mewakili data dengan benar di PostgreSQL sebagaimana dimaksud. FromMySqlToPostgreSql adalah alat serupa yang ditulis dalam PHP, dan dapat mengonversi tipe data MySQL ke PostgreSQL serta kunci dan indeks asing. Kedua alat tersebut gratis, namun banyak alat lain (gratis dan berbayar) yang ada dan baru dikembangkan saat versi baru dari setiap perangkat lunak basis data dirilis.

Konversi harus selalu menyertakan evaluasi mendalam setelah migrasi untuk memastikan data telah dikonversi dengan benar dan fungsionalitas berfungsi seperti yang diharapkan. Pengujian sebelumnya selalu dianjurkan untuk pengaturan waktu dan validasi data.

Opsi Replikasi

Jika berasal dari MySQL di mana replikasi telah digunakan, atau replikasi diperlukan untuk alasan apa pun, PostgreSQL memiliki beberapa opsi yang tersedia, masing-masing dengan kelebihan dan kekurangannya sendiri, tergantung pada apa yang dibutuhkan melalui replikasi.

  • Terpasang:

    Secara default, PostgreSQL memiliki mode replikasi bawaan untuk Point In Time Recovery (PITR). Ini dapat diatur menggunakan pengiriman log berbasis file, di mana file Write Ahead Log dikirim ke server siaga tempat mereka dibaca dan diputar ulang, atau Replikasi Streaming, di mana server siaga baca saja mengambil log transaksi melalui koneksi database untuk diputar ulang. mereka.

    Salah satu dari opsi bawaan ini dapat diatur sebagai 'warm standby' atau 'hot standby'. 'warm standby' tidak mengizinkan koneksi tetapi siap menjadi master kapan saja untuk menggantikan master yang mengalami masalah . 'Hot standby' memungkinkan koneksi hanya-baca untuk terhubung dan mengeluarkan kueri, selain juga siap menjadi master baca/tulis kapan saja jika diperlukan.

  • Slony:

    Salah satu alat replikasi tertua untuk PostgreSQL adalah Slony, yang merupakan metode replikasi berbasis pemicu yang memungkinkan penyesuaian tingkat tinggi. Slony memungkinkan pengaturan node Master dan sejumlah node Replika, dan kemampuan untuk mengalihkan Master ke node mana pun yang diinginkan, dan memungkinkan administrator untuk memilih tabel mana (jika tidak ingin semua tabel) untuk direplikasi. Ini telah digunakan tidak hanya untuk mereplikasi data jika terjadi kegagalan / penyeimbangan beban, tetapi mengirimkan data tertentu ke layanan lain, atau bahkan peningkatan waktu henti minimal, karena replikasi dapat dilakukan di berbagai versi PostgreSQL.

    Slony memang memiliki persyaratan utama bahwa setiap tabel yang akan direplikasi memiliki PRIMARY KEY, atau indeks UNIK tanpa kolom nullable.

  • Bucardo:

    Dalam hal opsi multi-master, Bucardo adalah salah satu dari sedikit untuk PostgreSQL. Seperti Slony, ini adalah paket perangkat lunak pihak ketiga yang berada di atas PostgreSQL. Bucardo menyebut dirinya "sistem replikasi PostgreSQL asinkron, memungkinkan operasi multi-master dan multi-slave." Manfaat utamanya adalah replikasi multi-master, yang bekerja dengan cukup baik, namun tidak memiliki resolusi konflik, jadi aplikasi harus menyadari kemungkinan masalah dan memperbaikinya.

    Ada banyak alat replikasi lainnya juga, dan menemukan alat yang paling cocok untuk aplikasi bergantung pada kebutuhan spesifik.

Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

Komunitas

PostgreSQL memiliki komunitas berkembang yang bersedia membantu dengan masalah / info apa pun yang mungkin diperlukan.

  • IRC

    Ruang obrolan IRC aktif bernama #postgresql tersedia di freenode, sebagai administrator dan pengembang di seluruh dunia mengobrol tentang PostgreSQL dan proyek / masalah terkait. Bahkan ada ruangan yang lebih kecil untuk spesifik seperti Slony, Bucardo, dan banyak lagi.

  • Daftar surat

    Ada beberapa milis PostgreSQL untuk 'umum', 'admin', 'kinerja', dan bahkan 'pemula' (tempat yang bagus untuk memulai jika baru mengenal PostgreSQL secara umum). Milis berlangganan oleh banyak orang di seluruh dunia, dan menyediakan sumber daya yang sangat berguna untuk menjawab pertanyaan apa pun yang mungkin perlu dijawab.

    Daftar lengkap milis PostgreSQL dapat ditemukan di https://www.postgresql.org/list/

  • Grup Pengguna

    Grup pengguna adalah tempat yang bagus untuk terlibat dan aktif dalam komunitas, dan banyak kota besar di seluruh dunia memiliki Grup Pengguna PostgreSQL (PUG) yang tersedia untuk bergabung dan hadir, dan jika tidak, pertimbangkan untuk memulainya. Grup ini sangat bagus untuk berjejaring, mempelajari teknologi baru, dan bahkan hanya mengajukan pertanyaan secara langsung kepada orang-orang dari tingkat pengalaman apa pun.

  • Dokumentasi

    Yang terpenting, PostgreSQL didokumentasikan dengan sangat baik. Informasi apa pun untuk parameter konfigurasi, fungsi SQL, penggunaan, semuanya dapat dipelajari dengan mudah melalui dokumentasi resmi yang disediakan di situs web PostgreSQL. Jika ada yang tidak jelas, komunitas akan membantu dalam opsi yang diuraikan sebelumnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menampilkan gambar yang disimpan dalam gumpalan mysql

  2. Peningkatan Otomatis setelah dihapus di MySQL

  3. MySQL Inner Join Query Beberapa Tabel

  4. Kesalahan MySQL 1093 - Tidak dapat menentukan tabel target untuk pembaruan dalam klausa FROM

  5. Bagaimana cara mengubah zona waktu server MySQL