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

Kegagalan Basis Data untuk Situs WordPress

Setiap perusahaan yang menguntungkan membutuhkan ketersediaan yang tinggi. Situs Web &Blog tidak berbeda karena perusahaan dan individu yang lebih kecil pun mengharuskan situs mereka tetap aktif untuk menjaga reputasi mereka.

WordPress sejauh ini merupakan CMS paling populer di dunia yang mendukung jutaan situs web dari kecil hingga besar. Tetapi bagaimana Anda dapat memastikan bahwa situs web Anda tetap hidup. Lebih khusus lagi, bagaimana saya bisa memastikan tidak tersedianya database saya tidak akan berdampak pada situs web saya?

Dalam posting blog ini kami akan menunjukkan cara mencapai failover untuk situs WordPress Anda menggunakan ClusterControl.

Setup yang akan kita gunakan untuk blog ini akan menggunakan Percona Server 5.7. Kami akan memiliki host lain yang berisi aplikasi Apache dan Wordpress. Kami tidak akan menyentuh bagian ketersediaan tinggi aplikasi, tetapi ini juga sesuatu yang ingin Anda pastikan untuk dimiliki. Kami akan menggunakan ClusterControl untuk mengelola database guna memastikan ketersediaan dan kami akan menggunakan host ketiga untuk menginstal dan menyiapkan ClusterControl itu sendiri.

Dengan asumsi bahwa ClusterControl aktif dan berjalan, kita perlu mengimpor database yang ada ke dalamnya.

Mengimpor Cluster Database dengan ClusterControl

Buka opsi Impor Server/Database yang Ada di wizard penerapan.

Kita harus mengonfigurasi konektivitas SSH karena ini merupakan persyaratan bagi ClusterControl untuk dapat mengelola node.

Kita sekarang harus mendefinisikan beberapa detail tentang vendor, versi, pengguna root akses, node itu sendiri, dan jika kita ingin ClusterControl mengelola pemulihan otomatis untuk kita atau tidak. Itu saja, setelah pekerjaan berhasil, Anda akan disajikan dengan cluster di daftar.

Untuk menyiapkan lingkungan yang sangat tersedia, kita perlu menjalankan beberapa tindakan. Lingkungan kita akan terdiri dari...

  • Tuan - Pasangan budak
  • Dua instans ProxySQL untuk pemisahan baca/tulis dan deteksi topologi
  • Dua instans Keepalive untuk pengelolaan IP Virtual

Idenya sederhana - kami akan menyebarkan budak ke master kami sehingga kami akan memiliki contoh kedua untuk failover jika master gagal. ClusterControl akan bertanggung jawab untuk mendeteksi kegagalan dan akan mempromosikan slave jika master tidak tersedia. ProxySQL akan melacak topologi replikasi dan akan mengarahkan lalu lintas ke node yang benar - penulisan akan dikirim ke master, tidak peduli node mana yang ada, pembacaan dapat dikirim ke master saja atau didistribusikan ke master dan slave . Akhirnya, Keepalive akan ditempatkan dengan ProxySQL dan itu akan menyediakan VIP untuk aplikasi untuk terhubung. VIP tersebut akan selalu ditetapkan ke salah satu instance ProxySQL dan Keepalive akan memindahkannya ke instance kedua, jika node ProxySQL “utama” gagal.

Setelah mengatakan semua itu, mari konfigurasikan ini menggunakan ClusterControl. Semua itu dapat dilakukan hanya dalam beberapa klik. Kita akan mulai dengan menambahkan budak.

Menambahkan Database Slave dengan ClusterControl

Kita mulai dengan memilih pekerjaan “Tambahkan Budak Replikasi”. Kemudian kita diminta untuk mengisi formulir:

Kami harus memilih master (dalam kasus kami, kami tidak benar-benar memiliki banyak pilihan), kita harus melewati IP atau nama host untuk budak baru. Jika kami memiliki cadangan yang dibuat sebelumnya, kami dapat menggunakan salah satunya untuk menyediakan budak. Dalam kasus kami ini tidak tersedia dan ClusterControl akan menyediakan budak langsung dari master. Itu saja, pekerjaan dimulai dan ClusterControl melakukan tindakan yang diperlukan. Anda dapat memantau perkembangannya di tab Aktivitas.

Akhirnya, setelah pekerjaan selesai dengan sukses, slave akan terlihat di daftar klaster.

Sekarang kita akan melanjutkan dengan mengonfigurasi instance ProxySQL. Dalam kasus kami lingkungan minimal sehingga, untuk menjaga hal-hal sederhana, kami akan menempatkan ProxySQL di salah satu node database. Namun, ini bukan pilihan terbaik dalam lingkungan produksi nyata. Idealnya, ProxySQL akan ditempatkan pada node yang terpisah atau ditempatkan dengan host aplikasi lain.

Tempat untuk memulai pekerjaan adalah Kelola -> Loadbalancer.

Di sini Anda harus memilih di mana ProxySQL harus dipasang, berikan kredensial administratif , dan menambahkan pengguna database. Dalam kasus kami, kami akan menggunakan pengguna kami yang ada karena aplikasi WordPress kami sudah menggunakannya untuk menghubungkan ke database. Kami kemudian harus memilih node mana yang akan digunakan di ProxySQL (kami ingin master dan slave di sini) dan memberi tahu ClusterControl apakah kami menggunakan transaksi eksplisit atau tidak. Ini tidak terlalu relevan dalam kasus kami, karena kami akan mengonfigurasi ulang ProxySQL setelah digunakan. Saat Anda mengaktifkan opsi itu, pemisahan baca/tulis tidak akan diaktifkan. Jika tidak, ClusterControl akan mengonfigurasi ProxySQL untuk pemisahan baca/tulis. Dalam pengaturan minimal kami, kami harus berpikir serius jika kami ingin pemisahan baca/tulis terjadi. Mari kita analisis itu.

Kelebihan &Kekurangan Read/Write Spit di ProxySQL

Keuntungan utama menggunakan split read/write adalah bahwa semua lalu lintas SELECT akan didistribusikan antara master dan slave. Ini berarti bahwa beban pada node akan lebih rendah dan waktu respon juga harus lebih rendah. Kedengarannya bagus, tetapi perlu diingat bahwa jika satu simpul gagal, simpul lain harus dapat mengakomodasi semua lalu lintas. Tidak ada gunanya memiliki failover otomatis jika hilangnya satu node berarti bahwa node kedua akan kelebihan beban dan, secara de facto, juga tidak tersedia.

Mungkin masuk akal untuk mendistribusikan beban jika Anda memiliki banyak budak - kehilangan satu dari lima simpul kurang berdampak daripada kehilangan satu dari dua. Apa pun yang Anda putuskan, Anda dapat dengan mudah mengubah perilaku dengan membuka node ProxySQL dan mengklik tab Aturan.

Pastikan untuk melihat aturan 200 (yang menangkap semua pernyataan SELECT ). Pada tangkapan layar di bawah, Anda dapat melihat bahwa grup host tujuan adalah 20, yang berarti semua node dalam kluster - pemisahan baca/tulis dan penskalaan diaktifkan. Kita dapat dengan mudah menonaktifkan ini dengan mengedit aturan ini dan mengubah Grup Host Tujuan menjadi 10 (yang berisi master).

Jika Anda ingin mengaktifkan pemisahan baca/tulis, Anda dapat dengan mudah lakukan dengan mengedit aturan kueri ini lagi dan menyetel grup host tujuan kembali ke 20.

Sekarang, mari kita terapkan ProxySQL kedua.

Untuk menghindari melewatkan semua opsi konfigurasi lagi, kita dapat menggunakan "Impor Konfigurasi ” dan pilih ProxySQL kami yang ada sebagai sumber.

Saat pekerjaan ini selesai, kita masih harus melakukan langkah terakhir dalam menyetel lingkungan kita. Kita harus men-deploy Keepalive di atas instance ProxySQL.

Menyebarkan Keepalive di Atas Instance ProxySQL

Di sini kami memilih ProxySQL sebagai jenis penyeimbang beban, meneruskan kedua instance ProxySQL untuk Tetap hidup untuk diinstal dan kami mengetik VIP dan antarmuka jaringan kami.

Seperti yang Anda lihat, kami sekarang telah menyiapkan keseluruhan dan siap. Kami memiliki VIP 10.0.0.111 yang ditetapkan ke salah satu instans ProxySQL. Instans ProxySQL akan mengarahkan lalu lintas kami ke node MySQL backend yang benar dan ClusterControl akan mengawasi lingkungan yang melakukan failover jika diperlukan. Tindakan terakhir yang harus kita lakukan adalah mengkonfigurasi ulang Wordpress untuk menggunakan IP Virtual untuk terhubung ke database.

Untuk melakukan itu, kita harus mengedit wp-config.php dan mengubah variabel DB_HOST menjadi Virtual IP kita:

/** MySQL hostname */

define( 'DB_HOST', '10.0.0.111' );

Kesimpulan

Mulai sekarang Wordpress akan terhubung ke database menggunakan VIP dan ProxySQL. Jika master node gagal, ClusterControl akan melakukan failover.

Seperti yang Anda lihat, master baru telah dipilih dan ProxySQL juga mengarah ke master baru di grup host 10.

Kami berharap posting blog ini memberi Anda beberapa ide tentang bagaimana merancang lingkungan database yang sangat tersedia untuk situs web Wordpress dan bagaimana ClusterControl dapat digunakan untuk menyebarkan semua elemennya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan beberapa baris di mysql

  2. Cara Menampilkan Nilai Baris sebagai Kolom di MySQL

  3. MySQL Penjualan bulanan 12 bulan terakhir termasuk bulan tanpa Penjualan

  4. Perbedaan antara INDEX, PRIMARY, UNIQUE, FULLTEXT di MySQL?

  5. Bagaimana cara menambahkan referensi ke konektor MySQL untuk .NET?