W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
MySQL中的重做日志(Redo Log)和二進制日志(Binary Log)是兩種重要的日志系統(tǒng),它們在數(shù)據(jù)庫的事務(wù)處理、恢復和復制中扮演著關(guān)鍵角色。以下是它們之間的主要區(qū)別:
innodb_log_file_size
(每個重做日志文件的大?。┖?code>innodb_log_files_in_group(重做日志文件的數(shù)量) 。log_bin
(啟用二進制日志并指定日志文件前綴)和expire_logs_days
(設(shè)置二進制日志的過期天數(shù))等 。PURGE BINARY LOGS
命令手動刪除 。理解這兩種日志的區(qū)別對于數(shù)據(jù)庫的維護和管理至關(guān)重要,它們共同確保了數(shù)據(jù)庫的穩(wěn)定性和可靠性。
讓我們通過示例來說明重做日志(Redo Log)和二進制日志(Binary Log)的用法。
假設(shè)我們有一個MySQL服務(wù)器,配置了InnoDB存儲引擎和二進制日志。以下是一些基本的配置參數(shù):
[mysqld]
innodb_log_file_size = 64M
innodb_log_files_in_group = 2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 7
server_id = 1
START TRANSACTION;
INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
UPDATE users SET email = 'john_new@example.com' WHERE username = 'john_doe';
COMMIT;
COMMIT
之前崩潰,InnoDB存儲引擎將在系統(tǒng)重啟時使用重做日志來恢復這些未提交的更改,以保證事務(wù)的持久性。 -- 這將在二進制日志中記錄類似如下的事件:
-- # at 123456789
-- ## Update
-- UPDATE users SET email = 'john_new@example.com' WHERE username = 'john_doe';
-- ## Insert
-- INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
-- 在從服務(wù)器上,將執(zhí)行類似以下的命令來啟動復制過程:
CHANGE MASTER TO
MASTER_HOST = 'master_server_ip',
MASTER_USER = 'replica_user',
MASTER_PASSWORD = 'replica_password',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_LOG_POS = 123;
START SLAVE;
mysqlbinlog
工具解析二進制日志文件,并按照日志中的事件順序執(zhí)行,以實現(xiàn)數(shù)據(jù)的恢復。 mysqlbinlog --start-datetime="2024-07-01 00:00:00" --stop-datetime="2024-07-02 23:59:59" mysql-bin.000001 | mysql -uroot -p
通過這些示例,我們可以看到重做日志和二進制日志在確保數(shù)據(jù)庫事務(wù)的持久性、原子性以及在復制和恢復過程中的不同作用。重做日志關(guān)注于事務(wù)的物理數(shù)據(jù)恢復,而二進制日志則記錄了邏輯的SQL操作,用于復制和數(shù)據(jù)恢復。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: