1.完全備份分類
2.物理冷備份及恢復操作
3.mysqldump備份與恢復
五、增量備份
從物理與邏輯的角度,備份可分為
2.邏輯備份
對資料庫邏輯元件(如,表等資料庫物件)的備份
從資料庫的備份策略角度,備份可分為:
備份與恢復操作簡單方便
資料存在大量的重複
占用大量的備份空間
備份與恢復時間長
備份
systemctl stop mysqld
mkdir /backup
tar -zcvf /backup/mysql_all-$(
date +%f)
.tar.gz /usr/local/mysql/data/
恢復
mkdir /bak
mv /usr/local/mysql/data/ /bak/
tar -zxvf /backup/mysql_all-2020-12-01.tar.gz
mv /backup/usr/local/mysql/data /usr/local/mysql/
systemctl start mysqld
###備份
mkdir /backup
mysqldump -u root -p mysql > /backup/mysql.sql
##-p後可帶密碼,但明文顯示不安全,不帶密碼則會在之後互動輸入,mysql為要備份的資料庫,備份檔案以.sql結尾
mysqldump -u root -p --databases mysql aa bb > /backup/databases-mysql-aa-bb.sql
##同時備份mysql、aa、bb三個庫
mysqldump -u root -p --all-databases > /backup/all-data.sql
##備份所有資料庫
mysqldump -u root -p aa test
> /backup/aa_test-$(
date +%f)
.sql #備份aa庫下的test表
use mysql #在需要恢復的資料庫內
source /backup/mysql.sql
mysql -u root -p mysql < /backup/mysql.sql
1.use aa
source /backup/aa_test-2020-12-01.sql
2.mysql -u root -p aa < /backup/aa_test-2020-12-01.sql
1.一般恢復
將所有備份的二進位制日誌內容全部恢復
2.基於位置恢復
資料庫在某一時間點可能既有錯誤的操作也有正確的操作
可以基於精準的位置跳過錯誤的操作
3.基於時間點恢復
跳過某個發生錯誤的時間點實現資料恢復
mysqldump -u root -p aaa > /backup/aaa-$(
date +%f)
.sql
vi /etc/my.cnf
[mysqld]
log_bin=/usr/local/mysql/data/mysql_bin
systemctl restart mysqld
mysqladmin -u root -p flush-logs ##將二進位制日誌更新,產生新的日誌檔案
cd /usr/local/mysql/data
ls -lh 查詢增量備份結果
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000003
insert into test values(
'aa','90');
#正確操作
delete from test where name=
'bb'
;#模擬誤刪除
insert into test values(
'cc','65');
#正確操作
mysqladmin -u root -p flush-logs ##將二進位制日誌更新,產生新的日誌檔案
cd /usr/local/mysql/data
ls -lh #查詢增量備份結果
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000004
刪除原先壞掉的那張表
use aaa;
drop table test
;
還原到完全備份時的資料庫
mysql -u root -p aaa < /opt/bak_sql/aaa-2020-12-01.sql
停止恢復的時間(錯誤操作開始時間)
mysqlbinlog --no-defaults --stop-datetime=
'2020-12-01 12:13:20' /usr/local/mysql/data/mysql_bin.000004 | mysql -u root -p
繼續開始恢復的時間(錯誤操作後的第乙個正確操作開始時間)
mysqlbinlog --no-defaults --start-datetime=
'2020-12-01 12:13:30 ' /usr/local/mysql/data/mysql_bin.000004 | mysql -u root -p
注:必須保證正確和錯誤的操作在乙個日誌檔案中
刪除原先壞掉的那張表
use aaa;
drop table test
;
還原到完全備份時的資料庫
mysql -u root -p aaa < /opt/bak_sql/aaa-2020-12-01.sql
查詢該二進位制日誌內容
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000004
上一次正確操作的位置點停止
mysqlbinlog --no-defaults --stop-position=
'559' /usr/local/mysql/data/mysql_bin.000004 | mysql -u root -p
下一次正確操作的位置點開始
mysqlbinlog --no-defaults --start-position=
'655' /usr/local/mysql/data/mysql_bin.000004 | mysql -u root -p
mysql 備份與恢復 MySQL 備份與恢復
1 檢視資料庫的資料儲存在哪個目錄下 shiyanlou mysql uroot e show variables like datadir variable name value datadir var lib mysql 2 備份資料的方法 select into outfile 檔名 或者 s...
mysql 備份與恢復 Mysql 備份與恢復
資料檔案一致性處理 在完全備份的情況下,檔案不是時間點一致的,因為進行快照的時間點不一樣。如果嘗 試在未prepare資料的情況下還原資料庫,雖然操作上支援恢復,但是在啟動的時候仍會 進行資料recovery。執行帶 prepare 選項的 mariabackup 命令會使資料檔案進行統一,達到資料...
mysql備份恢復 mysql之備份與恢復
工作中,我們經常會遇到資料庫的備份與恢復場景 目錄1 mysql的備份與恢復 2 mysql的匯入與匯出 1 mysql的備份與恢復 mysql的備份命令是mysqldump,mysql之備份 mysqldump u user h host port p db table.file u 後面接資料庫...