Linux下Mysql定時自動備份
一、檢視記憶體選擇系統盤防止記憶體不足備份失敗
[root@iZ7ns71hl9rkcwZ scripts]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 79G 6.2G 69G 9% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 448K 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
tmpfs 3.1G 0 3.1G 0% /run/user/0
二、建立檔案儲存目錄
mkdir -p /data/mysqlbak/data
mkdir -p /data/mysqlbak/scripts
mkdir -p /data/mysqlbak/logs
三、建立自動備份指令碼執行檔案
cd /data/mysqlbak/scripts
vi backup.sh
#!/bin/bash
#備份目錄
BACKUP_ROOT=/data/mysqlbak
BACKUP_FILEDIR=$BACKUP_ROOT/data
#當前日期
DATE=$(date +%Y%m%d)
######備份######
#查詢所有資料庫
#-uroot -p123456表示使用root賬號執行命令,且root賬號的密碼為:123456
DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#迴圈資料庫進行備份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
done
echo "done"
四、賦予指令碼執行許可權
chmod 777 backup.sh
五、將備份操作加入到定時任務中(每天凌晨2點執行)
crontab -e
00 2 * * * /data/mysqlbak/scripts/backup.sh > data/mysqlbak/logs/backup.log 2>&1
六、建立自動刪除備份指令碼檔案(防止備份檔案過大佔用記憶體,7天刪除一次)
vi backup_clean.sh
#!/bin/bash
echo ----------CLEAN BEGIN----------
find /data/mysqlbak/data -mtime +7 -name "*.gz" -exec rm -rf {} \;
echo ----------CLEAN COMPLETE----------
七、賦予刪除指令碼執行許可權
chmod 777 backup_clean.sh
八、將刪除操作加入到定時任務中(每天凌晨1點執行)
00 1 * * * /data/mysqlbak/scripts/backup_clean.sh > /data/mysqlbak/logs/backup_full_clean.log 2>&1
九、檢視定時任務
crontab -l
檢視結果:
[root@iZ7ns71hl9rkcwZ scripts]# crontab -l
00 2 * * * /data/mysqlbak/scripts/backup.sh > data/mysqlbak/logs/backup.log 2>&1
00 1 * * * /data/mysqlbak/scripts/backup_clean.sh > /data/mysqlbak/logs/backup_full_clean.log 2>&1
十一、或者備份至另外一臺伺服器,避免資料庫和指令碼一起丟失
1、首先伺服器需要安裝export,yum安裝:
yum install expect
2、修改上面的指令碼檔案
#!/bin/bash
#備份目錄
BACKUP_ROOT=/data/mysqlbak
BACKUP_FILEDIR=$BACKUP_ROOT/data
#當前日期
DATE=$(date +%Y%m%d)
######備份######
#查詢所有資料庫
#-uroot -p123456表示使用root賬號執行命令,且root賬號的密碼為:123456
DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#迴圈資料庫進行備份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo ----------scp 226 begin----------
expect -c "
spawn scp -r /data/mysqlbak/data/${db}_$DATE.sql.gz root@xxx.xxx.xxx.226:/data/mysqlbak/data225/
expect {
\"*assword\" {set timeout 300; send \"此處是scp的密碼\r\"; exp_continue;}
\"yes/no\" {send \"yes\r\";}
}
expect eof"
echo ----------scp 226 end----------
echo
done
echo "done"
或者原始碼安裝,參考 https://www.cnblogs.com/operationhome/p/9154055.html
相關文章
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- Linux自動備份MySQLLinuxMySql
- xtrabackup備份mysql以及建立自動定時任務MySql
- MySQL 定時備份MySql
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- MySQL 定時增量備份MySql
- MYSQL定時備份(一)MySql
- windows/linux自動備份mysql並刪除7天前的備份WindowsLinuxMySql
- 定時備份MySQL資料庫MySql資料庫
- gitlab自動定時備份檔案,備份失敗傳送郵件Gitlab
- MYSQL定時任務-定時清除備份資料MySql
- Mysql資料庫自動備份MySql資料庫
- Mysql定時備份資料指令碼MySql指令碼
- 實戰-MySQL定時增量備份(2)MySql
- 資料庫定時備份linux篇資料庫Linux
- 用友U8設定了自動備份,備份失效
- 實戰-MySQL定時全量備份(1)MySql
- mysql每日備份for LinuxMySqlLinux
- Linux實現定時備份MySQL資料庫並刪除30天前的備份檔案LinuxMySql資料庫
- MySQL自動備份指令碼30天自動刪除MySql指令碼
- MySQL 自動備份併傳送到郵箱MySql
- MySQL儲存安全(TDE加密、自動備份)MySql加密
- 定時備份 MySQL 並上傳到七牛MySql
- docker mysql8.0 啟動,掛資料卷,定時備份,恢復~DockerMySql
- centos7定時備份mysql傳送郵件CentOSMySql
- 【乾貨】MySQL 資料庫定時備份總結MySql資料庫
- MySQL 資料庫定時備份的幾種方式MySql資料庫
- Linux作業系統定時備份檔案方法Linux作業系統
- Linux下MySQL資料庫的備份與恢復LinuxMySql資料庫
- Linux配置JavaEE環境 Linux中安裝JDK、Tomcat、mysql 設定Tomcat自啟動、設定mysql自啟動LinuxJavaJDKTomcatMySql
- 自動備份指令碼指令碼
- Linux mysql 備份和匯入命令LinuxMySql
- mysql容器的定時備份指令碼,有二種方法,備份好後打包傳送到遠端備份主機MySql指令碼
- MySQL資料庫定時備份的幾種實現方法MySql資料庫
- CentOS7.X 掛載磁碟 與Mysql 自動備份CentOSMySql
- 8種手動和自動備份MySQL資料庫的方法MySql資料庫
- GitLab的自動備份、清理備份與恢復Gitlab