Ketahui tentang ketersediaan tinggi MySQL dan PostgreSQL dan toleransi kesalahan

王林
Lepaskan: 2023-07-13 13:30:07
asal
1108 orang telah melayarinya

Fahami ketersediaan tinggi dan toleransi kesalahan MySQL dan PostgreSQL

Abstrak: Artikel ini akan memperkenalkan ketersediaan tinggi dan toleransi kesalahan MySQL dan PostgreSQL, dua sistem pengurusan pangkalan data hubungan, termasuk replikasi tuan-hamba, replikasi berbilang induk, failover automatik dan fungsi lain Dan berikan contoh kod yang berkaitan.

1. Kaedah pelaksanaan MySQL ketersediaan tinggi dan toleransi kesalahan

  1. Replikasi Guru-Hamba
    Replikasi Guru-Hamba ialah kaedah yang biasa digunakan dalam MySQL untuk mencapai ketersediaan tinggi dan toleransi kesalahan. Pangkalan data induk (Master) menerima operasi tulis dan menghantar data bertulis ke pangkalan data hamba (Slave) pangkalan data hamba sentiasa menyegerakkan kemas kini data pangkalan data induk untuk mengekalkan konsistensi data. Apabila pangkalan data utama gagal, anda boleh mempromosikan pangkalan data hamba secara manual ke pangkalan data utama untuk mencapai failover.

Berikut ialah contoh replikasi tuan-hamba MySQL yang mudah:

# 主库配置(my.cnf文件中)
server-id=1
log-bin=mysql-bin
binlog-format=ROW

# 从库配置(my.cnf文件中)
server-id=2
master-host=主库IP地址
master-user=用户名
master-password=密码
Salin selepas log masuk
  1. Replikasi Berbilang Induk (Replikasi Berbilang Induk)
    Replikasi Berbilang Induk ialah kaedah lain untuk mencapai ketersediaan tinggi dan toleransi kesalahan dalam MySQL. Tidak seperti replikasi tuan-hamba, yang hanya mempunyai satu pangkalan data induk, replikasi berbilang induk membenarkan berbilang pangkalan data induk menerima operasi tulis dan menyegerakkan data bertulis ke pangkalan data induk yang lain. Ini meningkatkan keupayaan pemprosesan serentak sistem dan menyediakan ketersediaan yang lebih tinggi.

Berikut ialah contoh replikasi berbilang induk MySQL yang mudah:

# 主库1配置(my.cnf文件中)
server-id=1
log-bin=mysql-bin
binlog-format=ROW
auto_increment_increment=2
auto_increment_offset=1

# 主库2配置(my.cnf文件中)
server-id=2
log-bin=mysql-bin
binlog-format=ROW
auto_increment_increment=2
auto_increment_offset=2
Salin selepas log masuk
  1. Automatic Failover
    Automatic Failover ialah ciri penting MySQL high availability, yang secara automatik boleh menggantikan slave apabila pangkalan data induk gagal perpustakaan utama untuk mengekalkan kesinambungan sistem.

Berikut ialah contoh failover automatik MySQL yang mudah:

# 使用MySQL自带的工具MHA进行自动故障转移配置
[server default]
priority=1
manager_workdir=/usr/local/mha
manager_log=/usr/local/mha/manager.log

[server1]
hostname=主库1IP地址
ssh_user=用户名
repl_user=复制用户名
repl_password=复制密码

[server2]
hostname=主库2IP地址
ssh_user=用户名
repl_user=复制用户名
repl_password=复制密码
Salin selepas log masuk

2. Ketersediaan tinggi PostgreSQL dan kaedah pelaksanaan toleransi kesalahan

  1. Replikasi Penstriman (Replikasi Penstriman)
    Replikasi penstriman adalah biasa digunakan dalam Ketersediaan PostgreSQL yang tinggi dan QLult kaedah seksual. Sama seperti replikasi tuan-hamba MySQL, replikasi penstriman memindahkan operasi tulis daripada pangkalan data induk kepada satu atau lebih pangkalan data hamba, dan pangkalan data hamba sentiasa menyegerakkan data daripada pangkalan data induk untuk mengekalkan konsistensi. Apabila perpustakaan utama gagal, anda boleh mempromosikan perpustakaan hamba secara manual ke perpustakaan utama.

Berikut ialah contoh replikasi penstriman PostgreSQL yang mudah:

# 主库配置(postgresql.conf文件中)
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segments = 32
synchronous_commit = on

# 从库配置(recovery.conf文件中)
standby_mode = on
primary_conninfo = 'host=主库IP地址 port=5432 user=用户名 password=密码 application_name=从库名称'
trigger_file = '/tmp/failover'
Salin selepas log masuk
  1. Kluster Ketersediaan Tinggi (Kluster Ketersediaan Tinggi)
    Kluster ketersediaan tinggi ialah satu lagi cara untuk mencapai ketersediaan tinggi dan toleransi kesalahan dalam PostgreSQL. Dengan membentuk berbilang nod menjadi kluster, apabila nod gagal, nod lain boleh mengambil alih perkhidmatan secara automatik, dengan itu mencapai failover automatik.

Berikut ialah contoh kluster ketersediaan tinggi PostgreSQL yang mudah (menggunakan Pgpool-II):

# 配置Pgpool-II的pgpool.conf文件
backend_hostname0=主库1IP地址
backend_port0=5432
backend_weight0=1
backend_data_directory0='/data'

backend_hostname1=主库2IP地址
backend_port1=5432
backend_weight1=1
backend_data_directory1='/data'

# 配置Pgpool-II的pcp.conf文件
pgpool_hostname0=主库1IP地址
pgpool_port0=9999
pgpool_username0=用户名
pgpool_password0=密码

pgpool_hostname1=主库2IP地址
pgpool_port1=9999
pgpool_username1=用户名
pgpool_password1=密码
Salin selepas log masuk

Kesimpulan: Kedua-dua MySQL dan PostgreSQL menyediakan pelbagai fungsi ketersediaan tinggi dan toleransi kesalahan, dan anda boleh memilih kaedah yang sesuai mengikut keperluan sebenar. Memastikan kestabilan dan kesinambungan sistem. Dalam aplikasi sebenar, faktor seperti prestasi pangkalan data, ketekalan data, dan masa pemulihan kerosakan juga mesti dipertimbangkan untuk memilih penyelesaian yang sesuai secara komprehensif.

Rujukan:

  1. https://dev.mysql.com/doc/refman/8.0/en/replication.html
  2. https://www.postgresql.org/docs/current/high-availability.html

Atas ialah kandungan terperinci Ketahui tentang ketersediaan tinggi MySQL dan PostgreSQL dan toleransi kesalahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan