Rumah  >  Artikel  >  pangkalan data  >  Membina Kluster MySQL Yang Sangat Tersedia: Panduan Amalan Terbaik untuk Replikasi Master-Slave dan Pengimbangan Beban

Membina Kluster MySQL Yang Sangat Tersedia: Panduan Amalan Terbaik untuk Replikasi Master-Slave dan Pengimbangan Beban

WBOY
WBOYasal
2023-09-09 10:57:36971semak imbas

Membina Kluster MySQL Yang Sangat Tersedia: Panduan Amalan Terbaik untuk Replikasi Master-Slave dan Pengimbangan Beban

Membina Kluster MySQL Sangat Tersedia: Panduan Amalan Terbaik untuk Replikasi Master-Slave dan Pengimbangan Beban

Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet Dengan pembangunan, pangkalan data telah menjadi salah satu enjin penyimpanan dan pemprosesan data teras kebanyakan aplikasi web. Dalam senario ini, ketersediaan tinggi dan pengimbangan beban telah menjadi pertimbangan penting dalam reka bentuk seni bina pangkalan data. Sebagai salah satu pangkalan data hubungan sumber terbuka yang paling popular, penyelesaian penggunaan kluster MySQL telah menarik banyak perhatian.

Artikel ini akan memperkenalkan cara melaksanakan kluster pangkalan data yang sangat tersedia melalui replikasi tuan-hamba MySQL dan pengimbangan beban. Kami mula-mula akan memperkenalkan prinsip dan konfigurasi replikasi tuan-hamba MySQL, dan kemudian membincangkan cara menggunakan pengimbang beban untuk mengimbangi trafik akses pangkalan data.

1 Prinsip dan konfigurasi replikasi master-slave MySQL

MySQL master-slave replication ialah teknologi replikasi pangkalan data berdasarkan penghantaran log, yang merekodkan operasi pengubahsuaian pada master. pangkalan data ke dalam log binari, dan kemudian baca log ini untuk mengubah suai pangkalan data hamba, dengan itu mencapai penyegerakan data antara pangkalan data induk dan pangkalan data hamba.

Mengkonfigurasi replikasi tuan-hamba MySQL memerlukan langkah berikut:

  1. Mengkonfigurasi pangkalan data induk

Dalam master pangkalan data Tambahkan konfigurasi berikut pada fail konfigurasi my.cnf:

[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=ROW
  1. Buat akaun salinan dan benarkan

Log masuk ke pangkalan data utama , cipta akaun salinan dan Benarkan kebenaran salinan:

CREATE USER 'repl'@'slaveip' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slaveip';
FLUSH PRIVILEGES;

Ganti slaveip dengan alamat IP pangkalan data hamba, dan kata laluan dengan kata laluan akaun salinan. slaveip替换为从数据库的IP地址,password替换为复制账号的密码。

  1. 启动主数据库的二进制日志

登录到主数据库的mysql命令行中,执行以下命令启动二进制日志:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;

记录下FilePosition的值,后续在配置从数据库时会用到。

  1. 配置从数据库

在从数据库的配置文件my.cnf中增加以下配置:

[mysqld]
server-id=2

然后重启从数据库。

  1. 启动从数据库复制

在从数据库的mysql命令行中执行以下命令启动复制:

mysql> CHANGE MASTER TO MASTER_HOST='masterip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='filename', MASTER_LOG_POS=position;
mysql> START SLAVE;

masterip替换为主数据库的IP地址,password替换为复制账号的密码,filenameposition替换为上一步中记录的值。

配置完成后,从数据库将开始与主数据库进行同步。

二、负载均衡器的选择和配置

在高可用的数据库集群中,负载均衡器发挥着至关重要的作用。它可以在多个从数据库之间均衡分发读操作的请求,从而提高系统的整体性能和可用性。

常见的MySQL负载均衡器有HAProxy、MaxScale和MySQL Router等。以HAProxy为例,下面是一个示例的配置文件:

global
    maxconn 4096

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

listen mysql-cluster
    bind 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option mysql-check user haproxy_check
    server mysql-1 masterip:3306 check
    server mysql-2 slaveip:3306 check

masteripslaveip替换为主从数据库的IP地址。

配置完成后,启动HAProxy服务,即可使用HAProxy进行数据库访问的负载均衡。

三、代码示例

以下是一个简单的PHP代码示例,用于演示如何通过负载均衡器连接到MySQL数据库集群:

<?php
$host = 'load-balancer-ip';
$user = 'username';
$pass = 'password';
$db = 'database';

$conn = new mysqli($host, $user, $pass, $db);

if($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>

load-balancer-ip替换为负载均衡器的IP地址,usernamepassworddatabase

    Mulakan log binari pangkalan data utama

    Log masuk ke baris arahan mysql pangkalan data utama dan laksanakan arahan berikut untuk memulakan log binari :

    rrreee

    Rekod nilai Fail dan Kedudukan, yang akan digunakan kemudian apabila mengkonfigurasi hamba pangkalan data.

      #🎜🎜#Konfigurasikan pangkalan data hamba #🎜🎜##🎜🎜##🎜🎜#Tambah konfigurasi berikut dalam fail konfigurasi my.cnf pangkalan data hamba: #🎜 🎜#rrreee #🎜🎜#Kemudian mulakan semula pangkalan data hamba. #🎜🎜#
        #🎜🎜#Mulakan replikasi daripada pangkalan data #🎜🎜##🎜🎜##🎜🎜#Jalankan arahan berikut dalam baris arahan mysql daripada pangkalan data untuk memulakan replikasi: # 🎜🎜# rrreee#🎜🎜#Gantikan masterip dengan alamat IP pangkalan data utama, password dengan kata laluan akaun salinan, filename dan position Ganti dengan nilai yang direkodkan dalam langkah sebelumnya. #🎜🎜##🎜🎜#Selepas konfigurasi selesai, pangkalan data hamba akan mula disegerakkan dengan pangkalan data induk. #🎜🎜##🎜🎜# 2. Pemilihan dan konfigurasi pengimbang beban #🎜🎜##🎜🎜# Dalam kelompok pangkalan data ketersediaan tinggi, pengimbang beban memainkan peranan penting. Ia boleh mengedarkan permintaan operasi baca secara sama rata antara pelbagai pangkalan data hamba, dengan itu meningkatkan prestasi keseluruhan dan ketersediaan sistem. #🎜🎜##🎜🎜#Pengimbang beban MySQL biasa termasuk HAProxy, MaxScale dan Penghala MySQL. Mengambil HAProxy sebagai contoh, berikut ialah contoh fail konfigurasi: #🎜🎜#rrreee#🎜🎜#Ganti masterip dan slaveip dengan alamat IP master dan slave pangkalan data. #🎜🎜##🎜🎜#Selepas konfigurasi selesai, mulakan perkhidmatan HAProxy, dan anda boleh menggunakan HAProxy untuk pengimbangan beban akses pangkalan data. #🎜🎜##🎜🎜#3. Contoh Kod#🎜🎜##🎜🎜#Berikut ialah contoh kod PHP mudah untuk menunjukkan cara menyambung ke kluster pangkalan data MySQL melalui pengimbang beban: #🎜🎜#rrreee#🎜 🎜#Ganti load-balancer-ip dengan alamat IP pengimbang beban, nama pengguna, kata laluan dan database Gantikan dengan kelayakan log masuk pangkalan data yang betul. #🎜🎜##🎜🎜#Melalui konfigurasi dan kod sampel di atas, kami boleh melaksanakan kluster MySQL yang sangat tersedia dan mencapai pengimbangan beban akses pangkalan data melalui pengimbang beban. Seni bina sedemikian bukan sahaja dapat meningkatkan ketersediaan dan prestasi sistem, tetapi juga dapat mengatasi pelbagai kesalahan dan senario konkurensi yang tinggi dengan lebih baik. #🎜🎜##🎜🎜#Ringkasan: #🎜🎜##🎜🎜#Artikel ini memperkenalkan cara untuk melaksanakan kluster pangkalan data yang sangat tersedia melalui replikasi induk-hamba MySQL dan pengimbangan beban. Melalui replikasi tuan-hamba, penyegerakan data antara pangkalan data induk dan pangkalan data hamba boleh dicapai melalui pengimbang beban, permintaan akses pangkalan data boleh diedarkan secara sama rata. Pada masa yang sama, kami juga menyediakan contoh konfigurasi dan kod yang sepadan untuk memudahkan pembaca bermula dengan cepat. Saya harap artikel ini dapat memberikan sedikit rujukan dan bantuan untuk semua orang membina kelompok MySQL yang sangat tersedia. #🎜🎜#

Atas ialah kandungan terperinci Membina Kluster MySQL Yang Sangat Tersedia: Panduan Amalan Terbaik untuk Replikasi Master-Slave dan Pengimbangan Beban. 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