Rumah pangkalan data tutorial mysql MySQL数据库HA方案_MySQL

MySQL数据库HA方案_MySQL

Jun 01, 2016 pm 01:45 PM
pangkalan data

bitsCN.com

 之前研究数据库的高可用性,需要用到数据库的同步和备份,下面是我对MySQL的HA的一些研究。

 

 

根据《MySQL 5.0 Reference Manual》中提供的HA方案,主要由以下几种:

 

 

Requirements

MySQL Replication

MySQL Replication + Heartbeat

MySQL Heartbeat + DRBD

MySQL Cluster

MySQL + memcached

Availability

 

 

 

 

 

Automated IP failover

No

Yes

Yes

No

No

Automated database failover

No

No

Yes

Yes

No

Typical failover time

User/script-dependent

Varies

App dependent

Automatic resynchronization of data

No

No

Yes

Yes

No

Geographic redundancy support

Yes

Yes

Yes, when combined with MySQL Replication

Yes, when combined with MySQL Replication

No

Scalability

 

 

 

 

 

Built-in load balancing

No

No

No

Yes

Yes

Supports Read-intensive applications

Yes

Yes

Yes, when combined with MySQL Replication

Yes

Yes

Supports Write-intensive applications

No

No

Yes

Yes

No

Maximum number of nodes per group

One master, multiple slaves

One master, multiple slaves

One active (primary), one passive (secondary) node

255

Unlimited

Maximum number of slaves

Unlimited (reads only)

Unlimited (reads only)

One (failover only)

Unlimited (reads only)

Unlimited

 

对于方案的研究如下,文字性的比较多。

 

一、 MySQL Replication

对于单一的MySQL同步功能,因无法实现IP地址的自动切换,而该表中所列的功能是MySQL Replication的单向同步工作方式,需要改进为双向同步,就可以实现数据的双向同步、重同步、数据库切换的功能。

二、 MySQL Replication+Heartbeat

对于第二种方案,引入了heartbeat,所以可以实现IP地址切换,heartbeat只针对主机和网络故障的切换,无法监控数据库故障,所以需要额外的工具和配置,而且MySQL Replication的工作机制为异步通讯方式,对同步的数据的一致性可能产生影响。

三、 MySQL+Heartbeat+DRBD

对于第三种采用了DRBD,DRBD是Distributed Replicated Block Device,是基于内核开发的一个虚拟块设备的工具,该软件可以在一个实际块设备或分区上虚拟一个块设备,并挂载到系统之上,两台主机通过配置,来同步块设备上的数据,能够实现双向实时同步的功能,但同时只能有一台主机处于活动状态,从服务器上的虚拟块设备无法挂载,从而不能启动从服务器的MySQL服务,在切换时需要从服务器控制启动顺序,按顺序切换DRBD,挂载虚拟块设备,启动MySQL,调试中该时延较长。而且DRBD基于内核,在应用调试中,多次导致服务器内核出问题而导致主机死机,所以对于服务器的高稳定需求不满足。

四、 MySQL Cluster

集群方式一般应用在负载均衡,采用单向同步的方式,对数据的修改只在一台数据库服务器上进行,对于查询则交给其他的数据库服务器,同时无法完成IP地址的自动切换,所以没有调试

五、 MySQL+memcached

这种方案采用共享内存的方式,使多个MySQL共享同一内存缓冲区,故不适用备份的目的。

六、 其他方案

1.    MySQL Proxy

对于IP地址切换的功能,也可以采用MySQL Proxy来实现,其工作原理是在MySQL Server和Client之间添加一个代理设备,通过lua脚本来处理数据请求,可以根据业务需求用lua脚本实现不同的功能,但这种方式将多添加一台MySQL Proxy服务器,所以不考虑。

2.    MyBalanceMyReplication

对于同步功能,除了MySQL本身的同步和DRBD外,还有MyBalance和MyReplication两个工具可以实现,但这两个工具只能进行单向同步,不适合双向备份的目的,所以无法满足需求。

 本文出自“技术成就梦想”

bitsCN.com
Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Mar 27, 2024 pm 09:39 PM

Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Ia digemari oleh pembangun kerana kelebihannya dalam pengaturcaraan serentak dan pengaturcaraan rangkaian. Dalam pembangunan sebenar, operasi pangkalan data adalah bahagian yang sangat diperlukan Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Dalam bahasa Go, kami biasanya menggunakan perpustakaan pihak ketiga untuk mengendalikan pangkalan data, seperti pakej sql yang biasa digunakan, gorm, dsb. Di sini kami mengambil pakej sql sebagai contoh untuk memperkenalkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Andaikan kami menggunakan pangkalan data MySQL.

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Apr 17, 2024 pm 12:09 PM

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

Apr 09, 2024 pm 12:36 PM

HTML tidak boleh membaca pangkalan data secara langsung, tetapi ia boleh dicapai melalui JavaScript dan AJAX. Langkah-langkah termasuk mewujudkan sambungan pangkalan data, menghantar pertanyaan, memproses respons dan mengemas kini halaman. Artikel ini menyediakan contoh praktikal menggunakan JavaScript, AJAX dan PHP untuk membaca data daripada pangkalan data MySQL, menunjukkan cara untuk memaparkan hasil pertanyaan secara dinamik dalam halaman HTML. Contoh ini menggunakan XMLHttpRequest untuk mewujudkan sambungan pangkalan data, menghantar pertanyaan dan memproses respons, dengan itu mengisi data ke dalam elemen halaman dan merealisasikan fungsi HTML membaca pangkalan data.

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Mar 27, 2024 pm 05:21 PM

PHP ialah bahasa pengaturcaraan bahagian belakang yang digunakan secara meluas dalam pembangunan laman web Ia mempunyai fungsi operasi pangkalan data yang kuat dan sering digunakan untuk berinteraksi dengan pangkalan data seperti MySQL. Walau bagaimanapun, disebabkan kerumitan pengekodan aksara Cina, masalah sering timbul apabila berurusan dengan aksara Cina bercelaru dalam pangkalan data. Artikel ini akan memperkenalkan kemahiran dan amalan PHP dalam mengendalikan aksara bercelaru bahasa Cina dalam pangkalan data, termasuk punca biasa aksara bercelaru, penyelesaian dan contoh kod khusus. Sebab biasa aksara bercelaru ialah tetapan set aksara pangkalan data yang salah: set aksara yang betul perlu dipilih semasa mencipta pangkalan data, seperti utf8 atau u

Bagaimana untuk menggunakan fungsi panggil balik pangkalan data di Golang? Bagaimana untuk menggunakan fungsi panggil balik pangkalan data di Golang? Jun 03, 2024 pm 02:20 PM

Menggunakan fungsi panggil balik pangkalan data di Golang boleh mencapai: melaksanakan kod tersuai selepas operasi pangkalan data yang ditentukan selesai. Tambah tingkah laku tersuai melalui fungsi berasingan tanpa menulis kod tambahan. Fungsi panggil balik tersedia untuk operasi memasukkan, mengemas kini, memadam dan pertanyaan. Anda mesti menggunakan fungsi sql.Exec, sql.QueryRow atau sql.Query untuk menggunakan fungsi panggil balik.

See all articles