MYSQL備份與恢復

2021-05-02 07:21:24 字數 2982 閱讀 8965

1. mysqlhotcopy 

其命令格式如下: 

shell> mysqlhotcopy db_name /path/to/some/dir

只要伺服器不再進行更新,還可以只複製所有表檔案(*.frm、*.myd和*.myi檔案)。

mysqlhotcopy指令碼使用該方法。(但請注意如果資料庫包含innodb表,這些方法不工作.innodb不將表的內容儲存到資料庫目錄中,mysqlhotcopy只適合myisam表)。

2.mysqldump

如果我們還有其它型別的表,我們必須假定在備份過程中它們不會更改。

例如,對於mysql資料庫中的myisam表,我們必須假定在備份過程中沒有對mysql賬戶進行管理更改。

mysqldump命令產生的.sql檔案包含一系列sql insert語句,可以用來過載轉儲的表。

c:/program files/mysql/mysql server 5.0/bin>mysqldump -uroot -p mytest >mytest.sql

mysqldump增量備份 

要想進行增量備份,我們需要儲存增量更改。應使用--log-bin選項啟動mysql伺服器,以便更新資料時將這些更改儲存到檔案中。該選項啟用二進位制日誌,因此伺服器寫將每個更新資料的sql語句寫入mysql二進位制日誌。

c:/>mysqld --defaults-file="c:/program files/mysql/mysql server 5.0/my.ini" --log-bin

我們可以在basedir找到以下mysql二進位制日誌檔案:

mochasof-8ed6b1-bin.000001

mochasof-8ed6b1-bin.000002

mochasof-8ed6b1-bin.000003

每次重啟,mysql伺服器用序列中的下乙個編號建立乙個新的二進位制日誌檔案。當伺服器執行時,我們還可以通過執行flush logs語句或mysqladmin flush-logs命令,告訴伺服器關閉當前的二進位制日誌檔案並建立乙個新檔案。

c:/program files/mysql/mysql server 5.0/bin>mysqladmin -uroot -p flush-logs

該命令類似於oracle的alter system switch logfile命令(日誌切換)。mysqldump也有乙個選項來清空日誌。

資料目錄中的.index檔案包含該目錄下所有mysql二進位制日誌的清單。該檔案用於複製。

恢復時mysql二進位制日誌很重要,因為它們是增量備份。如果進行完全備份時確保清空了日誌,則後面建立的二進位制日誌檔案包含了備份後的所有資料更改。讓我們稍稍修改前面的mysqldump命令,讓它在完全備份時能夠清空mysql二進位制日誌,以便轉儲檔案包含包含新的當前的二進位制日誌,我們在basedir下看到mysql產生的最新的日誌檔案

mochasof-8ed6b1-bin.000004:

c:/>mysqldump -uroot -p --single-transaction --flush-logs --master-data=2 --all-databases> backup_all.sql

backup.sql檔案包含下列行:

-- position to start replication or point-in-time recovery from

-- change master to master_log_file='mochasof-8ed6b1-bin.000004', master_log_pos=98;

-- current database: `mysql`

create database `mysql` ;

use `mysql`;

--master-data引數:

這個引數把二進位制日誌的位置和檔名寫入備份檔案中,如果該值等於1,在備份檔案中將會列印乙個change master命令;如果該值等於2,在備份檔案中將會給出乙個包括change master的注釋,這個操作將會開啟--lock-all-tables選項開關,除非和我們前邊提到過的--single-transaction引數選項一起結合使用,這時--single-transaction優先順序高於master-data,在備份期間人戶引起日誌改變的操作都自動將--lock-tables關閉。以下是從mysql的help中獲得的資訊。

因為mysqldump命令可以執行完全備份,這些行表示兩件事情:

a、backup.sql檔案包含所有寫入mochasof-8ed6b1-bin.000004二進位制日誌檔案或最新的檔案之前的更改。

b、備份後所記錄的所有資料更改不出現在backup.sql中,但出現在mochasof-8ed6b1-bin.000004二進位制日誌檔案或最新的檔案中。接下來我們可以清空日誌開始新的二進位制日誌檔案來建立增量備份。例如,執行mysqladmin flush-logs命令建立mochasof-8ed6b1-bin.000005。完全備份之後所有更改為檔案mochasof-8ed6b1-bin.000004。該增量備份很重要,因此最好將它複製到安全的地方。(例如,備份到磁帶或***上,或複製到另一台機器上)。以後我們執行另乙個mysqladmin flush-logs命令建立mochasof-8ed6b1-bin.000006,mochasof-8ed6b1-bin.000005也應複製到某個安全的地方。

mysql二進位制日誌佔據硬碟空間。要想釋放空間,應隨時清空。操作方法是刪掉不再使用的二進位制日誌,例如進行完全備份時:

c:/program files/mysql/mysql server 5.0/bin>mysqldump -uroot -p --single-transaction --flush-logs --master-data=2 --delete-master-logs mytest > mytest_new.sql

注釋:如果你的伺服器為複製主伺服器,用mysqldump --delete-master-logs刪掉mysql二進位制日誌很危險,因為從伺服器可能還沒有完全處理該二進位制日誌的內容。

purge master logs語句的描述中解釋了為什麼在刪掉mysql二進位制日誌之前應進行確認

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