1.所有數據庫一起備份
數據庫地址: 192.168.1.50
異地服務器地址: 192.168.1.202
192.168.1.50操作:
生成ssh秘鑰對
ssh-keygen
在192.168.1.202操作,確保192.168.1.50可以免密登錄1.202
scp root@192.168.1.50:/root/.ssh/id_rsa.pub /root/.ssh/
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
rm -rf /root/.ssh/id_rsa.pub
192.168.1.50操作:
確保免密連接沒問題
ssh 192.168.1.202
exit
2.備份腳本
mkdir -p /bak/mysqlbak
cd /bak/mysqlbak
vim bakmysql.sh
#!/bin/bash
#name:bakmysql.sh
#This is a mysql backup
#本地存放備份數據庫目錄
backupdir=/bak/mysqlbak
#如果文件夾不存在,創建文件夾
if [ ! -d $backupdir ]; then
mkdir $backupdir
fi
#定義時間
time=` date +%Y%m%d%H `
#備份所有數據庫到本地
/usr/local/mysql/bin/mysqldump -uroot -pGZml136 --opt --all-databases > $backupdir/$time-all.sql
#備份單個數據庫
#mysqldump -uroot –pGZml136 --databases auth > $backupdir/$time-auth.sql
#只保留7天前的數據
find $backupdir -name "name_*.sql" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
#把數據備份到異機
scp -r $backupdir root@192.168.1.202:/opt
chmod +x bakmysql.sh
./bakmysql.sh
3.登錄數據庫刪除一個測試數據庫
mysql -uroot –p
mysql> show databases;
里面是有表有數據的
刪除 atuh 測試數據庫
4.還原數據庫
還原所有庫
mysql –uroot –pGZml136 < /bak/mysqlbak/2021122315-all.sql
還原單個庫
mysql –uroot –pGZml136 auth < /bak/mysqlbak/2021122315-auth.sql
5.定時備份
vim /etc/crontab
30 2 * * * root /bak/mysqlbak/bakmysql.sh
或者
crontab -e
30 2 * * * /usr/bin/sh /bak/mysqlbak/bakmysql.sh > /dev/null 2>&1