close

承接上文k8s自動化運維三

代碼備份

上文談到了通過cron定時拉取代碼的方式實現代碼備份,這裡提供出比較完善的方式:獲取指定項目所有的分支以及每個分支最新的代碼

# 進入到具體一個項目目錄下cd "$baiwang/xibaoxiao-h5"# 拉取每個分支的最新代碼git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; git checkout ${remote#origin/};git fetch;git pull;sleep 1s;done

git branch是獲取所有的分支

循環遍歷每個分支並切換到當前分支 git checkout

拉取最新的代碼 git pull

數據庫的備份機制全量備份

腳本源碼

https://gitee.com/pingfanrenbiji/MySQL_backup/blob/master/backup.sh

通過mysqldump命令做數據庫的全量備份

--single-transaction

--single-transaction參數的作用,設置事務的隔離級別為可重複讀,即REPEATABLE READ,這樣能保證在一個事務中所有相同的查詢讀取到同樣的數據,也就大概保證了在dump期間,如果其他innodb引擎的線程修改了表的數據並提交,對該dump線程的數據並無影響,在這期間不會鎖表

--flush-logs

關閉當前的二進制日誌文件並創建一個新文件,新的二進制日誌文件的名字在當前的二進制文件的編號上加1。

--set-gtid-purged=OFF

在原數據庫導出時加了--set-gtid-purged=OFF,導入新數據庫時,才會觸發記錄到新數據庫的binlog日誌。如果不加,則新數據庫不記錄binlog日誌。所以在我們做主從用了gtid時,用mysqldump備份時就要加--set-gtid-purged=OFF,否則你在主上導入恢復了數據,主沒有了binlog日誌,則主庫數據不會被從庫同步

--events 事件

--triggers 觸發器

--routines 導出存儲過程以及自定義函數

--master-data=2

A. =1和=2的區別很明顯,只是自動執行和手工執行的區別  =1時,直接導入備份文件,start slave不需要指定file和position  

=2時,file和position是被注釋掉的,需要手動指定file和position-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin2.000001', MASTER_LOG_POS=107;

B. --master-data用於在master端dump數據,用於建立slave --dump-slave用戶在slave端dump數據,建立新的slave,至少是第2個slave,也就是已經有A-->B,現在從B上導出數據建立A-->C的複製增量備份(備份binlog文件)

腳本源碼

https://gitee.com/pingfanrenbiji/MySQL_backup/blob/master/daily.sh

binlog概述

binlog日誌也稱作二進制日誌,是MySQL服務日誌文件的一種。記錄除查詢之外的所有SQL命令(即show、select、desc等查詢命令)。可用於數據的備份和恢復。配置mysql主從同步的必要條件。

查看是否開啟了binlog

show variables like 'log_bin';

如果顯示OFF則代表未開啟。在MySQL8以前,這個功能是默認關閉的,需要手動開啟

vim /etc/mysql/my.cnf

[mysqld]#保存日誌的位置,實際生成的日誌會在後面添加對應的標誌log-bin = /var/lib/mysql/mysql-bin#日誌保存天數expire-logs-days = 14#日誌大小max-binlog-size = 500M#用於同步時區分mysql實例,唯一,5.7以上版本必須填寫server-id = 1#日誌格式,MIXED,ROW,STATEMENTbinlog_format ='MIXED'

重啟mysql,再次運行show variables like 'log_bin';

在mysql配置文件中定義好數據目錄的位置

在數據目錄中可以看到binlog二進制文件

binlog.index 索引文件

binlog.000031 第31個二進制文件

查看當前正在使用的二進制文件

show master status;

生成新的日誌文件

通過重啟數據庫服務

手動執行 flush logs; 可以生成新的日誌文件

刪除指定編號之前的binlog日誌文件

purge master logs to "binlog文件名";

刪除所有binlog日誌,重建新日誌

reset master;

查看日誌文件內容

mysqlbinlog 目錄/binlog日誌文件名;

插入之前的偏移量是156,插入2條數據之後的偏移量是708。查看日誌文件內容

查看當前日誌格式

當前日誌的格式為ROW行模式,如果想讓日誌內容顯示的是sql命令,就將日誌格式修改為mixed混合模式,再查看日誌內容就可以看到具體的執行操作了

還可以指定範圍進行數據恢復

mysqlbinlog --start-position=325 --stop-position=790 binlog.000001 | mysql -uroot -p123456-- 恢復起始偏移量為325,結束偏移量為790範圍內的數據

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()