【MySQL】數據庫——備份與恢復,日志管理

一、數據備份的重要性

1.備份的主要目的是災難恢復

  1. 在生產環境中,數據的安全性至關重要

  2. 任何數據的丟失都可能產生嚴重的后果
  3. 造成數據丟失的原因:
  • 程序錯誤
  • 人為,操作錯誤
  • 運算錯誤
  • 磁盤故障
  • 災難(如火災、地震)和盜竊

2.數據庫備份的分類

物理備份:直接對數據庫的數據文件或者日志文件進行備份.

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

邏輯備份:對數據庫的庫或表對象進行備份.

  • 即以sql語句的形式,把庫、表結構、表數據保存下來
數據庫的備份策略
  • 完全備份(全量備份):每次對數據庫進行完整的備份
  • 差異備份:備份自從上次完全備份之后被修改過的文件
  • 增量備份:只有在上次完全備份或者增量備份后被修改的文件才會被備份

二、MySQL的完全備份與恢復

物理冷備份(完全備份)與恢復? ? tar壓縮打包

systemctl stop mysqld
mkdir /opt/backup    #將數據庫備份文件保存到/opt/backup目錄下
[root@localhost backup]# cd /usr/local/mysql/
[root@localhost mysql]# tar zcf /opt/backup/mysql_data-$(date +%F).tar.gz data/
[root@localhost mysql]# cd /opt/backup/
[root@localhost backup]# ls
mysql_data-2024-06-26.tar.gz
[root@localhost backup]# scp mysql_data-2024-06-26.tar.gz 192.168.100.18:~/#發送給備份數據文件的主機的根目錄下~/

再在數據庫備份主機(192.168.100.18)操作恢復數據庫?

[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# ls[root@localhost ~]# tar xf mysql_data-2024-06-26.tar.gz 
[root@localhost ~]# ls[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# ls[root@localhost mysql]# mv data/ data_old
[root@localhost mysql]# mv ~/data/ data
[root@localhost mysql]# ls[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# mysql -uroot -pabcd1234

mysqldump進行邏輯備份

mysqldump備份數據庫

備份指定數據庫中的文件:
mysqldump -u用戶名 -p密碼 數據庫名 > 指定路徑的絕對路徑/數據庫名.sql

備份指定數據庫和文件:
mysqldump -u用戶名 -p密碼 --databases 數據庫名 > 指定路徑的絕對路徑/數據庫名.sql

備份多個庫及文件
mysqldump -u用戶名 -p密碼 --databases 數據庫1?數據庫2?> 指定路徑的絕對路徑/數據庫名.sql
?

備份所有數據庫文件:
mysqldump -u用戶名 -p密碼 --all-databases > 指定路徑的絕對路徑/數據庫名.sql
?

邏輯熱備份(完全備份)與恢復

mysqldump實現邏輯備份
mysqldump -u用戶名 -p密碼 --databases 庫1 [庫2 ...] > /存儲路徑/xxx.sql
##備份庫以及庫中所有表的表數據及表結構mysqldump -u用戶名 -p密碼 --all-databases  > /存儲路徑/xxx.sql
##備份所有的庫以及其表數據mysqldump -u用戶名 -p密碼 庫名 > /存儲路徑/xxx.sql
##只備份指定庫中的所有表數據,不包含庫對象mysqldump -u用戶名 -p密碼 庫名 表1 [表2 ] > /存儲路徑/xxx.sql
##備份指定庫中的單個或多個表的數據和表結構,不包含庫對象mysqldump -u用戶名 -p密碼 -d 庫名 表1 [表2 ] > /存儲路徑/xxx.sql
##只備份指定庫中的單個或多個表的結構,不包含庫對象,也不包含表的數據

恢復

方法一:
先登錄到數據庫,然后使用source +/存儲路徑/xxx.sql 進行恢復(如果sql文件是只備份了表數據的文件,那么需要先創建庫,并use切換庫后才能執行該命令)方法二:
使用sql語句來進行恢復
mysql -u用戶名 -p密碼 < /存儲路徑/xxx.sql
cat /存儲路徑/xxx.sql | mysql -u用戶名 -p密碼 
##恢復庫
mysql -u用戶名 -p密碼  指定庫名 < /存儲路徑/xxx.sql
cat /存儲路徑/xxx.sql | mysql -u用戶名 -p密碼 指定庫名 
##恢復庫中的表,且需要庫是存在的

三、MySQL的增量備份與恢復

增量備份是采用的物理二進制日志文件分割來完成增量備份的
啟用相關日志需要? 編輯 /etc/my.cnf 文件內容,末行添加以下內容
?

vim /etc/my.cnf#開錯誤日志
log-error=/usr/local/mysql/data/mysql_error.log
#開通用查詢日志
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
#開二進制日志
log_bin=mysql_bin
#開啟慢查詢日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2

重啟mysql并查看日志

[root@zx1 backup]# systemctl restart mysqld
[root@zx1 backup]# cd /usr/local/mysql/data/
[root@zx1 data]# ls
auto.cnf         ib_logfile0       mysql_general.log     sys
ca-key.pem       ib_logfile1       mysql_slow_query.log  zx
ca.pem           ibtmp1            performance_schema    zx1
client-cert.pem  mysql             private_key.pem       zx2
client-key.pem   mysql_bin.000001  public_key.pem
ib_buffer_pool   mysql_bin.index   server-cert.pem
ibdata1          mysql_error.log   server-key.pem
[root@zx1 data]# vim /etc/my.cnf
[root@zx1 data]#

刷新生成二進制日志文件的兩種方式:

(1)重啟數據庫服務:systemctl restart mysqld;?

(2)flush-logs命令刷新:mysqladmin -uroot -pabc123 flush-logs;

二進制日志(binlog)有3種不同的記錄格式:

STATEMENT(基于SQL語句):默認格式是STATEMENT。該方式記錄語句快,占用內存空間少。但高并發情況下會導致記錄日志順序紊亂,造成恢復數據時發生偏差。
ROW(基于行):基于數據內容行進行記錄,不僅記錄執行的命令語句,還會記錄命令影響的相關數據行。
MIXED(混合模式):高并發情況下ROW方式進行記錄,一般情況下采用STATEMENT方式進行記錄。

1、手動增量備份

手動增量備份的方式有三種:
第一種:手動刷新
mysqladmin -uroot -pabc123 flush-logs第二種:重啟mysqld服務
systemctl restart mysqld第三種:二進制日志文件的大小達到1G的時候會進行自動分割
與max_binlog_size大小相關
默認為1073741824字節等于1G

2、增量備份恢復

mysqlbinlog --no-defaults 指定binlog |mysql -u用戶名 -p密碼 
[root@ll data]# cd /root/back-everyday/
[root@zll back-everyday]# ls
mysql_bin.20240624  mysql_bin.20240625  mysql_bin.20240626
[root@ll back-everyday]# mysqlbinlog --no-defaults mysql_bin.20240625 | mysql -u root -pabc123
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@ll back-everyday]# mysql -u root -pabc123 -e 'select * from zx.zx;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+------+------+------+
| id | name | sex  | age  |
+----+------+------+------+
|  1 | scj  | 男   |   20 |
|  2 | zx   | 男   |   21 |
|  3 | tc   | 男   |   20 |
|  4 | ctt  | 女   |   20 |
|  5 | jlh  | 男   |   20 |
+----+------+------+------+
[root@ll back-everyday]# mysqlbinlog --no-defaults mysql_bin.20240626 | mysql -u root -pabc123
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@ll back-everyday]# mysql -u root -pabc123 -e 'select * from zx.zx;'              mysql: [Warning] Using a password on the command line interface can be insecure.
+----+------+------+------+
| id | name | sex  | age  |
+----+------+------+------+
|  1 | scj  | 男   |   20 |
|  2 | zx   | 男   |   21 |
|  3 | tc   | 男   |   20 |
|  4 | ctt  | 女   |   20 |
|  5 | jlh  | 男   |   20 |
|  6 | zyr  | 男   |   20 |
|  7 | tj   | 男   |   20 |
+----+------+------+------+

4、增量備份斷點恢復

第一種:基于位置恢復
基于位置點恢復
mysqlbinlog --no-defaults --start-position="" --stop-position="" 指定binlog |mysql -u用戶名 -p密碼 
第二種:基于時間點恢復
基于時間點恢復
mysqlbinlog --no-defaults --start-datetime="" --stop-datetime="" 指定binlog |mysql -u用戶名 -p密碼 

如果需要恢復到某條sql語句之前的所有數據,就stop在這個語句的位置點或時間點之前
如果需要恢復某條sql語句及其之后的所有數據,就從這個語句的位置點或時間點開始start?

總結

備份方法
物理備份:直接對數據庫的物理文件(數據文件、日志文件等)進行備份
邏輯備份:對數據庫的庫和表對象以SQL語言的形式導出進行備份備份策略
完全備份:每次備份都備份完整的庫或者表數據
差異備份:只備份上一次完全備份后的更新數據
增量備份:每次備份只備份上一次完全備份或增量備份后的更新數據數據庫上云遷移     冷遷移     物理冷備      先關閉數據庫,再打包備份+恢復熱遷移     阿里云 DTS完全備份
物理冷備:先關閉數據庫,使用tar命令打包備份數據庫的數據目錄和文件  mysql/data/mysqldump邏輯熱備
mysqldump -uXXX -pXXX  --databases 庫1 [庫2 ....] > XXX.sql       備份一個或多個庫及庫中所有的表數據
mysqldump -uXXX -pXXX  --all-databases > XXX.sql                  備份所有的庫
mysqldump -uXXX -pXXX  庫名 > XXX.sql                             備份指定庫中的所有的表數據,不包含庫對象
mysqldump -uXXX -pXXX  庫名 表1 [表2 ....] > XXX.sql              備份指定庫中的一個或多個表數據,不包含庫對象xtrabackup物理熱備完全恢復
先登錄到數據庫,再執行 source XXX.sql (如果sql文件是只備份了表數據的文件,需要先創建庫并 use 切換庫后再執行)mysql -uXXX -pXXX < XXX.sql         cat XXX.sql | mysql -uXXX -pXXX                          恢復庫
mysql -uXXX -pXXX 庫名 < XXX.sql    cat XXX.sql | mysql -uXXX -pXXX 庫名                     恢復表增量備份
通過刷新二進制日志間接實現增量備份
mysqladmin -uXXX -pXXX flush-logs查看二進制日志內容
mysqlbinlog --no-defaults --base64-output=decode-rows -v <BINLOG>使用二進制日志增量恢復
mysqlbinlog --no-defaults <BINLOG> | mysql -uXXX -pXXX斷點恢復
基于位置點恢復
mysqlbinlog --no-defaults --start-position='開始位置點' --stop-position='結束位置點'  <BINLOG> | mysql -uXXX -pXXX基于時間點恢復
mysqlbinlog --no-defaults --start-datetime='YYYY-mm-dd HH:MM:SS' --stop-position='YYYY-mm-dd HH:MM:SS'  <BINLOG> | mysql -uXXX -pXXX如果需要恢復到某條sql語句之前的所有數據,就stop在這個語句的位置點或時間點之前
如果需要恢復某條sql語句及其之后的所有數據,就從這個語句的位置點或時間點開始start

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39924.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39924.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39924.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【5G射頻基本架構】

平臺框架 平臺演進及搭配 5G NR頻譜 NSA/SA/ENDC 在雙連接中&#xff0c;UE在連接狀態下可同時使用至少兩個不同基站的無線資源。對于Sprint&#xff0c;ENDC將允許設備在相同的頻段&#xff08;41 / 2.5 GHz頻段&#xff09;上同時訪問LTE和5G。 手機硬件實現ENDC方式—類似LT…

動態住宅代理IP的優勢是什么?什么地方用到?

在大數據時代的背景下&#xff0c;代理IP成為了很多企業順利開展的重要工具。代理IP地址可以分為住宅代理IP地址和數據中心代理IP地址。選擇住宅代理IP的好處是可以實現真正的高匿名性&#xff0c;而使用數據中心代理IP可能會暴露自己使用代理的情況。 住宅代理IP是指互聯網服務…

數據庫系統概論 | 觸發器代碼 | 行級觸發器 | 語句級觸發器

觸發器 這篇博客拿兩個例子來解釋一下什么是行級觸發器和語句級觸發器。 **例子1&#xff1a;**當對表SC的Grade屬性進行修改時&#xff0c;若分數增加了10%&#xff0c;則將此次操作記錄到另一個表SC_U&#xff08;Sno CHAR(8)、Cno CHAR(5)、Oldgrade SMALLINT、Newgrade S…

Flink 窗口觸發器(Trigger)(一)

Flink 窗口觸發器(Trigger)(一) Flink 窗口觸發器(Trigger)(二) Flink的窗口觸發器&#xff08;Trigger&#xff09;是流處理中一個非常關鍵的概念&#xff0c;它定義了窗口何時被觸發并決定觸發后的行為&#xff08;如進行窗口數據的計算或清理&#xff09;。 一、基本概念 …

[數據集][目標檢測]人員狀態跑睡抽煙打電話跌倒檢測數據集4943張5類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;4943 標注數量(xml文件個數)&#xff1a;4943 標注數量(txt文件個數)&#xff1a;4943 標注…

[Leetcode 136][Easy]-只出現一次的數字

目錄 題目描述 具體思路 題目描述 原題鏈接 具體思路 ①首先看到數組中重復的數字&#xff0c;想到快慢指針&#xff0c;但是數組的元素是亂序的不好求。因此先對數組排序。使用了STL庫的sort函數&#xff0c;時間復雜度O(nlogn)不符合題目要求&#xff0c;空間復雜度O(1)。…

Pytorch學習之torch.split函數

Pytorch學習之torch.split函數 一、簡介 torch.split用于將一個張量&#xff08;tensor&#xff09;沿指定維度&#xff08;dim&#xff09;拆分為多個子張量。這個函數對于處理需要按塊拆分數據的任務非常有用&#xff0c;例如在自然語言處理和圖像處理中的數據預處理。 二…

RXMH2 RK223 069 AS大容量中間繼電器 板前接線 約瑟JOSEF

RXMH2大容量中間繼電器型號&#xff1a; RXMH2 RK 223 067大容量中間繼電器&#xff1b; RXMH2 RK 223 068大容量中間繼電器&#xff1b; RXMH2 RK 223 069大容量中間繼電器&#xff1b; RXMH2 RK 223 070大容量中間繼電器&#xff1b; 用途 用于電力系統二次回路及工業自…

基于Hadoop平臺的電信客服數據的處理與分析③項目開發:搭建Kafka大數據運算環境---任務11:基礎環境準備

任務描述 任務主要是安裝配置基礎環境&#xff0c;主要內容包括&#xff1a; 1、安裝java Kafka和ZooKeeper都需要安裝Java環境&#xff0c;推薦至少Java8及以上版本 2、安裝ZooKeeper ZooKeeper是Kafka集群的必要組件 3、安裝kafka Kafka版本包括使用的scala語言版本和kafka版…

Ubuntu22.04上Docker的安裝

1. 使用APT安裝 首先安裝HTTPS傳輸的軟件包和CA證書&#xff0c;確保軟件下載過程中不被篡改。 sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y然后&#xff0c;使用國內源&#xff0c;并添加軟件源的 GPG 密鑰以防…

Java面試題:討論持續集成/持續部署的重要性,并描述如何在項目中實施CI/CD流程

持續集成/持續部署&#xff08;CI/CD&#xff09;的重要性 持續集成&#xff08;Continuous Integration, CI&#xff09; 和 持續部署&#xff08;Continuous Deployment, CD&#xff09; 是現代軟件開發的重要實踐。這些方法通過自動化構建、測試和部署過程&#xff0c;顯著…

Ubuntu 用戶配置

環境信息 系統版本Ubuntu16.04.1-Ubuntu x86_64 創建用戶組 新建一個用戶組&#xff0c;GID為888。 sudo addgroup –g 888 組名刪除用戶組 sudo delgroup 組名創建用戶 username 為用戶名&#xff0c;執行后系統會提示輸入新用戶的密碼&#xff0c;后續輸入其他信息&#xff0…

代碼隨想錄day34 貪心(5)

56. 合并區間 - 力扣&#xff08;LeetCode&#xff09; 寫法一&#xff1a;維護right和left兩個數作為當前區間的左右邊界 class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key lambda x: x[0])left intervals[0][0]ri…

番外1:企業數據

數據類別說明 企業中除了主數據和次級數據外,企業中還有其他一些常見的數據分類,這些數據類型根據其特定的用途和性質,在企業的各個功能和部門中起著重要作用。 主數據(Master Data) 主數據是企業中核心、長期存在且在整個組織中廣泛使用的關鍵數據。主數據具有以下特征:…

Vue2和Vue3的區別Vue3的組合式API

一、Vue2和Vue3的區別 1、創建方式的不同&#xff1a; &#xff08;1&#xff09;、vue2:是一個構造函數&#xff0c;通過該構造函數創建一個Vue實例 new Vue({})&#xff08;2&#xff09;、Vue3:是一個對象。并通過該對象的createApp()方法&#xff0c;創建一個vue實例。 Vue…

RAG技術下的文檔智能檢索

在數字化浪潮的推動下&#xff0c;信息檢索已成為我們日常生活中不可或缺的一部分。然而&#xff0c;隨著數據量的爆炸式增長&#xff0c;如何快速精準地從海量文檔中檢索出有價值的信息&#xff0c;成為了一個巨大的挑戰。本文將帶您走進 Pinecone 向量數據庫的世界&#xff0…

AIGC到底如何改變創意設計?

在當今數字化時代&#xff0c;AIGC&#xff08;生成式人工智能&#xff09;技術的崛起對創意設計領域產生了深遠的影響。AIGC不僅為設計師提供了新的工具和方法&#xff0c;還改變了傳統的設計流程和思維方式。 傳統的設計過程中&#xff0c;設計師需要耗費大量時間在繪圖、修…

npm install puppeteer 報錯 npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated解決辦法

npm install puppeteer 報錯如下&#xff1a; npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated. Use PUPPETEER_DOWNLOAD_BASE_URL instead. npm ERR! Error: ERROR: Failed to set up Chrome v126.0.6478.126! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to sk…

【Linux進程】僵尸進程與孤兒進程

前言 僵尸進程和孤兒進程是Linux中極為重要的兩個種進程狀態, 本文將會圍繞這三個問題: 是什么? 為什么? 如何產生的? 詳細的介紹這兩種進程; 以及一些使用場景. 僵尸進程 在了解孤兒進程之前, 需要先引入僵尸進程的概念; 什么是僵尸進程? 僵尸進程: 就是處于僵死狀態的進…

揭秘代理IP:原理、優勢與應用場景全面解析

隨著數字化進程的加速&#xff0c;網絡安全已經成為現代社會不可或缺的一環。無論是政府機構、企業還是個人用戶&#xff0c;都面臨著越來越多的網絡威脅。本文將深入探討網絡安全的重要性、面臨的主要威脅以及應對策略&#xff0c;旨在為讀者提供一個全面的網絡安全視角。 1.…