最近要寫mysql資料庫備份,把自己所得記錄下來,防止以後忘了,哈哈哈哈
(注 這是遠端備份,備份到指定伺服器)
使用環境
- centos 7
- mysql 5.7
-
遠端連接配接主機免密碼登入 ,
在運作伺服器上執行 ssh-keygen
一路回車,還是不要添加密碼的好,這時候可以注意一下公鑰,秘鑰儲存位置
把公鑰放到備份的伺服器上 ssh-copy-id [email protected]
(注意:這兩台linux必須能ping通)
msyql自帶的mysqldump和xtrabackup工具,兩種方法備份,今天先介紹一下mysqldump
一.使用mysqldump備份
一般使用備份,都是備份到遠端伺服器上,别問我為什麼,備份到本地,伺服器崩了,一切都瞎了啊,哈哈哈,是以一下是備份到遠端,但是可以在本地測試啊!
在運作伺服器上執行:
1.建立腳本,并添加内容 ps一步到位,腳本位置,自己意願
cd /home (我的是在home目錄下)
vim mysql_data.sh
2.添加下面的内容
#!/bin/sh
DUMP=/usr/bin/mysqldump #mysqldump的路徑,不知道的可以全局搜尋一下 find / -name mysqldump
OUT_DIR=/home/longlong #備份檔案的目錄,沒有提前建好
DB_NAME=database #要備份的資料庫名字
DB_USER=root #資料庫登入名
DB_PASS=root #資料庫登陸密碼
HOST=192.168.1.1 #遠端備份ip
USE=root #遠端備份使用者
DATE=`date +%Y%m%d%H%M` #目前時間
OUT_SQL="mysqldata_bak_$DATE.sql.gz" #備份出來的sql檔案名
$DUMP -u$DB_USER -p$DB_PASS $DB_NAME | gzip -c | ssh [email protected]$HOST "cat >$OUT_DIR/$OUT_SQL"
3.将腳本設定成可執行的檔案類型
chmod +x /home/mysql_data.sh
這時候就可以測試一下腳本,看是否正确,這裡有兩種方法
1 cd /home.
./mysql_data.sh
2. bash -x /home/mysql_data.sh
都可以檢視腳本是否執行成功
4.添加定時任務 crontab
crontab -e
添加如下指令 (每天的一點三十分執行)
30 1 * * * /home/mysql_data.sh
5 重新開機定時任務
service crond restart
在備份伺服器上執行:
1.在備份伺服器上建立備份目錄 (此測試生成目錄放在home下)
cd /home
mkdir mysql_data 住:此目錄應與上面腳本mysql_data.sh中的備份目錄一緻
2.建立腳本,用來儲存最近五天的備份
vim dele.sh
複制以下内容
DAYS=5
BACKUP_DIR=/home/longlong #(這個檔案和上面備份的檔案一緻)
#删除過期的檔案
find $BACKUP_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \; #删>除5天前的備份檔案(注意:{} \;中間有空格)
3.将腳本檔案設定成可執行檔案類型
chmod +x /home/dele.sh
4.添加計劃任務
crontab -e
輸入如下指令
30 1 * * * /home/dele.sh
5.重新開機定時任務
service crond restart
二.mysqldump資料庫備份還原
在備份伺服器上執行
1.解壓縮
gunzip 備份檔案名
2.還原資料庫
mysql -u root -p datapase < 備份檔案名
一些ok,剩下測試.