Rumah >pangkalan data >tutorial mysql >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:
Dalam master pangkalan data Tambahkan konfigurasi berikut pada fail konfigurasi my.cnf:
[mysqld] server-id=1 log_bin=mysql-bin binlog_format=ROW
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
替换为复制账号的密码。
登录到主数据库的mysql命令行中,执行以下命令启动二进制日志:
mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS;
记录下File
和Position
的值,后续在配置从数据库时会用到。
在从数据库的配置文件my.cnf中增加以下配置:
[mysqld] server-id=2
然后重启从数据库。
在从数据库的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
替换为复制账号的密码,filename
和position
替换为上一步中记录的值。
配置完成后,从数据库将开始与主数据库进行同步。
二、负载均衡器的选择和配置
在高可用的数据库集群中,负载均衡器发挥着至关重要的作用。它可以在多个从数据库之间均衡分发读操作的请求,从而提高系统的整体性能和可用性。
常见的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
将masterip
和slaveip
替换为主从数据库的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地址,username
、password
和database
Log masuk ke baris arahan mysql pangkalan data utama dan laksanakan arahan berikut untuk memulakan log binari :
rrreeeRekod nilai
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!