MySQL複製從庫建立-xtracebackup方式

来源:https://www.cnblogs.com/shlc/archive/2019/10/18/11701019.html
-Advertisement-
Play Games

Percona XtraBackup工具提供了一種在系統運行時執行MySQL數據熱備份的方法。 Percona XtraBackup在事務系統上執行聯機非阻塞,緊密壓縮,高度安全的完整備份,因此在計劃的維護時段內,應用程式仍保持完全可用。 環境準備: master:192.168.0.106:330 ...


Percona XtraBackup工具提供了一種在系統運行時執行MySQL數據熱備份的方法。

Percona XtraBackup在事務系統上執行聯機非阻塞,緊密壓縮,高度安全的完整備份,因此在計劃的維護時段內,應用程式仍保持完全可用。

環境準備:

master:192.168.0.106:3306 
slave:192.168.0.105:3306

datadir: /data/mysql/mysql3306/data

cnfpath: /data/mysql/mysql3306/my3306.cnf

XtraBackup 安裝,兩台機器都安裝:

下載地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

TheMaster$ wget https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0-7/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.7-1.el7.x86_64.rpm
TheMaster$ yum install -y percona-xtrabackup-80-8.0.7-1.el7.x86_64.rpm

1、在Master製作一個備份

TheMaster$ mkdir xtrabackup_backupfiles
TheMaster$ xtrabackup --defaults-file=/data/mysql/mysql3306/my3306.cnf -S /tmp/mysql3306.sock -uroot -p'' --backup --target-dir=./xtrabackup_backupfiles
...
completed OK!

為了讓快照是一致的:需要prepare備份數據:

TheMaster$ xtrabackup -S /tmp/mysql3306.sock -uroot -p --prepare --target-dir=./xtrabackup_backupfiles/
...
completed OK!

undo log目錄需要處理下,預設會解壓到xtrabackup_backupfiles目錄下,在my3306.cnf中定義在/data/mysql/mysql3306/data/undolog/下,所以:

TheMaster$ cd xtrabackup_backupfiles && mkdir undolog && mv undo_* undolog/

2、複製備份數據到Slave上

使用rsync或scp將數據從Master複製到Slave。如果直接將數據同步到slave的數據目錄,建議在這之前先停止mysqld。

TheMaster$ rsync -avpP -e ssh ./xtrabackup_backupfiles/ 192.168.0.105:/data/mysql/mysql3306/data/

複製數據前,您可以備份原始或先前安裝的MySQL datadir註意:在移動mysqld的內容或將快照移動到其datadir之前,請確保mysqld已關閉。):

TheSlave$ mv /data/mysql/mysql3306/data /data/mysql/mysql3306/data_bak

複製數據後,確保MySQL有許可權訪問

TheSlave$ chown -R mysql:mysql /data/mysql/mysql3306/data

3、創建Master上配置複製賬號

TheMaster|mysql> GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'192.168.0.%' IDENTIFIED BY 'repl';

測試連接

TheSlave$ mysql --host=192.168.0.106 --user=repl --password=repl
mysql> SHOW GRANTS;

4、配置Slave上的MySQL伺服器

首先將my3306.cnf從TheMaster複製到TheSlave:

TheSlave$ scp [email protected]:/data/mysql/mysql3306/my3306.cnf /data/mysql/mysql3306/
TheSlave$ chown -R mysql:mysql /data/mysql/mysql3306/data/my3306.cnf

修改TheSlave上的my3306.cnf:

server-id=1053306  # 建議ip最後一位+埠號

啟動TheSlave 上的 mysqld

TheSlave$ /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &

觀察error.log是否有錯誤

TheSlave$ more /data/mysql/mysql3306/data/error.log 

5、啟動複製

TheSlave$ cat /data/mysql/mysql3306/data/xtrabackup_binlog_info
mysql-bin.000012        195     e8f74dde-ed8e-11e9-8ebb-000c29f5c092:1-3

執行CHANGE MASTER語句在MySQL命令行:

TheSlave|mysql> CHANGE MASTER TO
                MASTER_HOST='192.168.0.106',
                MASTER_USER='repl',
                MASTER_PASSWORD='repl',
                MASTER_AUTO_POSITION=1;

開始複製:

TheSlave|mysql> START SLAVE;

6、檢查

TheSlave|mysql> SHOW SLAVE STATUS \G
         ...
         Slave_IO_Running: Yes
         Slave_SQL_Running: Yes
         ...
         Seconds_Behind_Master: 0
         ...

看到IO和SQL線程處於運行中 (Yes)表示覆制正常。

root@localhost 22:42:41 [(none)]> show slave status\G
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    16
Current database: *** NONE ***

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.106
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000016
          Read_Master_Log_Pos: 383
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 557
        Relay_Master_Log_File: mysql-bin.000016
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 383
              Relay_Log_Space: 769
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1063306
                  Master_UUID: e8f74dde-ed8e-11e9-8ebb-000c29f5c092
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: e8f74dde-ed8e-11e9-8ebb-000c29f5c092:4
            Executed_Gtid_Set: e8f74dde-ed8e-11e9-8ebb-000c29f5c092:1-4
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0
            Network_Namespace: 
1 row in set (0.00 sec)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當我按照這種情景使用時,出現了這種情況: 考慮著 gnome 桌面正在運行,可能是gnome-terminal 使用了工廠模式進行創建;查找gnome-terminal 文檔,有如下解決方案: 使用上述命令,即可使用轉發訪問 gnome-terminal 其實為了方便 還是建議使用 terminat ...
  • 友善 friendlycore 掛載 overlayfs 過程:起點在 /boot 目錄 的 ramdisk.img// 掛載真正的boot到目錄下mount /dev/mmcblk0p1 /boot// 可以看到文件 /boot/ramdisk.img// copy出來單獨分析:cp ramdis ...
  • **目錄**一、環境搭建二、相關配置(部分)三、調試運行四、測試源碼參考五、常見錯誤六、擴展(CCGI,SQLite) # 一、環境搭建操作系統:Ubuntu12.04 LTSboa下載地址(但是我找不到...): http://www.boa.org/我是其他網站找到的資源,但是忘了網址了,所以我 ...
  • 描述 enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字元串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 迴圈當中。 Python 2.3. 以上版本可用,2.6 添加 start 參數。 語法 以下是 enumerate() 方法的語法: 參數 sequen ...
  • 最近需要安裝 numpy 的舊版本,發現不知道如何查看可以安裝舊版本,解決方法在此進行記錄: 然後找到你對應的版本進行安裝就可以了; 保持更新,更多精彩內容,請關註 cnblogs.com/xuyaowen 參考鏈接: https://stackoverflow.com/questions/4888 ...
  • 1、磁碟存儲 磁碟分區主流2種: MBR最大分區不超過2T,1塊硬碟最多4個主分區,也可以3(主)+1(擴展下N個邏輯分區);GPT支持128個分區,全是主分區; 2、創建磁碟: 查看磁碟分區表信息 [root@localhost ~]#hexdump -C -n 512 /dev/sdb 0000 ...
  • 一開始,心情是沉痛的,截圖如下: 折騰一番後,解決方案如下: 首先確保 linux服務上mysql 的3306埠是對外開放的 切換到目錄: /etc/sysconfig 下,編輯 iptables,把這個拷貝進去“-A INPUT -p tcp -m tcp --dport 3306 -j ACC ...
  • Mysql存儲過程 存儲過程是保存在Mysql上的一個別名(就是一堆SQL語句),使用別名就可以查到結果不用再去寫SQL語句。存儲過程用於替代程式員寫SQL語句。 創建存儲過程 當我們寫完這段代碼並執行,再去調用p1()就可以直接執行裡面的查詢 執行結果: 這樣的好處能讓功能代碼都整合到一塊且不用再 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...