日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库备份(完全备份,增量备份)

發布時間:2024/2/28 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库备份(完全备份,增量备份) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 數據庫備份的分類
    • 從物理與邏輯備份
    • 常見的備份方法
  • MySQL完全備份與恢復
  • mysqldump備份數據庫
    • 數據恢復的兩種方法
    • 使用mysqldump進行完全備份存在的問題
  • MySQL增量備份與恢復
    • 什么是MySQL增量備份
    • 增量備份有什么優缺點
  • MySQL數據庫增量恢復
    • 如何能查看到日志文件中的操作語句?
    • 一般恢復
    • 斷點恢復
    • 基于時間點恢復

數據庫備份的分類

  • 程序錯誤
  • 人為錯誤(大部分原因)
  • 計算機失敗
  • 磁盤失敗
  • 災難(如火災,地震)和偷竊

從物理與邏輯備份

物理備份

  • 冷備份:是在關閉數據庫的時候進行的
  • 熱備份:數據庫處于運行狀態,這種備份方法依賴于數據庫的日志文件
  • 溫備份(聯機備份):數據庫鎖定表格(不可寫入但可讀)的狀態下進行備份操作

邏輯備份

  • 完全備份:每次對數據進行完整的備份
  • 差異備份:備份那些自從上次完全備份之后被修改過的文件
  • 增量備份:只有那些在上次完全備份或者增量備份后被修改的文件才會被備份

常見的備份方法

(一)物理冷備

  • 備份時數據庫處于關閉狀態,直接打包數據庫文件
  • 備份速度快,恢復時也是最簡單的

(二)專用備份工具mydump或mysqlhotcopy

  • mysqldump常用的邏輯備份工具
  • mysqlhotcopy僅擁有備份MyISAM和ARCHIVE表

(三)啟用二進制日志進行增量備份

  • 進行增量備份,需要刷新二進制日志

(四)第三方工具備份

  • 免費的MySQL熱備份軟件Percona XtraBackup

MySQL完全備份與恢復

物理冷備份
(先關閉數據庫,之后打包備份)

[root@localhost opt]# systemctl stop mysqld #關閉MySQL服務 [root@localhost ~]# mkdir /opt/backup [root@localhost opt]# tar zcvf /opt/mysql_all_$(date +%F).tar.gz /usr/local/mysql/data/

恢復數據庫
恢復數據庫,采用將備份數據mv成線上庫文件夾的方式

#創建恢復目錄 [root@localhost ~]# mkdir restore [root@localhost data]# tar zxvf mysql_all_2020-08-23.tar.gz -C restore/ (解壓到源目錄) [root@localhost ~]# mv restore/usr/local/mysql/data/ /usr/local/mysql/ #重啟服務 [root@localhost ~]# systemctl start mysqld # mysqldump備份數據庫

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数据库备份(完全备份,增量备份)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。