mysql數據庫快照增量備份(快照 增量備份)

本文目錄一覽:

MYSQL備份:啟用二進制日誌功能的MYSQL增量備份

小量的數據庫我們可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,我們就不太可能每天進行一次完整備份了,而且改成每周一次完整備份,每天一次增量備份類似這樣的備份策略。增量備份的原理就是使用了mysql的二進制日誌,所以我們必須啟用二進制日誌功能。

一、增量備份

1、比如我們在星期天下午11點做一次完整備份:

mysqldump

–single-transaction

–flush-logs

–master-data=2

–all-databases

fullbackup_sunday_11_PM.sql

在sql文件中我們會看到兩行:

Position

to

start

replication

or

point-in-time

recovery

from

CHANGE

MASTER

TO

MASTER_LOG_FILE=’bin-log.000002′,

MASTER_LOG_POS=107;

第二行包含了我們需要的信息,是指備份後所有的更改將會保存到bin-log.000002二進制文件中。

2、然後在星期一下午11點我們來做一次增量備份:

mysqladmin

flush-logs

這時將會產生一個新的二進制日誌文件bin-log.000003,bin-log.000002則保存了自星期天下午11點到現在的所有更改,我們只需要把這個文件備份到安全的地方就行了。然後星期二我們又做增量備份,還是執行同樣的命令,這時我們保存bin-log.000003文件。

二、恢復備份

比如星期三中午12點出現了故障,這時需要恢復,我們首先導入星期天的完整備份:

mysql

fullbackup_sunday_3_AM.sql

接着我們導入星期一和星期二的增量備份:

mysqlbinlog

bin-log.000002

bin-log.000003

mysql

這時我們已經恢復了所有備份數據,我們還可以找到bin-log.000004,進一步恢復最新的數據。

MySQL的備份與還原,非常規備份,全量備份,增量備份

1:官方百萬級別的測試數據庫:

官方測試數據庫github網址:

下載到目錄,解壓即可,運行命令:

2:自己創建簡單測試數據庫:

快速隨機生成測試語言的網站:

選擇sql和想生成的字段,點擊生成Generate!生成即可。

在MySQL輸入生成的語句即可。

3:測試備份還原時用到的命令

刪庫跑路測試(先備份好)

還原後查詢庫的表數據是否完整。

採用複製整個數據存放目錄

1:查看數據庫數據存放位置

有兩種方法:

1):在數據庫中用命令 show variables like ‘datadir’; 查看

2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認為 /var/lib/mysql/ 位置

Linux中查看配置文件

2:複製目錄或者目錄下某個數據庫名

3:還原時直接複製文件夾到數據庫目錄即可

mysqldump又可叫做全量備份。

參數 –databases 同 -B ,單獨一個庫,也可省略。

1、備份命令mysqldump格式

格式:mysqldump -h主機名 -P端口 -u用戶名 -p密碼 database 數據庫名 文件名.sql

備份testDatabase數據庫

2、備份MySQL數據庫為帶刪除表的格式

備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫。

3、直接將MySQL數據庫壓縮備份

備份並壓縮

4、備份MySQL數據庫某個(些)表

備份testDatabase中的myTable表,不需要用參數 –databases 或者 -B

5、同時備份多個MySQL數據庫

同時備份testDatabase和 employees兩個庫

6、備份服務器上所有數據庫

參數 –all-databases 同 -A

7、還原MySQL數據庫的命令

1) 不指定數據名還原,默認生成原數據庫名稱,還原所有數據庫。

2) 指定數據名還原,還原指定單個數據庫,需在數據庫種預先創建一個testDatabase名稱。

3) 還原壓縮的MySQL數據庫

4) 進入數據庫用source導入

增量備份是針對於數據庫的bin-log日誌進行備份的,增量備份是在全量的基礎上進行操作的。增量備份主要是靠mysql記錄的bin-log日誌。

1:查看是否開啟bin-log日誌

進入mysql輸入命令可查看。

顯示如下為開啟狀態,日誌文件在/var/lib/mysql/以binlog.00001的格式保存。

如未開啟,需要在配置文件種配置

2:查看目前使用的bin-log日誌文件

進入mysql查看命令。

顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。

查看當前testDatabase的表myTable數據如下,

3:刷新日誌,使用新的日誌文件(備份)

在命令端執行命令

日誌文件從 binlog.000022 變為 binlog.000023

這時相當與已經備份成功,備份文件即為上次的binlog.000022日誌文件。

4:刪除數量,從日誌還原數據

1) 刪除ABC行

查詢以及沒有ABC行列。

2) 恢複數據ABC行

退出mysql,在命令端用mysqlbinlog命令恢復到binlog.000022日誌狀態。

進入數據庫再次查看數據,ABC已經恢復。

增量備份完成。

有什麼簡單的 mysql 增量備份方案

1.在 /etc/my.cnf 下面設置開啟bin-log

編輯

vim /etc/my.cnf

[mysqld]

binlog_format = MIXED //binlog日誌格式

log_bin =目錄/mysql-bin.log //binlog日誌名

expire_logs_days = 7 //binlog過期清理時間

#max_binlog_size 100m //binlog每個日誌文件大小 最大值和默認是1個G

binlog-do-db=game #需要備份的數據庫名,如果備份多個數據庫,重複設置這個選項即可

binlog-do-db=platform #

#binlog-ignore-db=不需要備份的數據庫,如果備份多個數據庫,重複設置這個選項即可

2.創建遠程登陸數據庫帳號

grant all privileges on game.* to ‘jack’@’192.168.10.56’ identified by ‘admin’

grant all privileges on platform.* to ‘jack’@’192.168.10.56’ identified by ‘admin’

3.將服務器上的數據,導入一份進遠程服務器中

mysqldump -ujack -padmin -h192.168.10.38 備份數據庫地址(/home/mysql/db/mysql.sql);

4.寫Linux 計劃任務:

vim /etc/crontab

在底部加入

0 3 * * * root sh /home/wwwroot/sh/mysqlbackup.sh #每天3點以root帳號的權限執行目錄下的sh

重啟服務

如何實現Mysql數據庫的差異性備份和增量備份?

Ø  首先,我們需要開啟MySQL服務器的二進制日誌功能,其實現方法有很多種,最常用的是在MySQL的配置文件的mysqld項中加入log-bin=[filepath]項;也可以使用mysqld –log-bin=[filepath]重新啟動MySQL服務器。

Ø  其次,使用mysqldump對數據庫進行完全備份,它可以實現對數據據的聯機,非阻塞的熱備份,不會影響其他進程對數據庫的讀寫操作。(參考指令:mysqldump -uroot –password=123 –single-transaction –flush-logs –master-data=2 –all-databases –delete-master-logs d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)

Ø  第三,使用flush logs指令刷新創建新的二進制日誌。可以通過mysqladmin flush logs或者flush logs語句實現。最方便有效的方法是將它做成批處理文件,然後讓操作系統定期執行。

Ø  使用mysql *.sql進行完全備份的恢復。

Ø  使用mysqlbinlog logs-bin.[0-9]* | mysql進行增量備份的恢復。一般的,假設我們周日下午三點進行了完全備份並生成備份文件full_backup_20100415_3_PM.sql,周一周二中午一點進行了兩次增量備份,分別生成增量備份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00數據庫發生崩潰,需要進行數據庫恢復,此時正在記錄的二進制日誌為inc_backup_1_PM.0009,我們還需要恢復其中記錄的操作。具體的恢復操作為:

mysql full_backup_20100415_3_PM.sql

mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009

u  具體應用(結合T8項目)

根據上述分析,我們在T8項目使用MySQL增量備份,也需要三個步驟:

Ø  首選修改MySQL啟動配置文件my.cnf,在其中的mysqld項中增加log-bin選項,重新啟動MySQL 服務器以開啟二進制日誌功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如圖所示:

Ø  編寫完全備份可執行文件腳本:

Ø  編寫增量備份可執行文件腳本:

Ø  執行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。

Ø  執行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。

其中full_backup_20100417_1_pm. sql和t8server-bin..000002分別是完全備份和增量備份文件。

要進行備份文件的恢復,只需執行命令:

u  總結

MySQL提供了很方便的完全+增量備份實現方法,我們只需調用系統內置的方法或者作出一些細微的配置就可以對MySQL數據庫進行備份和恢復。對於MyISAM數據庫和InnoDB數據庫,都可以通過mysqldump實現數據庫的完全邏輯備份,通過啟動二進制日誌(binary logs),可以記錄一個時間段內對數據庫的所有可能更新的操作,從而通過flush logs創建新的日誌而實現增量備份。

win7系統下mysql如何增量備份

增量備份其實就是開啟二進制日誌,保留每個操作的sql語句,然後定時備份那個日誌文件,並進行刷新以便生成新的日誌文件

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130764.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:29
下一篇 2024-10-03 23:29

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • 用什麼來備份 ssbackup 文件?

    SSBackup是一種用於存儲數據的文件格式,可以在Snapshots和Debian GNU / Linux系統上使用。備份文件是大多數用戶和數據中心管理員的關鍵需求。通過備份,可…

    編程 2025-04-27
  • Think-ORM數據模型及數據庫核心操作

    本文主要介紹Think-ORM數據模型建立和數據庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係數據庫之…

    編程 2025-04-27
  • 如何使用Python將CSV文件導入到數據庫

    CSV(Comma Separated Values)是一種可讀性高、易於編輯與導入導出的文件格式,常用於存儲表格數據。在數據處理過程中,我們有時需要將CSV文件導入到數據庫中進行…

    編程 2025-04-27
  • Python批量導入數據庫

    本文將介紹Python中如何批量導入數據庫。首先,對於數據分析和挖掘領域,數據庫中批量導入數據是一個必不可少的過程。這種高效的導入方式可以極大地提高數據挖掘、機器學習等任務的效率。…

    編程 2025-04-27
  • Activiti 6自動部署後不生成數據庫act_hi_*的解決方法

    本文將從多個方面詳細闡述Activiti 6自動部署後不生成數據庫act_hi_*的問題,並提供對應的代碼示例。 一、問題分析 在使用Activiti 6部署流程後,我們發現act…

    編程 2025-04-27

發表回復

登錄後才能評論