溫馨提示×

centos mysql主從復制原理

小樊
50
2025-04-28 16:52:12
欄目: 云計算

CentOS MySQL主從復制原理主要基于MySQL的二進制日志(Binary Log)和I/O線程、SQL線程。以下是主從復制的詳細步驟和原理:

1. 主服務器配置

  • 開啟二進制日志:在主服務器的my.cnfmy.ini文件中,確保以下配置項已設置:
    [mysqld]
    server-id = 1  # 主服務器的唯一ID
    log_bin = /var/log/mysql/mysql-bin.log  # 二進制日志文件路徑
    binlog_do_db = your_database  # 需要復制的數據庫(可選)
    
  • 重啟MySQL服務:使配置生效。
    systemctl restart mysqld
    

2. 創建復制用戶

  • 在主服務器上創建一個用于復制的專用用戶,并授予相應的權限。
    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
    

3. 獲取主服務器的二進制日志位置

  • 在主服務器上執行以下命令,記錄當前的二進制日志文件名和位置。
    SHOW MASTER STATUS;
    
    記錄FilePosition的值。

4. 從服務器配置

  • 編輯配置文件:在從服務器的my.cnfmy.ini文件中添加以下配置:
    [mysqld]
    server-id = 2  # 從服務器的唯一ID,必須與主服務器不同
    relay_log = /var/log/mysql/mysql-relay-bin.log  # 中繼日志文件路徑
    log_bin = /var/log/mysql/mysql-bin.log  # 可選,如果需要從服務器也記錄二進制日志
    replicate_do_db = your_database  # 需要復制的數據庫(可選)
    
  • 重啟MySQL服務:使配置生效。
    systemctl restart mysqld
    

5. 配置從服務器連接主服務器

  • 在從服務器上執行以下SQL命令,配置復制連接。
    CHANGE MASTER TO
    MASTER_HOST='master_ip',  # 主服務器的IP地址
    MASTER_USER='replicator',  # 復制用戶的用戶名
    MASTER_PASSWORD='password',  # 復制用戶的密碼
    MASTER_LOG_FILE='mysql-bin.000001',  # 主服務器的二進制日志文件名
    MASTER_LOG_POS=123;  # 主服務器的二進制日志位置
    
    MASTER_LOG_FILEMASTER_LOG_POS替換為你之前記錄的值。

6. 啟動從服務器復制線程

  • 在從服務器上啟動I/O線程和SQL線程。
    START SLAVE;
    

7. 驗證復制狀態

  • 在從服務器上執行以下命令,檢查復制狀態。
    SHOW SLAVE STATUS\G
    
    關鍵字段解釋:
    • Slave_IO_Running: I/O線程狀態,應為Yes。
    • Slave_SQL_Running: SQL線程狀態,應為Yes。
    • Seconds_Behind_Master: 從服務器落后主服務器的時間(秒)。

原理概述

  1. 二進制日志:主服務器將所有更改記錄到二進制日志中。
  2. I/O線程:從服務器的I/O線程連接到主服務器,請求并讀取二進制日志事件,然后將這些事件寫入中繼日志。
  3. SQL線程:從服務器的SQL線程讀取中繼日志中的事件,并在從服務器上重放這些事件,從而實現數據同步。

通過以上步驟和原理,CentOS MySQL主從復制可以有效地實現數據的實時備份和負載均衡。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女