Pemulihan kegagalan pangkalan data dan log transaksi: MySQL lwn. PostgreSQL
Pengenalan:
Pemulihan kegagalan pangkalan data adalah bahagian penting dalam sistem pengurusan pangkalan data. Apabila kegagalan pangkalan data berlaku, cara memastikan ketekalan dan integriti data serta memulihkan operasi pangkalan data secepat mungkin telah menjadi isu penting yang perlu dihadapi oleh pentadbir pangkalan data. Artikel ini akan membincangkan kaedah pelaksanaan yang berbeza bagi pemulihan kegagalan pangkalan data dan log transaksi dalam dua sistem pengurusan pangkalan data hubungan popular, MySQL dan PostgreSQL, dan memberikan contoh kod yang sepadan.
1. Mekanisme pemulihan kerosakan MySQL:
1.1 Log
MySQL menggunakan dua jenis log berbeza untuk menyokong pemulihan kerosakan: log binari (Log binari) dan log transaksi (log buat semula InnoDB).
1.2 Log binari
Log binari ialah log yang digunakan untuk merekod semua operasi tulis pada pelayan MySQL. Fungsi utamanya adalah untuk pemulihan kegagalan dan replikasi pangkalan data. Apabila pangkalan data ranap atau kegagalan lain berlaku, keadaan pangkalan data dipulihkan dengan memainkan semula operasi yang direkodkan dalam log binari. Berikut ialah contoh kod untuk pemulihan menggunakan log binari:
# 开启二进制日志 mysql> SET sql_log_bin=1; # 执行写操作 mysql> INSERT INTO table_name (column1, column2, ....) -> VALUES (value1, value2, ...); # 关闭二进制日志 mysql> SET sql_log_bin=0; # 恢复数据库 shell> mysqlbinlog binlog.000001 | mysql -u root -p
1.3 Log transaksi (Log semula InnoDB)
Log transaksi digunakan untuk merekodkan operasi pengubahsuaian data enjin storan InnoDB, terutamanya digunakan untuk pemulihan ranap dan rollback transaksi. Ia terdiri daripada dua fail: buat semula log dan buat asal log.
log semula ialah fail log yang ditulis dalam gelung, digunakan untuk merekodkan operasi pengubahsuaian transaksi. Apabila pangkalan data ranap, keadaan pangkalan data dipulihkan dengan memainkan semula log dalam log buat semula. Berikut ialah contoh kod untuk pemulihan menggunakan log transaksi:
# 开启事务 mysql> START TRANSACTION; # 执行写操作 mysql> INSERT INTO table_name (column1, column2, ....) -> VALUES (value1, value2, ...); # 提交事务 mysql> COMMIT; # 恢复数据库 shell> innobackupex --apply-log /path/to/backup shell> cp -R /path/to/backup /var/lib/mysql shell> chown -R mysql:mysql /var/lib/mysql
2. Mekanisme pemulihan kegagalan PostgreSQL:
2.1 Log
PostgreSQL menggunakan dua jenis log yang berbeza untuk menyokong pemulihan kegagalan: log transaksi (WAL) dan log pusat pemeriksaan ( Checkpoint Log).
2.2 Log Transaksi (WAL)
Log transaksi ialah log yang digunakan untuk merekod semua operasi pengubahsuaian dalam pangkalan data. Fungsi utamanya adalah untuk memastikan ketekalan dan ketahanan pangkalan data. Apabila pangkalan data ranap atau kegagalan lain berlaku, keadaan pangkalan data dipulihkan dengan memainkan semula operasi dalam log transaksi. Berikut ialah contoh kod untuk pemulihan menggunakan log transaksi:
# 修改配置文件 wal_level = replica # 选择合适的事务日志级别 archive_mode = on # 打开归档模式 archive_command = 'cp %p /path/to/archive/%f' # 设置归档命令 # 创建及配置归档目录 shell> mkdir /path/to/archive shell> chown postgres:postgres /path/to/archive # 执行写操作 postgres$ INSERT INTO table_name (column1, column2, ....) VALUES (value1, value2, ...); # 手动触发归档(可选) postgres$ SELECT pg_switch_xlog(); # 恢复数据库 shell> cp /path/to/archive/xlog.00000001 /var/lib/postgresql/data/pg_xlog/ shell> chown postgres:postgres /var/lib/postgresql/data/pg_xlog/xlog.00000001 shell> pg_ctl -D /var/lib/postgresql/data start
2.3 Log Pusat Pemeriksaan (Log Pusat Pemeriksaan)
Log pusat pemeriksaan ialah log yang digunakan untuk merekodkan operasi pusat pemeriksaan terkini dalam pangkalan data. Ia digunakan terutamanya untuk pengoptimuman kelajuan pemulihan pangkalan data. Apabila pangkalan data ranap, keadaan pangkalan data boleh dipulihkan dengan cepat dengan membaca log pusat pemeriksaan.
Kesimpulan:
MySQL dan PostgreSQL kedua-duanya menggunakan log transaksi untuk menyokong pemulihan kegagalan, tetapi terdapat perbezaan tertentu dalam pelaksanaan tertentu. MySQL menggunakan log binari dan log buat semula InnoDB, manakala PostgreSQL menggunakan log transaksi (WAL) dan log pusat pemeriksaan. Melalui contoh kod di atas, kita boleh melihat proses operasi khusus mereka apabila memulihkan pangkalan data. Untuk memastikan keselamatan dan kebolehpercayaan pangkalan data, pentadbir pangkalan data perlu memilih sistem pengurusan pangkalan data yang sesuai berdasarkan keperluan khusus dan senario penggunaan, dan mengkonfigurasi secara munasabah mekanisme pemulihan kerosakan yang sepadan.
Atas ialah kandungan terperinci Pemulihan Pangkalan Data dan Log Transaksi: MySQL lwn. PostgreSQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!