最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL主從復制(日志核心)完整教程(適合新手操作)

 更新時間:2026年03月11日 08:26:14   作者:技術凈勝  
MySQL主從復制用于多個數(shù)據(jù)庫服務器之間的數(shù)據(jù)同步,它可以提供高可用性、提高數(shù)據(jù)庫整體性能和吞吐量,以及可以進行數(shù)據(jù)備份和數(shù)據(jù)庫恢復,這篇文章主要介紹了MySQL主從復制(日志核心)的相關資料,需要的朋友可以參考下

下面為你整理了MySQL 主從復制(日志核心)完整教程,聚焦 binlog(主庫日志)、relay log(從庫日志)的配置與管理,適配 MySQL 5.7/8.0 版本,新手可直接跟著操作。

一、核心日志概念(先理解再配置)

主從復制的核心是日志同步,先搞懂 2 個關鍵日志:

日志類型作用存儲位置(默認)
二進制日志(binlog)主庫記錄所有數(shù)據(jù)修改操作(增刪改、DDL),是主從同步的數(shù)據(jù)源/var/lib/mysql/mysql-bin.*
中繼日志(relay log)從庫讀取主庫 binlog 后,本地保存的日志文件,從庫執(zhí)行該日志完成數(shù)據(jù)同步/var/lib/mysql/relay-log.*

二、環(huán)境準備(必做)

角色IPMySQL版本核心要求
主庫(Master)192.168.1.105.7/8.0開啟 binlog、唯一 server-id
從庫(Slave)192.168.1.115.7/8.0唯一 server-id、開啟 relay log

前置條件

  1. 主從服務器網絡互通(ping 通、3306 端口開放);
  2. 主從 MySQL 版本盡量一致;
  3. 主從服務器時間同步(ntpdate ntp.aliyun.com)。

三、主庫配置(核心:開啟 binlog)

步驟 1:修改主庫配置文件

編輯 MySQL 配置文件(不同系統(tǒng)路徑不同):

# CentOS/RHEL:/etc/my.cnf
# Ubuntu/Debian:/etc/mysql/mysql.conf.d/mysqld.cnf
sudo nano /etc/my.cnf

添加/修改以下配置(重點開啟 binlog):

[mysqld]
# 1. 必須:唯一server-id(主從不能重復,建議用IP最后一段)
server-id = 10
# 2. 必須:開啟binlog,指定日志前綴
log-bin = mysql-bin
# 3. 可選:binlog格式(推薦ROW,最安全)
binlog_format = ROW
# 4. 可選:同步的數(shù)據(jù)庫(僅同步db_test,不寫則同步所有)
# binlog-do-db = db_test
# 5. 可選:忽略同步的數(shù)據(jù)庫
# binlog-ignore-db = mysql
# 6. 可選:binlog過期時間(自動清理,避免日志占滿磁盤)
expire_logs_days = 7

步驟 2:重啟主庫 MySQL 生效

# CentOS 7+
sudo systemctl restart mysqld
# Ubuntu/Debian
sudo systemctl restart mysql

步驟 3:主庫創(chuàng)建復制專用用戶

登錄主庫 MySQL,創(chuàng)建僅用于主從復制的用戶(最小權限原則):

-- 登錄主庫
mysql -uroot -p

-- 創(chuàng)建用戶(MySQL 5.7/8.0 通用,指定從庫IP訪問)
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'Repl@123456';

-- 授權復制權限(僅需REPLICATION SLAVE)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';

-- MySQL 8.0 需刷新權限(5.7可選)
FLUSH PRIVILEGES;

步驟 4:查看主庫 binlog 狀態(tài)(關鍵?。?/h3>
-- 主庫執(zhí)行,記錄2個值:File、Position
SHOW MASTER STATUS;

輸出示例(后續(xù)從庫配置需要這兩個值):

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 | db_test      | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+

四、從庫配置(核心:同步主庫 binlog 到 relay log)

步驟 1:修改從庫配置文件

sudo nano /etc/my.cnf  # 同主庫路徑規(guī)則

添加/修改配置:

[mysqld]
# 1. 必須:唯一server-id(不能和主庫重復)
server-id = 11
# 2. 可選(默認開啟):指定relay log前綴
relay-log = mysql-relay-bin
# 3. 必須:關閉從庫binlog(如果從庫不做其他從庫的主庫)
# log-bin = mysql-bin  # 注釋掉或刪除
# 4. 可選:從庫只讀(避免直接修改從庫數(shù)據(jù))
read_only = 1
# 5. 可選:超級用戶也只讀(MySQL 5.7+)
super_read_only = 1

步驟 2:重啟從庫 MySQL

sudo systemctl restart mysqld  # 同主庫命令

步驟 3:配置從庫連接主庫(核心命令)

登錄從庫 MySQL,執(zhí)行以下命令(替換括號內的主庫信息):

-- 登錄從庫
mysql -uroot -p

-- 停止從庫復制(首次配置先停止)
STOP SLAVE;

-- 配置主從連接(關鍵!替換以下參數(shù))
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',  -- 主庫IP
MASTER_USER='repl',          -- 主庫創(chuàng)建的復制用戶
MASTER_PASSWORD='Repl@123456',  -- 復制用戶密碼
MASTER_LOG_FILE='mysql-bin.000001',  -- 主庫SHOW MASTER STATUS的File值
MASTER_LOG_POS=154;  -- 主庫SHOW MASTER STATUS的Position值

-- 啟動從庫復制
START SLAVE;

MySQL 8.0 注意:如果主庫默認認證插件是 caching_sha2_password,需在 CHANGE MASTER TO 后追加:

MASTER_AUTH_PLUGIN='mysql_native_password';

五、驗證主從復制(日志同步狀態(tài))

1. 從庫查看復制狀態(tài)(核心命令)

SHOW SLAVE STATUS\G;

重點看 2 個參數(shù)(均為 Yes 則正常):

  • Slave_IO_Running: Yes → 從庫 IO 線程正常(讀取主庫 binlog 到 relay log)
  • Slave_SQL_Running: Yes → 從庫 SQL 線程正常(執(zhí)行 relay log 中的操作)

2. 日志同步測試

  • 主庫創(chuàng)建數(shù)據(jù)庫/表/插入數(shù)據(jù):
    CREATE DATABASE test_db;
    USE test_db;
    CREATE TABLE t1 (id INT);
    INSERT INTO t1 VALUES (1);
    
  • 從庫查看是否同步:
    SHOW DATABASES;  -- 能看到test_db
    USE test_db;
    SELECT * FROM t1;  -- 能查到id=1
    

六、日志管理(日常維護)

1. 查看 binlog(主庫)

-- 查看所有binlog文件
SHOW BINARY LOGS;

-- 查看binlog內容(指定文件)
SHOW BINLOG EVENTS IN 'mysql-bin.000001';

2. 查看 relay log(從庫)

-- 查看relay log文件
SHOW RELAYLOG EVENTS IN 'mysql-relay-bin.000001';

3. 清理過期日志(避免磁盤滿)

-- 主庫清理binlog(保留7天)
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

-- 從庫清理relay log
PURGE RELAY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

七、常見日志相關故障排查

故障現(xiàn)象原因及解決方案
Slave_IO_Running: No1. 主庫IP/端口/賬號密碼錯誤;
2. 主庫binlog文件/位置錯誤;
3. 主從server-id重復;
4. 主庫3306端口未開放。
Slave_SQL_Running: No1. 從庫數(shù)據(jù)與主庫不一致;
2. relay log 損壞(刪除損壞的relay log,重新同步);
3. 從庫執(zhí)行了主庫沒有的操作。
binlog 不生成主庫未開啟 log-binserver-id 未設置;重啟主庫后檢查。
relay log 持續(xù)增長從庫 SQL 線程卡住,先修復 Slave_SQL_Running,再清理過期relay log。

到此這篇關于MySQL主從復制(日志核心)完整教程的文章就介紹到這了,更多相關MySQL主從復制日志核心內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL數(shù)據(jù)庫自動補全命令的三種方法

    MySQL數(shù)據(jù)庫自動補全命令的三種方法

    這篇文章主要介紹了MySQL數(shù)據(jù)庫自動補全命令的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • MySQL讀寫分離的項目時間實踐

    MySQL讀寫分離的項目時間實踐

    本文主要介紹了MySQL數(shù)據(jù)庫的讀寫分離技術,包括一主一從和雙主雙從兩種架構,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • Mysql中使用sql語句生成雪花算法Id

    Mysql中使用sql語句生成雪花算法Id

    雪花算法是一種生成全局唯一ID的分布式算法,本文主要介紹了Mysql中使用sql語句生成雪花算法Id,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • MySQL?8.0新特性之集合操作符INTERSECT和EXCEPT

    MySQL?8.0新特性之集合操作符INTERSECT和EXCEPT

    MySQL8.0.31版本開始支持了INTERSECT(交集)和EXCEPT(差集)運算,INTERSECT返回兩個結果集中都包含的行,EXCEPT返回左側結果集存在,右側不存在的行,這篇文章主要給大家介紹了關于MySQL?8.0新特性之集合操作符INTERSECT和EXCEPT的相關資料,需要的朋友可以參考下
    2022-10-10
  • linux系統(tǒng)ubuntu18.04安裝mysql 5.7

    linux系統(tǒng)ubuntu18.04安裝mysql 5.7

    這篇文章主要為大家詳細介紹了linux系統(tǒng)ubuntu18.04安裝mysql 5.7,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • mysql的innodb和myisam的區(qū)別及說明

    mysql的innodb和myisam的區(qū)別及說明

    這篇文章主要介紹了mysql的innodb和myisam的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Centos 6.5下安裝MySQL 5.6教程

    Centos 6.5下安裝MySQL 5.6教程

    這篇文章主要介紹了Centos 6.5下安裝MySQL 5.6教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • MySQL編碼不一致可能引起的一些問題

    MySQL編碼不一致可能引起的一些問題

    這篇文章主要給大家介紹了關于MySQL編碼不一致可能引起的一些問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • MySQL transaction事務安全示例講解

    MySQL transaction事務安全示例講解

    這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫事務安全transaction的示例講解教程,事務就是將一組操作封裝成一個執(zhí)行單元,要么一塊執(zhí)行成功,要么一塊失敗,不存在部分執(zhí)行成功的情況。事務保證了執(zhí)行的穩(wěn)定性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-06-06
  • mysql 增加修改字段類型及刪除字段類型

    mysql 增加修改字段類型及刪除字段類型

    本節(jié)主要介紹了mysql如何增加修改字段類型及刪除字段類型,需要的朋友可以參考下
    2014-07-07

最新評論

达尔| 浮山县| 江油市| 翁源县| 如皋市| 云梦县| 吉隆县| 栾城县| 罗田县| 新安县| 临武县| 万宁市| 开江县| 灵武市| 图片| 巨鹿县| 颍上县| 石台县| 龙游县| 蒙城县| 新津县| 广水市| 尉氏县| 五大连池市| 民和| 乌兰县| 庆阳市| 普安县| 襄樊市| 东明县| 法库县| 二连浩特市| 云浮市| 淮安市| 揭东县| 石城县| 张家口市| 本溪市| 扶余县| 铅山县| 信阳市|