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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Centos下mysql数据库备份与恢复的方法

發(fā)布時間:2023/12/19 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Centos下mysql数据库备份与恢复的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、mysqldump工具備份

mysqldump由于是mysql自帶的備份工具,所以也是最常用的mysql數(shù)據(jù)庫的備份工具。支持基于InnoDB的熱備份。但由于是邏輯備份,所以速度不是很快,適合備份數(shù)據(jù)量比較小的場景。

mysqldump完全備份+二進(jìn)制日志 —>實現(xiàn)時間點恢復(fù)

溫備:

在使用MyISAM引擎中,只能使用溫備份,這時候要防止數(shù)據(jù)的寫入,所以先加上讀鎖

這時候可以進(jìn)入數(shù)據(jù)庫手動加讀鎖。這樣比較麻煩,在mysqldump工具中直接有一個加鎖的選項

mysqldump --databases mydatabase --lock-all-tables --flush-logs> /tmp/backup-`date +%F-%H-%M`.sql

如果是針對某張表備份,只要在數(shù)據(jù)庫名稱后面加上表名稱就行了

這里注意,要實現(xiàn)時間點的恢復(fù),加上--flush-logs選項,在使用備份文件恢復(fù)后,然后再基于二進(jìn)制日志進(jìn)行時間點的恢復(fù)

時間點的恢復(fù)方法

mysqlbinlog mysql-bin.000000x > /tmp/PointTime.sql

然后用mysql命令導(dǎo)入這個sql腳本就行了

熱備:
如果使用的是InnoDB引擎,就不必進(jìn)行對數(shù)據(jù)庫加鎖的操作,加一個選項既可以進(jìn)行熱備份:--single-transaction
mysqldump --databases mydb --single-transaction? --flush-logs --master-data=2 > /tmp/backup-`date +%F-%H-%M`.sql

注意點
恢復(fù)的時刻關(guān)閉二進(jìn)制日志
mysql>set sql_log_bin=0;

例子:

# vim /usr/work/newsbackup.sh
# //填寫以下內(nèi)容
#!/bin/bash
# Program
# use mysqldump to Fully backup? news database data per week!
#History(版本)
#? 2015-07-27 first
#path(定義目錄)
BakDir=/usr/work/mysql/backup
Days=7? #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份
DelDate=` date -d -7day +%Y%m%d `?? #刪除ftp服務(wù)器空間7天前的備份
echo "You are in backup dir"
FileDate=$(date +%Y%m%d).sql.gz
echo $FileDate
cd $BakDir
File=$Date.sql
#簡單的備份
#mysqldump -u root news > $FileDate
#如果使用的是InnoDB引擎,就不必進(jìn)行對數(shù)據(jù)庫加鎖的操作,加一個選項既可以進(jìn)行熱備份:--single-transaction
#mysqldump -u root news? --single-transaction >$FileDate
#對備份的數(shù)據(jù)繼續(xù)壓縮
mysqldump -u root news? --single-transaction |gzip >/$BakDir/$FileDate
echo "Your database backup successfully completed"
#壓縮有的數(shù)據(jù)進(jìn)行傳
echo FTP to FtpServer
ftp -ivn << EOF
#打開服務(wù)器連接
open 192.168.1.125
#用戶 密碼
user administrator zzf
#打開路徑
cd?? newsbackup
#放入文件
put? $FileDate
#把服務(wù)上7天前的數(shù)據(jù)進(jìn)行刪除
delete $DelDate.sql.tz $DelDate.sql.tz
#退出ftp服務(wù)器
bye
EOF

echo? delete $Days days ago files(刪除ftp服務(wù)器上7天前的文件)
cd $BakDir

#刪除7天前的備份文件(注意:{} \;中間有空格)
find $BakDir/ "*.sql.gz" -mtime +$Days -exec rm {} \;

?

二、基于LVM快照備份

在物理備份中 ,有基于文件系統(tǒng)的物理備份(LVM的快照),也可以直接用tar之類的命令打包。但這些只能進(jìn)行冷備份
不同的存儲引擎能備份的級別也不一樣,MyISAM能備份到表級別,而InnoDB不開啟每表一文件的話就只能備份整個數(shù)據(jù)庫。

下面就介紹下使用LVM的快照功能進(jìn)行備份
為了安全 首先在數(shù)據(jù)庫上施加讀鎖

mysql>FLUSH TABLES WITH READ LOCK;

刷新一下二進(jìn)制日志,便于做時間點恢復(fù)

mysql>FLUSH LOGS;

然后創(chuàng)建快照卷

lvcreate –L 1G –s –n data-snap –p –r /dev/myvg/mydata

最后進(jìn)入數(shù)據(jù)庫釋放讀鎖

UNLOCK TABLES;

掛載快照卷進(jìn)行備份

mount –r /dev/myvg/data-snap /mnt/snap

然后對/mnt/snap下的文件進(jìn)行打包備份
還原的時候,關(guān)閉mysqld,然后備份二進(jìn)制日志后將原來備份的文件還原進(jìn)去,然后通過二進(jìn)制日志還原到出錯的時間點(通過二進(jìn)制還原時間點的時候不要忘了暫時關(guān)閉二進(jìn)制日志)

轉(zhuǎn)載于:https://www.cnblogs.com/running-mydream/p/4682182.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Centos下mysql数据库备份与恢复的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。