MySQL怎樣配置主從復制 主從同步搭建詳細步驟解析

mysql主從復制配置步驟如下:1.主服務器開啟二進制日志,設置server-id,重啟mysql服務;2.創建具有replication slave權限的復制用戶;3.鎖定表并獲取show master status顯示的file和position信息后解鎖;4.從服務器設置不同的server-id,開啟relay-log,重啟mysql;5.使用change master to命令配置連接主服務器的信息,包括ip、用戶、密碼及日志文件與位置;6.啟動start slave并檢查show slave status的slave_io_running和slave_sql_running狀態為yes表示成功。若出現延遲,可優化網絡、升級硬件、優化sql或啟用并行復制等措施解決。切換主從時需停止sql線程,記錄同步位置,將從服務器重置為主,并調整其他從服務器的連接信息以確保數據一致性。

MySQL怎樣配置主從復制 主從同步搭建詳細步驟解析

MySQL主從復制,簡單來說,就是讓一臺MySQL服務器(主服務器)的數據自動同步到另一臺或多臺MySQL服務器(從服務器)。這樣做的好處很多,比如讀寫分離、數據備份、提高可用性等等。配置起來其實也不難,掌握幾個關鍵步驟就行。

MySQL怎樣配置主從復制 主從同步搭建詳細步驟解析

解決方案

配置MySQL主從復制,核心在于配置主服務器和從服務器,并建立它們之間的連接。

MySQL怎樣配置主從復制 主從同步搭建詳細步驟解析

  1. 主服務器配置:開啟二進制日志

    MySQL怎樣配置主從復制 主從同步搭建詳細步驟解析

    首先,你需要登錄到你的主服務器,修改MySQL的配置文件(通常是my.cnf或my.ini)。找到[mysqld]部分,添加或修改以下配置:

    log-bin=mysql-bin  # 開啟二進制日志,指定日志文件前綴 binlog-do-db=your_database_name # 指定需要同步的數據庫,可選 server-id=1        # 設置服務器ID,必須唯一

    log-bin是必須的,它開啟了二進制日志,MySQL會把所有的數據變更記錄到這個日志里。binlog-do-db可以指定需要同步的數據庫,如果你想同步所有數據庫,可以省略這一行。server-id也很重要,它用來唯一標識你的MySQL服務器,在主從復制環境中,每個服務器的server-id都必須不同。

    修改完配置文件后,重啟MySQL服務:

    sudo systemctl restart mysql

    或者使用你系統對應的重啟命令。

  2. 主服務器配置:創建復制用戶

    接下來,你需要創建一個專門用于復制的用戶,并賦予它足夠的權限。登錄到MySQL:

    mysql -u root -p

    然后執行以下sql語句

    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES;

    replication_user是你創建的用戶名,your_password是密碼,%表示允許任何IP地址的客戶端連接。當然,出于安全考慮,你可以將%替換為從服務器的IP地址。GRANT REPLICATION SLAVE語句賦予了這個用戶復制權限,FLUSH PRIVILEGES刷新權限。

  3. 主服務器配置:鎖定表并獲取二進制日志坐標

    在配置從服務器之前,你需要鎖定主服務器上的所有表,并獲取當前的二進制日志文件名和位置。

    FLUSH tableS WITH READ LOCK; SHOW MASTER STATUS;

    FLUSH TABLES WITH READ LOCK會鎖定所有表,防止數據發生變更,確保數據一致性。SHOW MASTER STATUS會顯示當前的二進制日志文件名(File)和位置(Position)。記住這兩個值,稍后在配置從服務器時會用到。

    記錄下File和Position后,釋放鎖:

    UNLOCK TABLES;

    注意: 在鎖定表期間,主服務器上的寫入操作會被阻塞,所以盡量縮短鎖定時間。

  4. 從服務器配置:修改配置文件

    登錄到你的從服務器,修改MySQL的配置文件(同樣是my.cnf或my.ini)。找到[mysqld]部分,添加或修改以下配置:

    server-id=2        # 設置服務器ID,必須唯一,且與主服務器不同 relay-log=relay-log # 開啟中繼日志,指定日志文件前綴 #read-only=1       # 設置為只讀模式,可選

    server-id同樣需要設置,并且必須與主服務器的server-id不同。relay-log開啟了中繼日志,從服務器會將從主服務器接收到的二進制日志寫入到中繼日志中。read-only=1可以將從服務器設置為只讀模式,防止誤操作,可選。

    修改完配置文件后,重啟MySQL服務:

    sudo systemctl restart mysql
  5. 從服務器配置:配置連接信息

    登錄到從服務器的MySQL:

    mysql -u root -p

    然后執行以下SQL語句,配置連接信息:

    CHANGE MASTER TO     MASTER_HOST='your_master_ip',       # 主服務器的IP地址     MASTER_USER='replication_user',       # 復制用戶名     MASTER_PASSWORD='your_password',   # 復制密碼     MASTER_LOG_FILE='your_log_file',       # 主服務器的二進制日志文件名     MASTER_LOG_POS=your_log_position;      # 主服務器的二進制日志位置

    將your_master_ip替換為主服務器的IP地址,replication_user和your_password替換為你之前創建的復制用戶名和密碼,your_log_file和your_log_position替換為你之前記錄的二進制日志文件名和位置。

  6. 從服務器配置:啟動復制

    配置完連接信息后,啟動復制:

    START SLAVE;

    然后查看復制狀態:

    SHOW SLAVE STATUSG

    檢查Slave_IO_Running和Slave_SQL_Running是否都為Yes,如果都是Yes,說明復制已經成功啟動。如果不是,需要檢查之前的配置是否正確,并查看錯誤日志。

主從復制延遲了怎么辦?如何解決?

主從復制延遲是常見問題。可能原因很多,比如網絡延遲、主服務器寫入壓力過大、從服務器性能不足等等。解決思路是找到瓶頸,然后優化。

  • 網絡優化: 檢查主從服務器之間的網絡連接是否穩定,帶寬是否足夠。可以使用ping命令測試網絡延遲。
  • 硬件升級: 如果從服務器的CPU、內存、磁盤IO性能不足,可以考慮升級硬件。
  • sql優化 慢SQL是導致延遲的常見原因。可以使用MySQL的慢查詢日志,找到慢SQL,然后進行優化,比如添加索引、優化查詢語句等等。
  • 并行復制: MySQL 5.7之后引入了并行復制,可以提高復制效率。可以嘗試開啟并行復制。
  • 半同步復制: 半同步復制可以保證主服務器在提交事務之前,至少有一個從服務器已經接收到事務。可以提高數據一致性,但會犧牲一定的性能。

主從復制架構如何選擇?單向、雙向、多級有什么區別

主從復制架構有很多種,常見的有單向復制、雙向復制、多級復制等等。

  • 單向復制: 最簡單的架構,一個主服務器,一個或多個從服務器。數據從主服務器同步到從服務器。適用于讀多寫少的場景。
  • 雙向復制: 兩個服務器互為主從。每個服務器都可以讀寫,數據會同步到對方。需要注意避免循環復制和數據沖突。適用于需要高可用性的場景。
  • 多級復制: 主服務器將數據同步到中間服務器,中間服務器再將數據同步到從服務器。可以減輕主服務器的壓力。適用于數據量很大,從服務器數量很多的場景。

選擇哪種架構,需要根據具體的業務需求和場景來決定。沒有最好的架構,只有最適合的架構。

主從切換如何操作?如何保證數據一致性?

主從切換是指在主服務器出現故障時,將從服務器切換為主服務器。這是一個非常重要的操作,需要謹慎處理,以保證數據一致性。

  1. 停止從服務器的SQL線程:

    STOP SLAVE SQL_THREAD;
  2. 查看從服務器的復制狀態:

    SHOW SLAVE STATUSG

    記錄下Relay_Master_Log_File和Exec_Master_Log_Pos的值。這兩個值表示從服務器已經同步到的主服務器的二進制日志位置。

  3. 將從服務器提升為主服務器:

    RESET MASTER;

    這個命令會將從服務器的二進制日志清空,并將其提升為主服務器。

  4. 修改其他從服務器的配置:

    將其他從服務器的MASTER_HOST修改為新的主服務器的IP地址,MASTER_LOG_FILE和MASTER_LOG_POS修改為之前記錄的Relay_Master_Log_File和Exec_Master_Log_Pos的值。

  5. 啟動其他從服務器的復制:

    START SLAVE;

    通過以上步驟,就可以完成主從切換。為了保證數據一致性,需要在切換之前,確保從服務器已經同步了所有的數據。可以使用pt-table-sync等工具來檢查數據一致性。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享