Rumah  >  Artikel  >  pangkalan data  >  Apakah pemulihan bencana pangkalan data dan teknik failover untuk mempelajari MySQL?

Apakah pemulihan bencana pangkalan data dan teknik failover untuk mempelajari MySQL?

WBOY
WBOYasal
2023-07-31 19:55:541142semak imbas

Apakah pangkalan data pemulihan bencana dan teknik failover untuk mempelajari MySQL?

1. Pengenalan latar belakang
Dalam era Internet hari ini, pangkalan data adalah teras aplikasi, dan ia menyimpan sejumlah besar data. Walau bagaimanapun, pelayan pangkalan data juga menghadapi pelbagai kegagalan, seperti kegagalan perkakasan, gangguan rangkaian, kegagalan kuasa, dll. Untuk memastikan ketersediaan tinggi yang berterusan dan keselamatan data, pemulihan bencana pangkalan data dan failover telah menjadi tugas penting dalam operasi dan penyelenggaraan pangkalan data. Sebagai salah satu pangkalan data hubungan yang paling popular, MySQL mempunyai pelbagai teknologi pemulihan bencana dan failover Berikut adalah beberapa teknik yang biasa digunakan.

2. Kemahiran pemulihan bencana MySQL

  1. Replikasi tuan-hamba
    Replikasi tuan-hamba ialah salah satu teknologi yang paling biasa digunakan dalam pemulihan bencana MySQL. Hampir semua versi MySQL menyokong replikasi tuan-hamba. Melalui replikasi tuan-hamba, data daripada pangkalan data induk boleh disalin ke satu atau lebih pangkalan data hamba untuk memastikan sandaran dan ketersediaan data. Apabila pangkalan data utama gagal, pangkalan data sekunder boleh dinaik taraf dengan mudah kepada pangkalan data utama untuk mencapai failover pantas.

Langkah konfigurasi untuk replikasi tuan-hamba adalah seperti berikut:
1) Dayakan fungsi log binari (binlog) pada pangkalan data induk dan konfigurasi server_id yang unik.
2) Konfigurasikan parameter replikasi pada pangkalan data hamba, seperti menentukan tuan_hos, tuan_pengguna, induk_kata laluan, dsb.
3) Mulakan pangkalan data hamba, sambungkannya ke pangkalan data induk dan salin data.

Contoh kod:

On Master:

# 在配置文件中开启binlog
[mysqld]
server_id=1
log_bin=mysql-bin

On Slave:

# 在配置文件中配置复制参数
[mysqld]
server_id=2
log_bin=mysql-bin

[mysqldump]
master_host=master_ip
master_user=replication_user
master_password=replication_password
  1. Rantai replikasi
    Rantai replikasi merujuk kepada menyambungkan berbilang pangkalan data dalam cara replikasi tuan-hamba untuk membentuk struktur replikasi rantai. Kaedah ini boleh mencapai sandaran teragih dan failover data.

Contoh kod:

On Master1:

[mysqld]
server_id=1
log_bin=mysql-bin

# 配置与下一个主库的连接
log_slave_updates=1
relay_log=mysql-relay-bin
replicate_do_db=db1
replicate-ignore-db=mysql
replicate-ignore-db=source_db
replicate-ignore-db=destination_db
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema
replicate-ignore-db=innodb
replicate-ignore-db=slave_lab
replicate-wild_ignore-table=server1_db1.binlogtest*
replicate-wild_ignore-table=*.hg.*,*.git.*
replicate-wild-ignore-table=db2_v2p2_gfhb.*.*
replicate-wild=wild123.blog_table_name_to_replicate
[mysqldump]
master_host=master2_ip
master_user=master2_user
master_password=master2_password

On Master2:

[mysqld]
server_id=2
log_bin=mysql-bin

# 配置与下一个主库的连接
log_slave_updates=1
relay_log=mysql-relay-bin
replicate_do_db=db2
replicate-ignore-db=mysql
replicate-ignore-db=source_db
replicate-ignore-db=destination_db
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema
replicate-ignore-db=innodb
replicate-ignore-db=slave_lab
replicate-wild_ignore-table=server2_db1.binlogtest*
replicate-wild_ignore-table=*.hg.*,*.git.*
replicate-wild-ignore-table=db3_v2p2_gfhb.*.*
replicate-wild=wild321.blog_table_name_to_replicate
[mysqldump]
master_host=master3_ip
master_user=master3_user
master_password=master3_password

Dua langkah pertama dikonfigurasikan pada perpustakaan induk pertama, dan konfigurasi pada perpustakaan induk kedua adalah serupa. Setiap pangkalan data berfungsi sebagai pangkalan data hamba pangkalan data induk seterusnya, dengan itu membentuk rantai replikasi.

3. Kemahiran failover MySQL

  1. Pengesan dan pensuisan kerosakan automatik
    Secara umumnya, failover MySQL memerlukan campur tangan manual untuk menukar, tetapi kaedah ini akan menyebabkan masa henti tertentu. Untuk mencapai pengesanan dan penukaran kegagalan automatik, pengesanan degupan jantung dan mekanisme Failover (failover) boleh digunakan.

Pengesanan degupan jantung: Semak sama ada pangkalan data utama masih hidup dengan kerap menghantar paket degupan jantung ke pangkalan data utama.
Mekanisme Failover: Apabila pengesanan degupan jantung mendapati bahawa pangkalan data utama tidak tersedia, pangkalan data hamba secara automatik dinaikkan ke pangkalan data utama dan konfigurasi yang berkaitan dikemas kini.

Kod sampel:

#!/usr/bin/env python
import os
import time

VIP = '192.168.1.100'
Script = '/opt/mysql_failover.sh'

def detect_db():
    while True:
        ret = os.system('ping -c 1 '+VIP)
        if ret:
            print('MySQL is down')
            os.system(Script + ' down')
        else:
            print('MySQL is up')
            os.system(Script + ' up')
        time.sleep(5)

detect_db()
  1. Mengkonfigurasi kluster ketersediaan tinggi
    Selain pengesanan dan penukaran kegagalan automatik, kluster ketersediaan tinggi MySQL juga boleh dikonfigurasikan untuk melaksanakan failover. Penyelesaian kluster ketersediaan tinggi yang biasa digunakan termasuk Perentak Jantung dan Keepalived.

Pacemaker ialah penyelesaian sumber terbuka matang yang mengurus sumber dan pengurusan dinamik dalam kelompok melalui pengurus sumber dan enjin keputusan.
Keepalived ialah penyelesaian ketersediaan tinggi ringan yang bergantung pada VRRP (Virtual Router Redundancy Protocol) dan LVS (Linux Virtual Server) untuk failover.

Kedua-dua penyelesaian di atas boleh menyediakan ketersediaan tinggi dan fungsi failover automatik Untuk butiran konfigurasi khusus, sila rujuk dokumentasi rasmi.

Ringkasnya, pelajari kemahiran pemulihan bencana pangkalan data MySQL dan kemahiran failover, anda boleh menggunakan replikasi tuan-hamba untuk mencapai sandaran dan failover data, rantaian replikasi untuk mencapai sandaran teragih, pengesanan kesalahan automatik dan penukaran untuk mencapai failover automatik, dan mengkonfigurasi tinggi- kluster ketersediaan Menyediakan ketersediaan yang tinggi. Aplikasi fleksibel teknik ini bukan sahaja dapat memastikan ketersediaan pangkalan data yang berterusan, tetapi juga meningkatkan kestabilan dan kebolehpercayaan sistem.

Atas ialah kandungan terperinci Apakah pemulihan bencana pangkalan data dan teknik failover untuk mempelajari MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn