Rumah  >  Artikel  >  pangkalan data  >  Apakah teknik untuk mempelajari pemisahan baca-tulis dan pengimbangan beban MySQL?

Apakah teknik untuk mempelajari pemisahan baca-tulis dan pengimbangan beban MySQL?

WBOY
WBOYasal
2023-08-02 19:27:211002semak imbas

Apakah teknik untuk mempelajari pemisahan baca-tulis dan pengimbangan beban MySQL?

MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan, digunakan secara meluas dalam pelbagai aplikasi web dan sistem peringkat perusahaan. Memandangkan skala aplikasi terus meningkat, beban baca dan tulis pada pangkalan data menjadi lebih berat dan lebih berat Untuk meningkatkan prestasi dan kebolehskalaan pangkalan data, pengasingan baca dan tulis dan pengimbangan beban telah menjadi cara teknikal yang diperlukan.

Pengasingan baca dan tulis merujuk kepada mengasingkan operasi baca dan tulis kepada pelayan MySQL yang berbeza untuk meningkatkan kecekapan membaca dan kapasiti pangkalan data. Pengimbangan beban merujuk kepada mengedarkan permintaan pangkalan data kepada berbilang pelayan MySQL untuk mengimbangi beban pangkalan data.

Yang berikut akan memperkenalkan beberapa kaedah mempelajari teknik pemisahan baca-tulis dan pengimbangan beban MySQL serta contoh kodnya yang sepadan.

  1. Replikasi tuan-hamba

Replikasi tuan-hamba ialah kaedah pemisahan baca-tulis yang paling asas dan biasa. Ia menetapkan satu pelayan MySQL sebagai pelayan induk (Master), bertanggungjawab untuk memproses semua operasi tulis, dan menetapkan pelayan MySQL lain sebagai pelayan hamba (Slave), bertanggungjawab untuk memproses semua operasi baca. Pelayan induk menghantar log operasi tulis ke pelayan hamba, dan pelayan hamba melakukan penyegerakan data berdasarkan log ini.

Contoh kod untuk mengkonfigurasi replikasi tuan-hamba adalah seperti berikut:

Tambah konfigurasi berikut dalam fail konfigurasi (my.cnf) pelayan induk:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=mydatabase

Tambah konfigurasi berikut dalam fail konfigurasi pelayan hamba :

[mysqld]
server-id=2

Mulakan semula pelayan tuan-hamba Akhir sekali, anda boleh melihat status tuan-hamba melalui arahan berikut:

SHOW MASTER STATUS;
SHOW SLAVE STATUS;
  1. Read-write separation middleware

Sebagai tambahan kepada replikasi tuan-hamba, anda juga boleh menggunakan read -tulis pemisahan middleware untuk mencapai pemisahan baca-tulis dan pengimbangan beban yang lebih fleksibel. Perisian tengah pemisahan baca-tulis biasa termasuk Proksi MySQL, MaxScale dan ProxySQL.

Ambil ProxySQL sebagai contoh Contoh kod untuk mengkonfigurasi pemisahan baca-tulis adalah seperti berikut:

# 创建一个与数据库对应的后端连接池
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0, '192.168.0.1', 3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (1, '192.168.0.2', 3306);

# 创建读写分离规则
INSERT INTO mysql_query_rules(match_pattern, destination_hostgroup) VALUES ('^SELECT', 1);
INSERT INTO mysql_query_rules(match_pattern, destination_hostgroup) VALUES ('^UPDATE', 0);

Melalui konfigurasi di atas, ProxySQL akan menghantar permintaan pertanyaan kepada kumpulan hos (kumpulan hos) yang berbeza mengikut jenis pernyataan SQL, dengan itu mencapai pemisahan baca-tulis dan Pengimbangan beban.

  1. Kolam Sambungan Pangkalan Data

Kolam sambungan pangkalan data ialah satu lagi teknologi penting untuk meningkatkan prestasi dan kebolehskalaan pangkalan data. Ia mencipta beberapa sambungan pangkalan data terlebih dahulu dan meletakkannya ke dalam kumpulan sambungan Apabila terdapat permintaan operasi pangkalan data, ia secara langsung mendapatkan sambungan daripada kumpulan sambungan, mengelakkan sambungan kerap dan operasi pemutusan sambungan, dan meningkatkan kelajuan tindak balas dan keselarasan. daripada prestasi pangkalan data.

Berikut ialah contoh kod yang dilaksanakan menggunakan kumpulan sambungan pangkalan data Apache Commons DBCP dalam bahasa Java:

import org.apache.commons.dbcp2.BasicDataSource;

public class ConnectionPoolDemo {
    public static void main(String[] args) {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
      
        // 从连接池中获取连接
        try (Connection connection = dataSource.getConnection()) {
            // 执行数据库操作
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Melalui kod di atas, anda boleh menggunakan kumpulan sambungan pangkalan data untuk mendapatkan sambungan pangkalan data MySQL dengan cepat, dengan itu meningkatkan kecekapan operasi dan prestasi konkurensi pangkalan data.

Ringkasnya, mempelajari teknik pemisahan baca-tulis dan pengimbangan beban MySQL boleh dicapai melalui replikasi induk-hamba, perisian tengah pemisahan baca-tulis dan kumpulan sambungan pangkalan data. Cara teknikal ini boleh meningkatkan kecekapan membaca, kapasiti dan prestasi konkurensi pangkalan data, dengan itu meningkatkan prestasi dan kebolehskalaan keseluruhan sistem.

Atas ialah kandungan terperinci Apakah teknik untuk mempelajari pemisahan baca-tulis dan pengimbangan beban 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