5 alat sumber terbuka teratas untuk administrator MySQL

Michael Coburn adalah manajer produk di Percona. 

Untuk administrator database (DBA), menjaga database tetap berjalan pada kinerja puncak bisa sedikit seperti pelat berputar: Dibutuhkan kelincahan, konsentrasi, reaksi cepat, kepala dingin, dan sesekali panggilan keluar dari penonton yang membantu. Basis data sangat penting untuk keberhasilan pengoperasian hampir setiap aplikasi. Karena DBA bertanggung jawab atas data organisasi, menemukan alat yang dapat diandalkan yang membantu mereka menyederhanakan proses manajemen database dan memudahkan tugas pemeliharaan sehari-hari sangatlah penting. DBA membutuhkan alat yang baik untuk menjaga sistem mereka berputar dengan lancar.

Jadi apa alat yang dicoba dan tepercaya untuk administrator MySQL? Di sini saya membagikan lima alat sumber terbuka teratas saya untuk administrator MySQL dan membahas nilainya dalam mendukung tugas administrasi MySQL sehari-hari. Untuk masing-masing, saya telah menyediakan tautan ke repositori GitHub dan mencantumkan jumlah bintang GitHub pada saat penulisan.

Mycli

Proyek Mycli menyediakan penyelesaian otomatis baris perintah MySQL dan penyorotan sintaksis. Ini adalah salah satu alat MySQL paling populer untuk administrator. 

Pembatasan keamanan seperti jump host dan otentikasi dua faktor membuat banyak MySQL DBA dengan akses hanya baris perintah ke sistem mereka. Dalam keadaan seperti itu, alat GUI yang disukai seperti MySQL Workbench, Monyog, dan lainnya bukanlah pilihan.

Pada baris perintah, sebagian besar waktu dihabiskan di dunia terminal yang gelap gulita. Jadi salah satu hal terbaik tentang Mycli adalah kekayaan penyorotan sintaksnya. Ini memungkinkan Anda, misalnya, untuk memisahkan fungsi dan operator secara visual dari string kueri dalam WHEREklausa. Untuk kueri satu baris singkat ini mungkin bukan masalah besar, tetapi ini menjadi pengubah permainan saat Anda bekerja dengan kueri yang melakukan JOINoperasi di lebih dari beberapa tabel. Apakah saya melakukan JOINmenggunakan kolom yang diindeks? Apakah saya memfilter menggunakan karakter pengganti utama dalam WHEREklausul saya ? Mycli mendukung kueri multi-baris dan penyorotan sintaks, yang berarti Anda dapat masuk ke bagian yang paling penting saat meninjau atau mengoptimalkan kueri. Anda dapat memilih dari sejumlah skema warna penyorotan sintaks atau membuatnya sendiri.

Fitur pembunuh lainnya dari Mycli adalah penyelesaian cerdas. Ini memungkinkan Anda memilih nama tabel dan kolom dari daftar peka konteks dengan memasukkan hanya beberapa karakter pertamanya. Tidak perlu lagi mengabaikan masukan Anda saat ini untuk dijalankan SHOW CREATE TABLE karena Anda lupa nama kolom yang Anda inginkan di WHEREklausa Anda !  

Amjith Ramanujam

Dengan Mmycli, Anda dapat menggunakan alias kueri favorit \fs, misalnya \fs myAlias myQuery. Ini sangat berguna, karena Anda kemudian dapat menjalankan kueri menggunakan \f myAliaskapan pun dibutuhkan.

Proyek Mycli menggunakan lisensi BSD 3. Ada 44 kontributor, 1.2k komit, dan 5k bintang.

Hantu

Jika seperti 99 persen dari DBA MySQL Anda telah menghadapi penerapan perubahan pada tabel MySQL sambil mengkhawatirkan dampaknya pada produksi, maka Anda harus mempertimbangkan Gh-ost (GitHub Online Schema Migration). Gh-ost menyediakan perubahan skema MySQL tanpa memblokir penulisan, tanpa menggunakan pemicu, dan dengan kemampuan untuk menjeda dan melanjutkan migrasi! 

Mengapa ini sangat penting? Sejak MySQL 5.6 dikirimkan dengan ALTER TABLE ... ALGORITHM=INPLACEfungsionalitas DDL (Data Definition Language) baru, dimungkinkan untuk mengubah tabel tanpa memblokir penulisan untuk operasi umum seperti menambahkan indeks (B-tree). Namun, masih ada beberapa kondisi di mana penulisan (pernyataan DML) diblokir, terutama penambahan FULLTEXTindeks, enkripsi tablespace, dan konversi jenis kolom. 

Populer lainnya alat perubahan skema online, seperti Percona ini pt-secara online-skema-perubahan, bekerja dengan menerapkan satu set dari tiga pemicu ( INSERT, UPDATE, dan DELETE) pada master untuk menjaga meja shadow copy sinkron dengan perubahan. Ini memperkenalkan hukuman kinerja kecil karena amplifikasi tulis, tetapi yang lebih signifikan membutuhkan tujuh contoh kunci metadata. Ini secara efektif menghentikan acara DML (Data Manipulation Language). 

Karena Gh-ost beroperasi menggunakan log biner, ia tidak rentan terhadap kelemahan berbasis pemicu. Terakhir, Gh-ost dapat secara efektif membatasi aktivitas ke nol peristiwa, memungkinkan Anda untuk menjeda migrasi skema untuk beberapa saat jika server Anda mulai bermasalah, dan melanjutkan saat gelembung aktivitas bergerak.

Jadi bagaimana cara kerja Gh-ost? Secara default, Gh-ost terhubung ke replika (budak), mengidentifikasi master, dan menerapkan migrasi pada master. Ia menerima perubahan pada replika tabel sumber dalam binlog_format = ROW, mengurai log, dan mengubah pernyataan ini untuk dieksekusi ulang pada tabel bayangan master. Ini melacak jumlah baris pada replika dan mengidentifikasi kapan saatnya untuk melakukan pemotongan atom (tabel saklar). 

GitHub

Gh-ost menyediakan mode alternatif tempat Anda menjalankan migrasi secara langsung pada master (apakah memiliki budak atau tidak), membaca kembali peristiwa master binlog_format=ROW, lalu menerapkannya kembali ke tabel bayangan.

Opsi terakhir tersedia untuk menjalankan migrasi hanya pada replika tanpa memengaruhi master, sehingga Anda dapat menguji atau memvalidasi migrasi.

GitHub

Perhatikan bahwa jika skema Anda memiliki kunci asing, maka Gh-ost mungkin tidak beroperasi dengan bersih, karena konfigurasi ini tidak didukung.

Perhatikan bahwa oak-online-alter-table adalah pendahulu Gh-ost. Anda dapat membaca perbandingan antara kinerja Gh-ost dan pt-online-schema-change oleh Peter Zaitsev, CEO Percona, bersama dengan tanggapan dari Shlomi Noach, penulis dan pengelola toolkit OAK dan Gh-ost.

Proyek Gh-ost menggunakan lisensi MIT. Ini memiliki 29 kontributor, hampir 1k komit, dan 3k bintang.

PhpMyAdmin

Salah satu proyek yang paling lama berjalan dan paling matang di antara alat MySQL adalah alat PhpMyAdmin terhormat yang digunakan untuk mengelola MySQL melalui web. phpMyAdmin memungkinkan DBA untuk menelusuri dan memodifikasi objek database MySQL: database, tabel, tampilan, kolom, dan indeks. Ada opsi untuk melakukan ekspor data menggunakan lebih dari selusin format, memodifikasi pengguna dan hak istimewa MySQL, dan - favorit saya - menjalankan kueri ad-hoc.

Anda juga akan menemukan tab Status yang secara dinamis memplot pertanyaan, koneksi / proses, dan lalu lintas jaringan untuk instans database yang Anda berikan, bersama dengan tab Advisor yang menampilkan daftar kemungkinan masalah kinerja bersama dengan rekomendasi tentang cara memulihkan.

PhpMyAdmin menggunakan lisensi GPLv2. Ini adalah proyek besar dengan lebih dari 800 kontributor, 112k komit yang luar biasa, dan 2,7k bintang. Demo online tersedia di //demo.phpmyadmin.net/master-config/

Sqlcheck

Anti-pola SQL dapat memperlambat kueri, tetapi seringkali dibutuhkan DBA yang berpengalaman dan pengembang yang mempelajari kode untuk mengidentifikasi dan menyelesaikannya. Sqlcheck mencerminkan upaya Joy Arulraj untuk menyusun buku "SQL Anti-patterns: Avoiding the Pitfalls of Database Programming" oleh Bill Karwin. Karwin mengidentifikasi empat kategori anti-pola:

  1. Desain basis data logis
  2. Desain database fisik
  3. Pertanyaan
  4. Pengembangan aplikasi
Joy Arulraj

Sqlcheck dapat ditargetkan pada berbagai tingkat risiko, dikategorikan sebagai risiko rendah, sedang, atau tinggi. Ini berguna jika daftar anti-pola Anda besar, karena Anda dapat memprioritaskan kueri dengan pengaruh kinerja terbesar. Yang perlu Anda lakukan untuk memulai adalah mengumpulkan daftar kueri berbeda Anda ke dalam sebuah file dan kemudian meneruskannya sebagai argumen ke alat tersebut. 

Saya menggunakan sampel yang dikumpulkan dari lingkungan Demo PMM untuk menghasilkan keluaran berikut:

[michael @ fedora ~] $ sqlcheck —file_name PMMDemoQueries.txt

+ ————————————————————————- +

| SQLCHECK |

+ ————————————————————————- +

> TINGKAT RISIKO :: SEMUA POLA ANTI

> NAMA FILE SQL :: keluaran

> MODE WARNA :: DIAKTIFKAN

> MODE VERBOSE :: DINONAKTIFKAN

> DELIMITER ::;

————————————————————————-

==================== Hasil ===================

————————————————————————-

Pernyataan SQL: pilih skema_tabel, nama_tabel, jenis_tabel, ifnull (mesin, 'tidak ada') sebagai mesin,

ifnull (versi, '0') sebagai versi, ifnull (row_format, 'none') sebagai row_format,

ifnull (baris_tabel, '0') sebagai baris_tabel, ifnull (data_length, '0') sebagai data_length,

ifnull (index_length, '0') sebagai index_length, ifnull (data_free, '0') sebagai data_free,

ifnull (create_options, 'none') sebagai create_options dari information_schema.tables

di mana table_schema = 'innodb_small';

[keluaran]: (PETUNJUK) Penggunaan NULL

[Ekspresi Pencocokan: null]

...

==================== Ringkasan ===================

Semua Anti-Pola dan Petunjuk :: 7

> Risiko Tinggi :: 0

> Resiko Sedang :: 0

> Resiko Rendah :: 2

> Petunjuk :: 5

Sqlcheck dilindungi oleh Lisensi Apache 2.0. Proyek ini memiliki lima kontributor, 187 komitmen, dan 1,4k bintang.

Pemimpin orkestra

Orchestrator adalah fitur manajemen replikasi dan ketersediaan tinggi. Ini memberikan kemampuan untuk menemukan topologi replikasi dari lingkungan MySQL dengan merangkak ke atas dan ke bawah rantai untuk mengidentifikasi master dan budak. Ini juga dapat digunakan untuk merefaktor topologi replikasi Anda melalui GUI, menyediakan antarmuka seret-dan-lepas untuk mempromosikan budak ke master. Ini adalah operasi yang sangat aman. Faktanya, Orchestrator menolak operasi ilegal apa pun agar tidak merusak sistem Anda. 

Terakhir, Orchestrator dapat mendukung pemulihan saat node mengalami kegagalan, karena Orchestrator menggunakan konsep status untuk memilih metode pemulihan yang tepat dan memutuskan proses promosi master yang sesuai untuk digunakan.

Orchestrator adalah alat lain yang disediakan oleh Shlomi Noach di GitHub. Ini dilindungi oleh Lisensi Apache 2.0. Orchestrator memiliki 34 kontributor, 2.780 komitmen, dan 900 bintang pada saat penulisan ini.

GitHub

Memutar piring

Di awal bagian ini, saya berbicara tentang peran administrator MySQL seperti halnya seorang pemintal pelat. Kadang-kadang, administrator mungkin mendapat manfaat dari teriakan dari penonton yang membantu ketika segala sesuatunya mulai goyah dan membutuhkan perhatian. Percona Monitoring and Management (PMM) mengambil tugas untuk berteriak, menyoroti area yang membutuhkan perhatian dan membantu administrator database untuk mengidentifikasi dan menyelesaikan masalah database.

PMM menggabungkan sejumlah alat open source terbaik, termasuk Orchestrator, untuk menyediakan fasilitas pemantauan dan manajemen database yang komprehensif. Presentasi grafisnya memberikan petunjuk visual yang diasimilasi dengan mudah ke status server database Anda dari waktu ke waktu, dan mendukung server MySQL, MariaDB, dan MongoDB. Lihat demo publik kami!

Sama seperti lima alat teratas saya, dan seperti semua perangkat lunak Percona, PMM sepenuhnya gratis dan perangkat lunak sumber terbuka yang dapat diunduh dari situs web Percona atau dari GitHub.

Setiap alat yang saya jelaskan membahas aspek yang berbeda dari peran administrator MySQL. Mereka berkontribusi pada gudang alat manajemen database Anda, dan memungkinkan Anda memanfaatkan pengalaman dan keterampilan kontributor untuk proyek populer ini. Mereka gratis dan open source serta dapat disesuaikan dengan kebutuhan lingkungan Anda jika perlu, atau Anda dapat menggunakannya tanpa modifikasi. Jika Anda belum menjelajahi permata ini, saya sarankan Anda melihat lebih dekat untuk melihat apakah mereka menawarkan keuntungan dibandingkan metode dan alat Anda saat ini.

-

Michael Coburn menjabat sebagai manajer produk di Percona di mana dia bertanggung jawab atas Pemantauan dan Manajemen Percona. Dengan dasar dalam administrasi sistem, Coburn menikmati bekerja dengan teknologi SAN dan solusi ketersediaan tinggi.

Forum Teknologi Baru menyediakan tempat untuk mengeksplorasi dan mendiskusikan teknologi perusahaan yang sedang berkembang secara mendalam dan luas. Pemilihan ini subjektif, berdasarkan pilihan teknologi yang kami yakini penting dan paling menarik bagi pembaca. tidak menerima jaminan pemasaran untuk publikasi dan berhak untuk mengedit semua konten yang dikontribusikan. Kirim semua pertanyaan ke  [email protected] .