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

Database Load Balancing di Cloud - MySQL Master Failover dengan ProxySQL 2.0:Bagian Satu (Penerapan)

Awan menyediakan lingkungan yang sangat fleksibel untuk digunakan. Anda dapat dengan mudah menskalakannya ke atas dan ke bawah dengan menambahkan atau menghapus node. Jika ada kebutuhan, Anda dapat dengan mudah membuat tiruan dari lingkungan Anda. Ini dapat digunakan untuk proses seperti peningkatan, tes beban, pemulihan bencana. Masalah utama yang harus Anda tangani adalah bahwa aplikasi harus terhubung ke database dalam beberapa cara, dan pengaturan yang fleksibel dapat menjadi rumit untuk database - terutama dengan pengaturan master-slave. Untungnya, ada beberapa opsi untuk mempermudah proses ini.

Salah satu caranya adalah dengan menggunakan proxy database. Ada beberapa proxy untuk dipilih, tetapi dalam posting blog ini kita akan menggunakan ProxySQL, proxy terkenal yang tersedia untuk MySQL dan MariaDB. Kami akan menunjukkan bagaimana Anda dapat menggunakannya untuk memindahkan lalu lintas secara efisien antara node MySQL tanpa dampak yang terlihat untuk aplikasi. Kami juga akan menjelaskan beberapa keterbatasan dan kelemahan dari pendekatan ini.

Pengaturan Cloud Awal

Pada awalnya, mari kita bahas penyiapannya. Kami akan menggunakan instans AWS EC2 untuk lingkungan kami. Karena kami hanya menguji, kami tidak terlalu peduli dengan ketersediaan tinggi selain yang ingin kami buktikan - perubahan master yang mulus. Oleh karena itu kita akan menggunakan node aplikasi tunggal dan node ProxySQL tunggal. Sesuai praktik yang baik, kami akan menempatkan ProxySQL pada node aplikasi dan aplikasi akan dikonfigurasi untuk terhubung ke ProxySQL melalui soket Unix. Ini akan mengurangi overhead yang terkait dengan koneksi TCP dan meningkatkan keamanan - lalu lintas dari aplikasi ke proxy tidak akan meninggalkan instance lokal, hanya menyisakan ProxySQL -> koneksi MySQL untuk mengenkripsi. Sekali lagi, karena ini adalah pengujian sederhana, kami tidak akan menyiapkan SSL. Di lingkungan produksi, Anda ingin melakukannya, meskipun Anda menggunakan VPC.

Lingkungan akan terlihat seperti pada diagram di bawah ini:

Sebagai aplikasi, kami akan menggunakan Sysbench - program benchmark sintetis untuk MySQL . Ini memiliki opsi untuk menonaktifkan dan mengaktifkan penggunaan transaksi, yang akan kita gunakan untuk mendemonstrasikan bagaimana ProxySQL menanganinya.

Menginstal Cluster Replikasi MySQL Menggunakan ClusterControl

Untuk membuat penerapan cepat dan efisien, kita akan menggunakan ClusterControl untuk menerapkan pengaturan replikasi MySQL untuk kita. Instalasi ClusterControl hanya membutuhkan beberapa langkah. Kami tidak akan membahas detailnya di sini tetapi Anda harus membuka situs web kami, mendaftar dan menginstal ClusterControl harus cukup mudah. Harap diingat bahwa Anda perlu menyiapkan SSH tanpa kata sandi antara instance ClusterControl dan semua node yang akan kami kelola dengannya.

Setelah ClusterControl diinstal, Anda dapat masuk. Anda akan disajikan dengan wizard penerapan:

Karena kami sudah memiliki instance yang berjalan di cloud, oleh karena itu kami hanya akan menggunakan Opsi "Sebarkan". Kami akan disajikan dengan layar berikut:

Kami akan memilih Replikasi MySQL sebagai tipe cluster dan kami perlu menyediakan konektivitas rincian. Bisa koneksi menggunakan root user atau bisa juga sudo user dengan atau tanpa password.

Pada langkah selanjutnya, kita harus membuat beberapa keputusan. Kami akan menggunakan Server Percona untuk MySQL dalam versi terbarunya. Kami juga harus menentukan kata sandi untuk pengguna root pada node yang akan kami terapkan.

Pada langkah terakhir kita harus mendefinisikan topologi - kita akan menggunakan apa yang kami usulkan di awal - seorang master dan tiga budak.

ClusterControl akan memulai penerapan - kita dapat melacaknya di tab Aktivitas, seperti yang ditunjukkan pada tangkapan layar di atas.

Setelah penerapan selesai, kita dapat melihat cluster di daftar cluster:

Menginstal ProxySQL 2.0 Menggunakan ClusterControl

Langkah selanjutnya adalah menerapkan ProxySQL. ClusterControl dapat melakukan ini untuk kita.

Kita dapat melakukannya di Kelola -> Penyeimbang Beban.

Karena kita hanya menguji sesuatu, kita akan menggunakan kembali instance ClusterControl untuk ProxySQL dan Sysbench. Dalam kehidupan nyata Anda mungkin ingin menggunakan server aplikasi "asli" Anda. Jika Anda tidak dapat menemukannya di drop down, Anda selalu dapat menulis alamat server (IP atau nama host) dengan tangan.

Kami juga ingin menentukan kredensial untuk pemantauan dan pengguna administratif. Kami juga memeriksa ulang apakah ProxySQL 2.0 akan diterapkan (Anda selalu dapat mengubahnya ke 1.4.x jika perlu).

Di bagian bawah wizard kita akan menentukan pengguna yang akan dibuat di MySQL dan ProxySQL. Jika Anda memiliki aplikasi yang sudah ada, Anda mungkin ingin menggunakan pengguna yang sudah ada. Jika Anda menggunakan banyak pengguna untuk aplikasi Anda, Anda selalu dapat mengimpor sisanya nanti, setelah ProxySQL akan diterapkan.

Kami ingin memastikan bahwa semua instance MySQL akan dikonfigurasi di ProxySQL. Kami akan menggunakan transaksi eksplisit sehingga kami mengatur sakelar yang sesuai. Hanya ini yang perlu kami lakukan - sisanya adalah mengklik tombol “Deploy ProxySQL” dan biarkan ClusterControl melakukan tugasnya.

Ketika instalasi selesai, ProxySQL akan muncul di daftar node di klaster. Seperti yang Anda lihat pada tangkapan layar di atas, ia telah mendeteksi topologi dan node terdistribusi di seluruh grup host pembaca dan penulis.

Menginstal Sysbench

Langkah terakhir adalah membuat "aplikasi" kita dengan menginstal Sysbench. Prosesnya cukup sederhana. Pada awalnya kita harus menginstal prasyarat, perpustakaan dan alat yang diperlukan untuk mengkompilasi Sysbench:

[email protected]:~# apt install git automake libtool make libssl-dev pkg-config libmysqlclient-dev

Kemudian kita ingin mengkloning repositori sysbench:

[email protected]:~# git clone https://github.com/akopytov/sysbench.git

Akhirnya kita ingin mengkompilasi dan menginstal Sysbench:

[email protected]:~# cd sysbench/

[email protected]:~/sysbench# ./autogen.sh && ./configure && make && make install

Ini dia, Sysbench telah diinstal. Kita sekarang perlu menghasilkan beberapa data. Untuk itu, pertama-tama kita perlu membuat skema. Kami akan terhubung ke ProxySQL lokal dan melalui itu kami akan membuat skema 'sbtest' pada master. Harap dicatat kami menggunakan soket Unix untuk koneksi dengan ProxySQL.

[email protected]:~/sysbench# mysql -S /tmp/proxysql.sock -u sbtest -psbtest

mysql> CREATE DATABASE sbtest;

Query OK, 1 row affected (0.01 sec)

Sekarang kita dapat menggunakan sysbench untuk mengisi database dengan data. Sekali lagi, kami menggunakan soket Unix untuk koneksi dengan proxy:

[email protected]:~# sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=4 --events=0 --time=3600 --mysql-socket=/tmp/proxysql.sock --mysql-user=sbtest --mysql-password=sbtest --tables=32 --report-interval=1 --skip-trx=on --table-size=100000 --db-ps-mode=disable prepare

Setelah data siap, kami dapat melanjutkan ke pengujian kami.

Kesimpulan

Di bagian kedua blog ini, kita akan membahas penanganan koneksi, failover, dan pengaturan ProxySQL yang dapat membantu kita mengelola sakelar master dengan cara yang tidak terlalu mengganggu aplikasi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan MySQL 1241:Operan harus berisi 1 kolom

  2. Melarikan diri dari kutipan tunggal dalam PHP saat memasukkan ke MySQL

  3. Cara Mengaktifkan SSL/TLS untuk MySQL di Ubuntu

  4. Cara Terbaik untuk Meng-host MySQL di Azure Cloud

  5. Bisakah Anda mengakses nilai kenaikan otomatis di MySQL dalam satu pernyataan?