一遏片、數(shù)據(jù)的備份類型
- 完全備份:備份整個數(shù)據(jù)庫
-
部分備份:備份部分數(shù)據(jù)慈俯,部分備份又分為以下兩種
?增量備份:備份上一次備份以來變化的數(shù)據(jù)旋圆;節(jié)約空間归苍,恢復(fù)比較麻煩用狱。
?差異備份:備份上一次完全備份以來變化的數(shù)據(jù);浪費空間拼弃,還原比增量備份簡單夏伊。
增量備份與差異備份示意圖
二、MySQL 備份數(shù)據(jù)的方式
- 物理備份:一般是通過tar吻氧,cp等命令直接打包復(fù)制數(shù)據(jù)庫的數(shù)據(jù)文件以達到備份的效果
- 邏輯備份:一般是通過特定工具從數(shù)據(jù)庫中導(dǎo)出并另存?zhèn)浞?/li>
- 熱備份:備份數(shù)據(jù)庫時溺忧,數(shù)據(jù)庫讀寫操作均不收到影響
- 溫備份:備份數(shù)據(jù)庫時,數(shù)據(jù)庫可以進行讀操作盯孙,但不能進行寫操作
- 冷備份:備份數(shù)據(jù)庫時鲁森,數(shù)據(jù)庫不能進行讀寫操作(即數(shù)據(jù)庫要下線)
三、mysqldump 備份工具的使用
- 導(dǎo)出一個數(shù)據(jù)庫下的所有表結(jié)構(gòu)
mysqldump -d dbname -u root -p > structure.sql
- 導(dǎo)出多個個數(shù)據(jù)庫下的所有表結(jié)構(gòu)
mysqldump -d -B dbname1 dbname2 -u root -p > structure.sql
- 導(dǎo)出一個數(shù)據(jù)庫下的所有表數(shù)據(jù)
mysqldump -t dbname -u root -p > data.sql
- 導(dǎo)出多個數(shù)據(jù)庫下的所有表數(shù)據(jù)
mysqldump -t -B dbname1 dbname2 -u root -p > data.sql
- 導(dǎo)出一個數(shù)據(jù)庫下的所有表結(jié)構(gòu)及表數(shù)據(jù)
mysqldump dbname -u root -p > data.sql
- 導(dǎo)出多個數(shù)據(jù)庫下的所有表結(jié)構(gòu)及表數(shù)據(jù)
mysqldump -B dbname1 dbname2 -u root -p > data.sql
- 導(dǎo)出一個表結(jié)構(gòu)
mysqldump -d dbname tablename -u root -p > structure.sql
- 導(dǎo)出多個表結(jié)構(gòu)
mysqldump -d dbname --tables tablename1 tablename2 -u root -p > structure.sql
- 導(dǎo)出一個表數(shù)據(jù)
mysqldump -t dbname tablename -u root -p > data.sql
- 導(dǎo)出多個表數(shù)據(jù)
mysqldump -t dbname --tables tablename1 tablename2 -u root -p > data.sql
- 備份函數(shù)和存儲過程
mysqldump --skip-trigger -R -ndt dbname >func.sql
四振惰、 數(shù)據(jù)備份和恢復(fù)
- 備份表結(jié)構(gòu)和表數(shù)據(jù)以及觸發(fā)器
mysqldump test -u root -p >test.sql #(也可以一步進行:mysqldump -d -R test >test.sql)
- 備份函數(shù)和存儲過程
mysqldump --skip-trigger -R -ndt test -u root -p>func.sql
注意:盡量在 func.sql
的頭部加上以下內(nèi)容刀森,防止恢復(fù)函數(shù)時出錯
set global log_bin_trust_function_creators = 1;
- 先恢復(fù)表結(jié)構(gòu)和表數(shù)據(jù)(數(shù)據(jù)庫名為
restore
)
mysql restore -u root -p< test.sql
- 再恢復(fù)函數(shù)和存儲過程
mysql restore -u root -p< func.sql
5、mysqldump 備份并壓縮sql文件
mysqldump dbname | gzip > filename
6报账、mysql直接用壓縮文件恢復(fù)
gunzip < backupfile.sql.gz | mysql dbname
五研底、通過binlog增量恢復(fù)數(shù)據(jù)
- 先恢復(fù)上一次備份過的數(shù)據(jù)
mysql {dbname} < backup.sql
- 通過二進制日志文件找到增量的sql數(shù)據(jù)(獲取的數(shù)據(jù)為sql語句,需要導(dǎo)入到文件然后再導(dǎo)入到數(shù)據(jù)庫)
# 基于位置點恢復(fù)
只給stop指定位置透罢,那么從日志文件開始恢復(fù)數(shù)據(jù)榜晦,恢復(fù)到stop指定時間點
mysqlbinlog --stop-position='9916' /var/log/mysql-bin.000001 `
只給定start指定位置,那么就從start指定位置開始恢復(fù)羽圃,恢復(fù)到文件的結(jié)束
mysqlbinlog --start-position='9918' /var/log/mysql-bin.000001
如果即給了start開始位置點乾胶,也給定了stop停止時間點,那么就是從開始點開始到停止位置點結(jié)束
# 基于時間點恢復(fù)
只給stop時間,不給start時間识窿,就從文件的開頭開始恢復(fù)斩郎,恢復(fù)到指定的stop時間停止恢復(fù)
mysqlbinlog -–stop-datetime=”20014-12-25 11:25:56“ /var/log/mysql-bin.000001 | mysql -uroot -p
只給start時間,就是從start指定的時間開始恢復(fù)喻频,恢復(fù)到binlog文件的結(jié)束
mysqlbinlog -–start-datetime=”20014-12-25 11:29:56“ /var/log/mysql-bin.000001 | mysql -uroot -p
如果給了開始時間和結(jié)束數(shù)據(jù)缩宜,那就是恢復(fù)開始到結(jié)束stop時間點的數(shù)據(jù)