日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 备份和恢复策略(二)

發布時間:2025/4/16 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 备份和恢复策略(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

備份策略三、使用mysqldump備份數據庫

mysqldump?是采用SQL級別的備份機制,它將數據表導成?SQL?腳本文件,在不同的?MySQL?版本之間升級時相對比較合適,這也是最常用的備份方法。mysqldump?比直接拷貝要慢些。關于mysqldump的更詳細解釋見最后的附錄。

對于中等級別業務量的系統來說,備份策略可以這么定:第一次完全備份,每天一次增量備份,每周再做一次完全備份,如此一直重復。而對于重要的且繁忙的系統來說,則可能需要每天一次全量備份,每小時一次增量備份,甚至更頻繁。為了不影響線上業務,實現在線備份,并且能增量備份,最好的辦法就是采用主從復制機制(replication),在?slave?機器上做備份。

備份策略布置:

?

(1)、創建備份目錄

Shell>?mkdir?/tmp/mysqlbackup

Shell>?mkdir?/tmp/mysqlbackup/daily

(2)、啟用二進制日志

采用?binlog?的方法相對來說更靈活,省心省力,而且還可以支持增量備份。

啟用?binlog?時必須要重啟?mysqld。首先,關閉?mysqld,打開?/etc/my.cnf,加入以下幾行:

[mysqld]

log-bin

然后啟動?mysqld?就可以了。運行過程中會產生?HOSTNAME-bin.000001?以及?HOSTNAME-bin.index,前面的文件是?mysqld?記錄所有對數據的更新操作,后面的文件則是所有?binlog?的索引,都不能輕易刪除。關于?binlog?的更詳細信息請查看手冊。

(3)、配置SSH密鑰登錄,用于將MySQL備份傳送到備份服務器(如果備份服務器為Windows,請跳過此部)。

1)、在MySQL所在服務器(192.168.0.20)生成SSH密鑰

[root@lab?~]#?ssh-keygen?-t?rsa

Generating?public/private?rsa?key?pair.

Enter?file?in?which?to?save?the?key?(/root/.ssh/id_rsa):??//直接回車

Enter?passphrase?(empty?for?no?passphrase):?????????//直接回車,不使用密碼

Enter?same?passphrase?again:?????????????????????//直接回車,不使用密碼

Your?identification?has?been?saved?in?/root/.ssh/id_rsa.

Your?public?key?has?been?saved?in?/root/.ssh/id_rsa.pub.

The?key?fingerprint?is:

c2:96:9f:2d:5a:8e:08:42:43:35:2f:85:5e:72:f8:1c?root@lab

?

2)、在備份服務器(192.168.0.200)上創建目錄,修改權限,并傳送公鑰。

[root@lab?~]#?ssh?192.168.0.200?”mkdir?.ssh;chmod?0700?.ssh”

The?authenticity?of?host?’192.168.0.200?(192.168.0.200)’?can’t?be?established.

RSA?key?fingerprint?is?37:57:55:c1:32:f1:dd:bb:1b:8a:13:6f:89:fb:b8:9d.

Are?you?sure?you?want?to?continue?connecting?(yes/no)??yes

Warning:?Permanently?added?’192.168.0.200′?(RSA)?to?the?list?of?known?hosts.

root@192.168.0.200’s?password:?????//輸入備份服務器的root密碼

[root@lab?~]#?scp?.ssh/id_rsa.pub?192.168.0.200:.ssh/authorized_keys2

root@192.168.0.200’s?password:?

id_rsa.pub?????????????????????????????????????????????100%??218?????0.2KB/s???00:00????

3)、測試SSH登錄

[root@lab?~]#?ssh?192.168.0.200???????//測試SSH登錄

Last?login:?Fri?Nov?16?10:34:02?2007?from?192.168.0.20

[root@lib?~]#?

?

(4)、設置crontab任務,每天執行備份腳本

shell>?crontab?-e

#每個星期日凌晨3:00執行完全備份腳本

0?3?*?*?0?/root/MySQLBackup/mysqlFullBackup.sh?>/dev/null?2>&1

#周一到周六凌晨3:00做增量備份

0?3?*?*?1-6?/root/MySQLBackup/mysqlDailyBackup.sh?>/dev/null?2>&1

?

mysqlFullBackup.sh注釋:

#!/bin/sh

# Name:mysqlFullBackup.sh

# PS:MySQL DataBase Full Backup.

# Write by:i.Stone

# Last Modify:2007-11-17

#

# Use mysqldump –help get more detail.

#

# 定義變量,請根據具體情況修改

# 定義腳本目錄

scriptsDir=`pwd`

# 定義數據庫目錄

mysqlDir=/usr/local/mysql

# 定義用于備份數據庫的用戶名和密碼

user=root

userPWD=111111

# 定義備份目錄

dataBackupDir=/tmp/mysqlbackup

# 定義郵件正文文件

eMailFile=$dataBackupDir/email.txt

# 定義郵件地址

eMail=alter@somode.com

# 定義備份日志文件

logFile=$dataBackupDir/mysqlbackup.log

DATE=`date -I`


echo “” > $eMailFile

echo $(date +”%y-%m-%d %H:%M:%S”) >> $eMailFile

cd $dataBackupDir

# 定義備份文件名

dumpFile=mysql_$DATE.sql

GZDumpFile=mysql_$DATE.sql.tar.gz
# 使用mysqldump備份數據庫,請根據具體情況設置參數

$mysqlDir/bin/mysqldump -u$user -p$userPWD \

–opt –default-character-set=utf8 –extended-insert=false \

–triggers -R –hex-blob –all-databases \

–flush-logs –delete-master-logs \

–delete-master-logs \

-x > $dumpFile
# 壓縮備份文件

if [[ $? == 0 ]]; then

? tar czf $GZDumpFile $dumpFile >> $eMailFile 2>&1

? echo “BackupFileName:$GZDumpFile” >> $eMailFile

? echo “DataBase Backup Success!” >> $eMailFile

? rm -f $dumpFile
# Delete daily backup files.

? cd $dataBackupDir/daily

? rm -f *
# Delete old backup files(mtime>2).

? $scriptsDir/rmBackup.sh
# 如果不需要將備份傳送到備份服務器或備份服務器為Windows,請將標綠的行注釋掉

# Move Backup Files To Backup Server.

#適合Linux(MySQL服務器)到Linux(備份服務器)

? $scriptsDir/rsyncBackup.sh

? if (( !$? )); then

??? echo “Move Backup Files To Backup Server Success!” >> $eMailFile

??? else

??? echo “Move Backup Files To Backup Server Fail!” >> $eMailFile

? fi
else

? echo “DataBase Backup Fail!” >> $emailFile

fi

# 寫日志文件

echo “——————————————————–” >> $logFile

cat $eMailFile >> $logFile

# 發送郵件通知

cat $eMailFile | mail -s “MySQL Backup” $eMail

?

本文轉自:http://blog.thematice.com? 作者:稀飯的國度

轉載于:https://www.cnblogs.com/lvsong/archive/2010/07/30/1788899.html

總結

以上是生活随笔為你收集整理的MySQL 备份和恢复策略(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。