<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      1.創建my-master.conf

      [mysqld]
      # 基礎配置
      server-id = 1 # 唯一標識主庫
      port = 3306
      bind-address = 0.0.0.0 # 允許所有IP連接

      # 二進制日志配置(主從復制核心)
      log-bin = mysql-bin # 啟用二進制日志
      binlog-format = ROW # 行模式日志(推薦)
      expire_logs_days = 7 # 日志保留7天
      max_binlog_size = 100M # 單個日志文件最大100MB

      # GTID 配置(簡化復制管理)
      gtid-mode = ON
      enforce-gtid-consistency = ON

      # 數據持久化
      innodb_flush_log_at_trx_commit = 1
      sync_binlog = 1

      # 其他優化
      character-set-server = utf8mb4
      collation-server = utf8mb4_unicode_ci

      
      

      2.創建my-slave.conf

      [mysqld]
      # 基礎配置
      server-id = 2 # 唯一標識從庫(必須不同)
      port = 3306
      bind-address = 0.0.0.0 # 允許所有IP連接
      read_only = ON # 從庫只讀(防止誤寫)

      # 二進制日志配置(可選,用于級聯復制)
      log-bin = mysql-bin
      binlog-format = ROW

      # GTID 配置
      gtid-mode = ON
      enforce-gtid-consistency = ON

      # 復制控制(啟動時不自動開啟復制)
      skip-slave-start = ON

      # 數據持久化
      innodb_flush_log_at_trx_commit = 1
      sync_binlog = 1

      # 其他優化
      character-set-server = utf8mb4
      collation-server = utf8mb4_unicode_ci

       

       

      (2) 主庫配置參數說明

      參數作用
      --server-id=1 唯一標識主庫(從庫需不同)
      --log-bin=mysql-bin 啟用二進制日志(主從同步依賴此日志)
      --binlog-format=ROW 設置二進制日志格式為行模式(推薦)
      --gtid-mode=ON 啟用全局事務標識符(GTID)
      --enforce-gtid-consistency=ON 強制 GTID 一致性

       

       

       

      構建docker-compose.yml

      version: '3.8'
      
      services:
        mysql-master:
          image: mysql:8.0
          container_name: mysql-master
          environment:
            MYSQL_ROOT_PASSWORD: rootpassword
          volumes:
            - ./my-master.conf:/etc/mysql/conf.d/master.cnf
            - mysql-master-data:/var/lib/mysql
          ports:
            - "3306:3306"
          command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
      
        mysql-slave:
          image: mysql:8.0
          container_name: mysql-slave
          environment:
            MYSQL_ROOT_PASSWORD: rootpassword
          volumes:
            - ./my-slave.conf:/etc/mysql/conf.d/slave.cnf
            - mysql-slave-data:/var/lib/mysql
          ports:
            - "3307:3306"
          command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
      
      volumes:
        mysql-master-data:
        mysql-slave-data:

       

       

      3. 配置主庫并創建復制賬戶

      (1) 進入主庫容器

       
      docker exec -it mysql-master mysql -uroot -prootpassword

      (2) 創建復制賬戶

      CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl_password';
      GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
      FLUSH PRIVILEGES;

       

      (3) 查看主庫狀態

      SHOW MASTER STATUS\G

       

      5. 配置從庫同步主庫

       

      (1) 進入從庫容器

       
       
      docker exec -it mysql-slave mysql -uroot -prootpassword

       

       

      (2) 配置復制鏈路

      CHANGE MASTER TO
        MASTER_HOST='mysql-master',
        MASTER_USER='repl',
        MASTER_PASSWORD='repl_password',
        MASTER_AUTO_POSITION=1;

      (3) 啟動復制

      START SLAVE;

      (4) 查看從庫狀態

      SHOW SLAVE STATUS\G

      6. 驗證主從同步

      (1) 在主庫創建測試數據

      CREATE DATABASE test;
      USE test;
      CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20));
      INSERT INTO users (name) VALUES ('Alice');

      (2) 在從庫檢查數據

       
       
      SELECT * FROM test.users;

      若輸出 Alice 表示同步成功。


      7. 關鍵注意事項

      • 數據一致性:主從配置前確保主庫無寫入操作,否則需先同步數據。

      • 網絡互通:主從容器必須處于同一 Docker 網絡(mysql-replication)。

      • 防火墻設置:確保容器間 3306 端口開放。

      • GTID 優勢:使用 GTID 模式可簡化故障轉移和主從切換。

       

      8. 擴展:多從庫配置

      若需添加更多從庫,重復步驟 4 和 5,注意修改 server-id

      docker run -d \
        --name mysql-slave2 \
        --network mysql-replication \
        -e MYSQL_ROOT_PASSWORD=root_password \
        -v $(pwd)/slave2-data:/var/lib/mysql \
        -p 3308:3306 \
        mysql:8.0 \
        --server-id=3 \
        ...

      通過以上步驟,你已成功搭建 MySQL 主從復制環境。主庫寫入的數據會自動同步到從庫,適用于讀寫分離、負載均衡和高可用場景。

       

      在 MySQL 中,GTID(Global Transaction Identifier,全局事務標識符) 是一種用于唯一標識事務的機制,它簡化了主從復制的管理和故障恢復。--enforce-gtid-consistency=ON 的作用是強制確保事務在 GTID 模式下的兼容性和一致性。以下是詳細解釋:


      1. GTID 是什么?

      GTID 是 MySQL 主從復制中用于唯一標識事務的全局唯一標識符。
      它的格式為:
      GTID = server_uuid:transaction_id

      • server_uuid:MySQL 實例的唯一標識符(自動生成)。

      • transaction_id:事務在該實例中的遞增序號。

      例如:3E11FA47-71CA-11E1-9E33-C80AA9429562:23


      2. GTID 的作用

      • 全局唯一性:每個事務的 GTID 在集群中唯一,避免主從數據沖突。

      • 簡化復制管理:通過 GTID 而非二進制日志文件名和位置(binlog file + position)定位事務,簡化主從切換和故障恢復。

      • 一致性保障:確保事務在主從節點上按相同順序執行。


      3. --enforce-gtid-consistency=ON 的作用

      該參數強制 MySQL 在 GTID 模式下 僅執行與 GTID 兼容的事務,防止因某些操作(如非事務性語句)導致主從數據不一致。具體行為如下:

      (1) 禁止不安全的 SQL 語句

      在 GTID 模式下,以下操作會被禁止(除非顯式啟用 gtid_next):

      • 非事務性存儲引擎的操作(如 MyISAM)。

      • 跨數據庫的 DDL 語句(如 CREATE TABLE ... SELECT)。

      • 隱式提交事務的語句(如 CREATE TEMPORARY TABLE)。

      (2) 報錯示例

      若執行以下語句(不兼容 GTID):

      sql
      復制
      CREATE TABLE my_table SELECT * FROM other_table;

      MySQL 會拋出錯誤:

       
      復制
      Error 1786: Statement violates GTID consistency.

      4. 為什么需要強制 GTID 一致性?

      • 數據一致性:確保所有事務都能被正確追蹤和復制。

      • 避免隱式風險:防止開發者意外使用與 GTID 不兼容的語句,導致復制中斷或數據不一致。

      • 簡化運維:強制規范事務行為,降低主從同步的維護成本。


      5. 如何查看 GTID?

      (1) 查看當前 GTID

      sql
      復制
      SHOW MASTER STATUS;

      輸出示例:

       
      復制
      +------------------+----------+--------------+------------------+----------------------------------------+
      | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                      |
      +------------------+----------+--------------+------------------+----------------------------------------+
      | mysql-bin.000003 |      187 |              |                  | server_uuid:1-10                      |
      +------------------+----------+--------------+------------------+----------------------------------------+

      (2) 查看已執行的事務 GTID

      sql
      復制
      SELECT @@GLOBAL.gtid_executed;

      6. 實際應用場景

      (1) 主從切換

      當主庫故障時,只需根據從庫的 Executed_Gtid_Set 選擇最新的從庫提升為主庫,無需關心二進制日志位置。

      (2) 數據恢復

      通過 GTID 可以精準定位需要重放的事務,避免重復執行或遺漏。


      7. 注意事項

      • 存儲引擎:建議使用 InnoDB 等事務性存儲引擎。

      • 版本兼容性:GTID 在 MySQL 5.6+ 中支持,但不同版本行為可能略有差異。

      • 參數依賴:啟用 GTID 需同時設置 gtid-mode=ON 和 enforce-gtid-consistency=ON


      總結

      • GTID 是全局事務的唯一標識符,用于簡化復制和故障恢復。

      • --enforce-gtid-consistency=ON 確保所有操作與 GTID 兼容,避免潛在的數據不一致風險。

      • 在 GTID 模式下,需遵循事務性操作規范,避免使用不兼容的 SQL 語句。

       

       

       

       

      posted on 2025-03-22 19:20  輪滑少年  閱讀(37)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲精品久久无码av片软件| 欧美大胆老熟妇乱子伦视频 | 欧美日韩国产亚洲沙发| av性色av久久无码ai换脸| 四虎影视4hu4虎成人| 日本韩国日韩少妇熟女少妇| 久久精品国产再热青青青| 四虎成人精品无码永久在线 | 精品国产成人国产在线视| 午夜一区二区三区视频| 亚洲欧美自偷自拍视频图片| 一区二区三区成人| 视频一区二区三区自拍偷拍| 亚洲一二三区精品与老人| 精品亚洲没码中文字幕| 国产欧美va欧美va在线| 亚洲欧美综合精品成人网站| 亚洲老熟女乱女一区二区| 欧美日本在线一区二区三区| 国产日韩精品欧美一区灰| 国产精品午夜福利91| 久久青青草原亚洲AV无码麻豆| 羞羞影院午夜男女爽爽免费视频 | 日韩不卡一区二区三区四区| 亚洲欧美中文日韩V在线观看| 汶上县| 免费无码AV一区二区波多野结衣| 午夜免费无码福利视频麻豆| 欧美精品18videosex性欧美| 国产福利姬喷水福利在线观看| 国产不卡一区不卡二区| а天堂中文最新一区二区三区| 普格县| 无码伊人久久大杳蕉中文无码| 伊人色综合一区二区三区| 国产二区三区不卡免费| 国产裸体永久免费无遮挡| 成人午夜污一区二区三区| 国产综合久久99久久| 四虎永久精品免费视频| 少妇高潮毛片免费看|