mysql数据库备份(完全备份,增量备份)
生活随笔
收集整理的這篇文章主要介紹了
mysql数据库备份(完全备份,增量备份)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 數據庫備份的分類
- 從物理與邏輯備份
- 常見的備份方法
- MySQL完全備份與恢復
- mysqldump備份數據庫
- 數據恢復的兩種方法
- 使用mysqldump進行完全備份存在的問題
- MySQL增量備份與恢復
- 什么是MySQL增量備份
- 增量備份有什么優缺點
- MySQL數據庫增量恢復
- 如何能查看到日志文件中的操作語句?
- 一般恢復
- 斷點恢復
- 基于時間點恢復
數據庫備份的分類
- 程序錯誤
- 人為錯誤(大部分原因)
- 計算機失敗
- 磁盤失敗
- 災難(如火災,地震)和偷竊
從物理與邏輯備份
物理備份
- 冷備份:是在關閉數據庫的時候進行的
- 熱備份:數據庫處于運行狀態,這種備份方法依賴于數據庫的日志文件
- 溫備份(聯機備份):數據庫鎖定表格(不可寫入但可讀)的狀態下進行備份操作
邏輯備份
- 完全備份:每次對數據進行完整的備份
- 差異備份:備份那些自從上次完全備份之后被修改過的文件
- 增量備份:只有那些在上次完全備份或者增量備份后被修改的文件才會被備份
常見的備份方法
(一)物理冷備
- 備份時數據庫處于關閉狀態,直接打包數據庫文件
- 備份速度快,恢復時也是最簡單的
(二)專用備份工具mydump或mysqlhotcopy
- mysqldump常用的邏輯備份工具
- mysqlhotcopy僅擁有備份MyISAM和ARCHIVE表
(三)啟用二進制日志進行增量備份
- 進行增量備份,需要刷新二進制日志
(四)第三方工具備份
- 免費的MySQL熱備份軟件Percona XtraBackup
MySQL完全備份與恢復
物理冷備份
(先關閉數據庫,之后打包備份)
恢復數據庫
恢復數據庫,采用將備份數據mv成線上庫文件夾的方式
mysqldump備份數據庫
備份單個庫
語法: mysqldump -u 用戶名 -p [密碼] [選項] [庫名] > /備份路徑/備份文件名 例如: [root@localhost ~]# mysqldump -uroot -p school > /opt/school.sql多庫備份
語法: mysqldump -u 用戶名 -p [密碼] [選項] --databases 庫名1 [庫名2] ... > /備份路徑/備份文件名 例如:mysqldump -uroot -pabc123 --databases school student > /opt/schoo_sta.sql對所有數據庫完全備份
語法: mysqldump -u 用戶名 -p [密碼] [選項] *--all-databases > /備份路徑/備份文件名* 例如: 舉例子mysqldump -uroot -pabc123 --all-databases > /opt/all.sqlmysqldump -u root -p *--opt --all-databases > /backup/ku.sql*對庫內特定的表進行備份
mysqldump -u 用戶名 -p [密碼] [選項] 數據庫名 表名 > /備份路徑/備份文件名 [root@localhost opt]# mysqldump -uroot -pabc123 school tmp > /opt/tmp.sql;使用備份表的結構
mysqldump -u 用戶名 -p [密碼] [選項] -d 數據庫名 表名 > /備份路徑/備份文件名 例如 mysqldump -u root -p -d yiku yibiao > /backup/yiku-yibiao.sql數據恢復的兩種方法
- 使用 mysqldump命令導出的SQL備份腳本,在進行數據恢復時可使用以下方法導入
- source命令
- mysql命令
source命令恢復數據庫
1 登錄到MySQL數據庫 2 執行source備份sql腳本的路徑 3 mysql -u 用戶名 -p [密碼] < 表備份腳本路徑 mysql> source /opt/schoo_sta.sql;重啟mysql服務,登錄mysql,查看數據是否恢復
[root@localhost mysql]# systemctl start mysqld.service 使用mysql命令恢復數據 mysql -u 用戶名 -p [密碼] < 庫備份腳本的路徑 mysql -u root < /backup/all-data.sql使用mysqldump進行完全備份存在的問題
1 備份數據中有重復數據2 備份時間與恢復時間過長MySQL增量備份與恢復
什么是MySQL增量備份
- 只有那些在上次完全備份或者增量備份后被修改的文件才會被備份
- 增量備份就是備份自上一次備份之后增加或變化的文件或者內容
增量備份有什么優缺點
- 優點:
- 沒有重復數據,效率高,空間利用率最大化
- 備份量不大,時間短
- 缺點:
- 恢復麻煩:需要上次完全備份及完全備份之后所有的增量備份才能恢復,而且要對所有增量備份進行逐個反推恢復
- 安全性較低
MySQL沒有提供直接的增量備份方法
- 可通過MySQL提供的二進制日志文件間接實現增量備份
- MySQL二進制日志文件對備份的意義開去二進程日志功能
開啟二進制日志
[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實驗誤操作
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數據庫增量恢復
如何能查看到日志文件中的操作語句?
- mysqlbinlog --no-defaults --base64-output=decode-rows -v 日志文件名稱 /opt/aaa.txt
一般恢復
將所有備份的二進制日志內容全部恢復
- 語法 mysqlbinlog [--no-defaults] 增量備份文件 | mysql -u 用戶名 -p
斷點恢復
基于位置恢復
-
就是將某個起始時間的二進制日志導入數據庫中,從而跳過某個發生錯誤的時間點實現數據的恢復
- 恢復數據到指定位置 mysqlbinlog --stop-position='操作id' 二進制日志 |mysql -u 用戶名 -p 密碼 舉例:mysqlbinlog --no-defaults --stop-position='293' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pabc123 從指定的位置開始恢復數據 mysqlbinlog --start-position='操作id' 二進制日志 |mysql -u 用戶名 -p 密碼 舉例:mysqlbinlog --no-defaults --start-position='293' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pabc123
基于時間點恢復
-
使用基于時間點的恢復,可能會出現在一個時間點里既同時存在正確的操作又存在錯誤的操作,所以我們需要一種更為精確的恢復方式
- 從日志開頭截止到某個時間點的恢復 mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小時:分鐘:秒' 二進制日志 |mysql -u 用戶名 -p 密碼
- 從某個時間點到日志結尾的恢復 mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時:分鐘:秒' 二進制日志 |mysql -u 用戶名 -p 密碼
- 從某個時間點到某個時間點的恢復 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總結
以上是生活随笔為你收集整理的mysql数据库备份(完全备份,增量备份)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 揭秘14nm内存条:性能独步天下,速度更
- 下一篇: 逃离神秘实验室:挑战记忆矩阵和速度迷宫