mysql数据库备份(完全备份,增量备份)
文章目錄
- 數(shù)據(jù)庫備份的分類
- 從物理與邏輯備份
- 常見的備份方法
- MySQL完全備份與恢復(fù)
- mysqldump備份數(shù)據(jù)庫
- 數(shù)據(jù)恢復(fù)的兩種方法
- 使用mysqldump進(jìn)行完全備份存在的問題
- MySQL增量備份與恢復(fù)
- 什么是MySQL增量備份
- 增量備份有什么優(yōu)缺點(diǎn)
- MySQL數(shù)據(jù)庫增量恢復(fù)
- 如何能查看到日志文件中的操作語句?
- 一般恢復(fù)
- 斷點(diǎn)恢復(fù)
- 基于時間點(diǎn)恢復(fù)
數(shù)據(jù)庫備份的分類
- 程序錯誤
- 人為錯誤(大部分原因)
- 計算機(jī)失敗
- 磁盤失敗
- 災(zāi)難(如火災(zāi),地震)和偷竊
從物理與邏輯備份
物理備份
- 冷備份:是在關(guān)閉數(shù)據(jù)庫的時候進(jìn)行的
- 熱備份:數(shù)據(jù)庫處于運(yùn)行狀態(tài),這種備份方法依賴于數(shù)據(jù)庫的日志文件
- 溫備份(聯(lián)機(jī)備份):數(shù)據(jù)庫鎖定表格(不可寫入但可讀)的狀態(tài)下進(jìn)行備份操作
邏輯備份
- 完全備份:每次對數(shù)據(jù)進(jìn)行完整的備份
- 差異備份:備份那些自從上次完全備份之后被修改過的文件
- 增量備份:只有那些在上次完全備份或者增量備份后被修改的文件才會被備份
常見的備份方法
(一)物理冷備
- 備份時數(shù)據(jù)庫處于關(guān)閉狀態(tài),直接打包數(shù)據(jù)庫文件
- 備份速度快,恢復(fù)時也是最簡單的
(二)專用備份工具mydump或mysqlhotcopy
- mysqldump常用的邏輯備份工具
- mysqlhotcopy僅擁有備份MyISAM和ARCHIVE表
(三)啟用二進(jìn)制日志進(jìn)行增量備份
- 進(jìn)行增量備份,需要刷新二進(jìn)制日志
(四)第三方工具備份
- 免費(fèi)的MySQL熱備份軟件Percona XtraBackup
MySQL完全備份與恢復(fù)
物理冷備份
(先關(guān)閉數(shù)據(jù)庫,之后打包備份)
恢復(fù)數(shù)據(jù)庫
恢復(fù)數(shù)據(jù)庫,采用將備份數(shù)據(jù)mv成線上庫文件夾的方式
mysqldump備份數(shù)據(jù)庫
備份單個庫
語法: mysqldump -u 用戶名 -p [密碼] [選項(xiàng)] [庫名] > /備份路徑/備份文件名 例如: [root@localhost ~]# mysqldump -uroot -p school > /opt/school.sql多庫備份
語法: mysqldump -u 用戶名 -p [密碼] [選項(xiàng)] --databases 庫名1 [庫名2] ... > /備份路徑/備份文件名 例如:mysqldump -uroot -pabc123 --databases school student > /opt/schoo_sta.sql對所有數(shù)據(jù)庫完全備份
語法: mysqldump -u 用戶名 -p [密碼] [選項(xiàng)] *--all-databases > /備份路徑/備份文件名* 例如: 舉例子mysqldump -uroot -pabc123 --all-databases > /opt/all.sqlmysqldump -u root -p *--opt --all-databases > /backup/ku.sql*對庫內(nèi)特定的表進(jìn)行備份
mysqldump -u 用戶名 -p [密碼] [選項(xiàng)] 數(shù)據(jù)庫名 表名 > /備份路徑/備份文件名 [root@localhost opt]# mysqldump -uroot -pabc123 school tmp > /opt/tmp.sql;使用備份表的結(jié)構(gòu)
mysqldump -u 用戶名 -p [密碼] [選項(xiàng)] -d 數(shù)據(jù)庫名 表名 > /備份路徑/備份文件名 例如 mysqldump -u root -p -d yiku yibiao > /backup/yiku-yibiao.sql數(shù)據(jù)恢復(fù)的兩種方法
- 使用 mysqldump命令導(dǎo)出的SQL備份腳本,在進(jìn)行數(shù)據(jù)恢復(fù)時可使用以下方法導(dǎo)入
- source命令
- mysql命令
source命令恢復(fù)數(shù)據(jù)庫
1 登錄到MySQL數(shù)據(jù)庫 2 執(zhí)行source備份sql腳本的路徑 3 mysql -u 用戶名 -p [密碼] < 表備份腳本路徑 mysql> source /opt/schoo_sta.sql;重啟mysql服務(wù),登錄mysql,查看數(shù)據(jù)是否恢復(fù)
[root@localhost mysql]# systemctl start mysqld.service 使用mysql命令恢復(fù)數(shù)據(jù) mysql -u 用戶名 -p [密碼] < 庫備份腳本的路徑 mysql -u root < /backup/all-data.sql使用mysqldump進(jìn)行完全備份存在的問題
1 備份數(shù)據(jù)中有重復(fù)數(shù)據(jù)2 備份時間與恢復(fù)時間過長MySQL增量備份與恢復(fù)
什么是MySQL增量備份
- 只有那些在上次完全備份或者增量備份后被修改的文件才會被備份
- 增量備份就是備份自上一次備份之后增加或變化的文件或者內(nèi)容
增量備份有什么優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):
- 沒有重復(fù)數(shù)據(jù),效率高,空間利用率最大化
- 備份量不大,時間短
- 缺點(diǎn):
- 恢復(fù)麻煩:需要上次完全備份及完全備份之后所有的增量備份才能恢復(fù),而且要對所有增量備份進(jìn)行逐個反推恢復(fù)
- 安全性較低
MySQL沒有提供直接的增量備份方法
- 可通過MySQL提供的二進(jìn)制日志文件間接實(shí)現(xiàn)增量備份
- MySQL二進(jìn)制日志文件對備份的意義開去二進(jìn)程日志功能
開啟二進(jìn)制日志
[root@localhost data]# vim /etc/my.cnf socket = /usr/local/mysql/mysql.sock log-bin=mysql-bin //添加 [root@localhost ~]# systemctl restart mysqld.service備份
[root@localhost opt]# mysqldump -uroot -p123123 zxc benat > /opt/benat.sql實(shí)驗(yàn)誤操作
mysql> insert into benat values (3,'wangwu',60,'nanjing'); mysql> delete from benat where id=1; mysql> insert into benat values (4,'zhaoliu',90,'nanjing');增量備份
[root@localhost data]# mysqladmin -uroot -p123123 flush-logs會多一個mysql-bin.000002 文件
64位解碼器
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001 > /opt/bbk02.txt mysql> source /opt/benat.sql; mysql> select * from benat; +----+----------+-------+----------+ | id | name | score | address | +----+----------+-------+----------+ | 1 | zhangsan | 80.00 | sahnghai | | 2 | lisi | 70.00 | beijing | +----+----------+-------+----------+ 2 rows in set (0.00 sec)開始備份
[root@localhost data]# mysqlbinlog --no-defaults --stop-position='824' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -p123123 [root@localhost data]# mysqlbinlog --no-defaults --stop-position='941‘ /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -p123123 mysql> select * from inds; +----+---------+-------+----------+ | id | name | score | address | +----+---------+-------+----------+ | 1 | zhangsan | 80.00 | sahnghai | | 2 | wangwu | 80.00 | shanghai | | 3 | lisi | 60.00 | beijing | | 4 | zhaoliu | 60.00 | nanjing | +----+---------+-------+----------+MySQL數(shù)據(jù)庫增量恢復(fù)
如何能查看到日志文件中的操作語句?
- mysqlbinlog --no-defaults --base64-output=decode-rows -v 日志文件名稱 /opt/aaa.txt
一般恢復(fù)
將所有備份的二進(jìn)制日志內(nèi)容全部恢復(fù)
- 語法 mysqlbinlog [--no-defaults] 增量備份文件 | mysql -u 用戶名 -p
斷點(diǎn)恢復(fù)
基于位置恢復(fù)
-
就是將某個起始時間的二進(jìn)制日志導(dǎo)入數(shù)據(jù)庫中,從而跳過某個發(fā)生錯誤的時間點(diǎn)實(shí)現(xiàn)數(shù)據(jù)的恢復(fù)
- 恢復(fù)數(shù)據(jù)到指定位置 mysqlbinlog --stop-position='操作id' 二進(jìn)制日志 |mysql -u 用戶名 -p 密碼 舉例:mysqlbinlog --no-defaults --stop-position='293' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pabc123 從指定的位置開始恢復(fù)數(shù)據(jù) mysqlbinlog --start-position='操作id' 二進(jìn)制日志 |mysql -u 用戶名 -p 密碼 舉例:mysqlbinlog --no-defaults --start-position='293' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pabc123
基于時間點(diǎn)恢復(fù)
-
使用基于時間點(diǎn)的恢復(fù),可能會出現(xiàn)在一個時間點(diǎn)里既同時存在正確的操作又存在錯誤的操作,所以我們需要一種更為精確的恢復(fù)方式
- 從日志開頭截止到某個時間點(diǎn)的恢復(fù) mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小時:分鐘:秒' 二進(jìn)制日志 |mysql -u 用戶名 -p 密碼
- 從某個時間點(diǎn)到日志結(jié)尾的恢復(fù) mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時:分鐘:秒' 二進(jìn)制日志 |mysql -u 用戶名 -p 密碼
- 從某個時間點(diǎn)到某個時間點(diǎn)的恢復(fù) mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時:分鐘:秒' --stop-datetime='年
解碼器(64位解碼)
[root@localhost data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001 > /opt/bk02.txt總結(jié)
以上是生活随笔為你收集整理的mysql数据库备份(完全备份,增量备份)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 揭秘14nm内存条:性能独步天下,速度更
- 下一篇: mysql数据库基本操作总结与归纳