數據庫定時備份及恢復(mydumper)
mydumper備份數據庫
安裝命令:
`yum -y install https://github.com/maxbube/mydumper/releases/download/v0.9.3/mydumper-0.9.3-41.el7.x86_64.rpm`
地址:https://github.com/maxbube/mydumper/releases,請根據自己的系統類型選擇下載版本。
yum -y install https://github.com/maxbube/mydumper/releases/download/v0.9.3/mydumper-0.9.3-41.el7.x86_64.rpm
備份腳本.sh
echo 'hello world'
echo '開始備份數據庫'
DATE=$(date +%Y%m%d)
echo DATE
nohup mydumper -u root -p 密碼 -P 3306 -h 192.168.1.xxx -o /home/data/eplusdb/backup_eplus$(date +%Y%m%d) -v 3 -t 64 >/home/data/eplusdb/log/nohup$(date +%Y%m%d).log 2>&1
nohup tar -zcvf /home/data/eplusdb/backup_eplus$(date +%Y%m%d).tar.gz /home/data/eplusdb/backup_eplus$(date +%Y%m%d)
指定數據庫排除數據庫
新版本里已經不能備份binlog了,沒有-b參數。這里說明下備份指定數據庫的方法:--regex 正則匹配
#指定備份數據庫:備份abc、bcd、cde
mydumper -u backup -p 123456 -h 192.168.180.13 -P 3306 -t 3 -c -l 3600 -s 10000000 -e --regex 'abc|bcd|cde' -o bbb/
#指定不備份的數據庫:不備份abc、mysql、test,備份其他數據庫
mydumper -u backup -p 123456 -h 192.168.180.13 -P 3306 -t 3 -c -l 3600 -s 10000000 -e --regex '^(?!(abc|mysql|test))' -o bbb/
3)還原,表存在先刪除(-o):這里需要注意,使用該參數,備份目錄里面需要有表結構的備份文件。
./myloader -u root -p 123456 -h 192.168.200.25 -P 3306 -o -B test -d /home/zhoujy/bak/
刪除備份數據腳本.sh
echo '刪除七天之前的備份文件'
echo '開始刪除'
echo rm -rf /home/data/erpdb/backup$(date +%Y%m%d -d -7day).tar.gz
rm -rf /home/data/erpdb/backup$(date +%Y%m%d -d -7day).tar.gz
echo rm -rf /home/data/eplusdb/backup_eplus$(date +%Y%m%d -d -7day).tar.gz
rm -rf /home/data/eplusdb/backup_eplus$(date +%Y%m%d -d -7day).tar.gz
echo '刪除成功'
定時任務crond
每天5點、每天24點
0 5 * * * /home/software/backup/backup_eplus.sh
#0 0 * * * /home/software/backup/backup.sh
0 0 * * * /home/software/backup/delBackup.sh
腳本執行權限設置
chmod +x /home/data/dumper/backup_eplus.sh
報錯信息
-l, --long-query-guard 設置長查詢時間,默認60秒,超過該時間則會報錯:There are queries in PROCESSLIST running longer than 60s, aborting dump
-K, --kill-long-queries kill掉長時間執行的查詢,備份報錯:Lock wait timeout exceeded; try restarting transaction
-B, --database 要備份的數據庫,不指定則備份所有庫
-T, --tables-list 需要備份的表,名字用逗號隔開
-o, --outputdir 備份文件輸出的目錄
-s, --statement-size 生成的insert語句的字節數,默認1000000
-r, --rows 將表按行分塊時,指定的塊行數,指定這個選項會關閉 --chunk-filesize
-F, --chunk-filesize 將表按大小分塊時,指定的塊大小,單位是 MB
-c, --compress 壓縮輸出文件
-e, --build-empty-files 如果表數據是空,還是產生一個空文件(默認無數據則只有表結構文件)
-x, --regex 是同正則表達式匹配 'db.table'
-i, --ignore-engines 忽略的存儲引擎,用都厚分割
-m, --no-schemas 不備份表結構
-k, --no-locks 不使用臨時共享只讀鎖,使用這個選項會造成數據不一致
--less-locking 減少對InnoDB表的鎖施加時間(這種模式的機制下文詳解)
-l, --long-query-guard 設定阻塞備份的長查詢超時時間,單位是秒,默認是60秒(超時后默認mydumper將會退出)
--kill-long-queries 殺掉長查詢 (不退出)
-b, --binlogs 導出binlog---已被XX
-D, --daemon 啟用守護進程模式,守護進程模式以某個間隔不間斷對數據庫進行備份
-I, --snapshot-interval dump快照間隔時間,默認60s,需要在daemon模式下
-L, --logfile 使用的日志文件名(mydumper所產生的日志), 默認使用標准輸出
--tz-utc 跨時區是使用的選項,不解釋了
--skip-tz-utc 同上
--use-savepoints 使用savepoints來減少采集metadata所造成的鎖時間,需要 SUPER 權限
--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist
-h, --host 連接的主機名
-u, --user 備份所使用的用戶
-p, --password 密碼
-P, --port 端口
-S, --socket 使用socket通信時的socket文件
-t, --threads 開啟的備份線程數,默認是4
-C, --compress-protocol 壓縮與mysql通信的數據
-V, --version 顯示版本號
-v, --verbose 輸出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默認為 2
數據庫恢復
命令
恢復備份文件中的所有:
myloader -u rant -p 123456 -P 3306 -h 172.16.1.xx -d /home/data/eplusdb/backup_eplus202112xx
恢復備份文件中的指定庫:
myloader -u rant -p 123456 -P 3306 -h 172.16.1.xx -d /home/data/eplusdb/backup_eplus202112xx
常見問題
>Error connection to database: Access denied for user 'ts'@'eplus-xxl' (using password: YES)
--當前主機連不到要恢復的mysql數據庫
解決:
create user rant@'172.16.1.243' IDENTIFIED by '123456';
grant all privileges on *.* to rant@'172.16.1.243' ;
>Error connection to database: Authentication plugin 'caching_sha2_password' cannot be loaded:、、、、、、
--需要修改當前密碼驗證類型
解決:
ALTER USER rant@'172.16.1.243' identified WITH mysql_native_password BY '123456';
--如果執行命令出錯,提示權限不對
grant system_user on *.* to 'root';
也可能通過navicat客戶端新建用戶
相關鏈接(問題解決):
https://blog.csdn.net/weixin_42348049/article/details/105153303
https://blog.csdn.net/weixin_42330311/article/details/104728396
https://blog.csdn.net/qq_32486599/article/details/73603243