MySQL備份與恢復

2021-10-12 19:36:59 字數 3762 閱讀 1228

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 後面接資料庫...