mairdb自動備份 mariadb自動備份

2021-10-13 08:47:44 字數 4585 閱讀 6818

這裡有一點需要注意,在 mariadb10.3.x 及以上的版本用 percona xtrabackup 工具會有問題。原因可能是 mariadb10.3 以上版本的 redo 日誌格式和之前不同了。

percona 的官方文件:

mariabackup 的官方文件:

percona xtrabackup:

一、安裝yum install mariadb-backup

apt-get install mariadb-backup

zypper install mariadb-backup

二、使用

2.1、語法格式:mariabackup [--defaults-file=#] [--backup | --prepare | --copy-back | --move-back] [options]

2.2、常用選項-backup

備份資料庫。

使用此命令選項,mariabackup 會對您的資料庫執行備份操作。備份將寫入目標目錄,由 - -target-dir 選項設定。

-copy-back

將備份還原到資料目錄。

使用此命令,mariabackup 將備份從目標目錄複製到資料目錄,如 - -datadir 選項所定義。您必須在執行此命令之前停止 mariadb 伺服器。資料目錄必須為空。如果要使用備份覆蓋資料目錄,請使用該 - -force-non-empty-directories 選項。

請記住,在恢復備份之前,首先需要使用該 - -prepare 選項執行 mariabackup 。在完全備份的情況下,這使得檔案的時間點保持一致。使用增量備份,這會將增量應用於基本備份。準備好備份後,您可以執行 - -copy-back 將其應用於 mariadb server。

執行該 - -copy-back 命令會將備份檔案複製到資料目錄。如果要儲存備份以供日後使用,請使用此命令。如果您不想儲存備份以供日後使用,請使用該 - -move-back 命令。

-defaults-file

定義包含預設配置的檔案的路徑。

h, –host

定義要備份的 mariadb 伺服器的主機

-incremental-basedir

定義是否要增加備份

-incremental-dir

定義是否要增加準備好的備份

將此選項與 - -prepare 命令選項一起使用會導致 mariabackup 增加準備好的備份,而不是從頭開始複製。增量將. delta 檔案和日誌檔案應用到目標目錄中。

-move-back

將備份還原到資料目錄。

使用此命令,mariabackup 將備份從目標目錄移動到資料目錄,如–datadir 選項所定義。您必須在執行此命令之前停止 mariadb 伺服器。資料目錄必須為空。如果要使用備份覆蓋資料目錄,請使用該–force-non-empty-directories 選項。

請記住,在恢復備份之前,首先需要使用該–prepare 選項執行 mariabackup 。在完全備份的情況下,這使得檔案的時間點保持一致。使用增量備份,這會將增量應用於基本備份。準備好備份後,您可以執行–move-back 將其應用於 mariadb server。

p, –password

定義用於連線 mariadb server 的密碼。

p, –port

定義要連線的伺服器端口

-prepare

準備現有備份以還原到 mariadb 伺服器 。

mariabackup –backup 在目標目錄中的操作期間生成的檔案尚未準備好在伺服器上使用。在將資料還原到 mariadb 之前,首先需要準備備份。

在完全備份的情況下,檔案不是時間點一致的,因為它們是在不同時間拍攝的。如果您嘗試在未先準備資料的情況下還原資料庫,innodb 會將新資料拒絕為損壞。使用該–prepare 命令執行 mariabackup 會使資料準備就緒,因此您可以將其還原到 mariadb server。使用增量備份時,需要使用–prepare 命令和–incremental-dir 選項通過增量備份中的增量更新基本備份。

s, –socket

定義用於連線本地資料庫的套接字

-user

定義用於連線 mariadb 伺服器的使用者名稱

-version-check

啟用版本檢查。

使用此選項,您可以啟用 mariabackup 版本檢查

-version

列印版本資訊。

三、備份

3.1 全量備份mariabackup --backup --target-dir /home/back/$(date '+%y-%m-%d')_fullbackup --user root --password 123456

以上**將會將資料庫全量備份到/home/back/這個目錄下

3.2 增量備份mariabackup --backup --target-dir /backup/inc1 --incremental-basedir /backup/fullbackup --user root --password centos

/backup/inc1為增量備份目錄, /backup/fullbackup為全備份目錄

四、恢復

保證要還原的資料庫伺服器的 data 目錄為空

4.1 全量恢復準備全備資料

mariabackup --prepare --target-dir 全量備份目錄 --user 使用者名稱 --password 密碼

還原資料 (保證要還原的資料庫伺服器的 data 目錄為空)

mariabackup --copy-back --target-dir 全量備份目錄 --user 使用者名稱 --password 密碼

修改 data 目錄許可權

因為備份的使用者是 root,還原過去的時候屬主沒有變化,所以要吧還原過去的資料的屬主和屬組修改一下

chown -r mysql:mysql /usr/local/mariadb/data

4.2 增量恢復準備全備資料

將增量備份與全備合併

如果有多個增量備份,則多次執行該命令

mariabackup --prepare --target-dir 全量備份目錄 \

--user 使用者名稱 --password 密碼 \

還原資料 (保證要還原的資料庫伺服器的 data 目錄為空)

mariabackup --copy-back --target-dir 全量備份目錄 --user 使用者名稱 --password 密碼

修改 data 目錄許可權

因為備份的使用者是 root,還原過去的時候屬主沒有變化,所以要吧還原過去的資料的屬主和屬組修改一下

chown -r mysql:mysql /usr/local/mariadb/data

五、備份指令碼

每隔7天將增量備份合併為全量備份

5.1 備份指令碼#!/bin/bash

dst="/var/db/back/full_back"

xbk="/usr/bin/mariabackup"

user="root"

password="123456"

# 1 base + `max' incrementals

max=7

mkdir -p $dst || exit 1

if [ ! -d $dst/0 ]; then

# create base, 0/

echo "first"

# $xbx --backup --target-dir $ --user $ --password $

$xbk --backup --target-dir $/0 --user $ --password $ || exit $?

exit 0

fiifs=$'\n'; for x in $(ls -1 -t $dst); do

unset ifs

# create incremental, 1/, 2/, ..., $max/

echo "merge"

$xbk --backup --target-dir $/$((x+1)) --incremental-basedir $/$x --user $ --password $ || /$((x+1)); exit $ret; }

if (($x+1 >= $max)); then

break

fiexit 0

done

errdir="error_$(date +%y%m%d_%h%m%s)"

ifs=$'\n'; for x in $(ls -1 -t -r $dst); do

echo "error"

unset ifs

if (($x == 0)); then

continue

fiif [ $? -ne 0 ]; then

# error occurs and cleanup

mkdir -p $dst/$errdir && mv $dst/[0-9]* $dst/$errdir

exit 1

else

rm -rf $/$x

fidone

5.2 建立定時任務crontab -e

輸入以下內容

* 0 * * * 備份指令碼路徑

檢視任務是否被加入定時器

crontab -l

mysql 自動備份許可權 Mysql 自動備份

很簡單的乙個自動備份方案 bas 件 backup.sh bin bash dbuser root dbpwd 123456 dbname jam00 delbackpath usr local mysql backup dbname date d 7 days ago y m d sql.gz r...

mysql自動備份開啟 MySQL自動備份

mysql user root 使用者名稱 mysql password password 密碼 mysql host localhost ip mysql port 3306 埠號 mysql charset utf8 編碼方式 backup db arr db name 要備份的資料庫名稱,多個...

mysql自動備份庫 MySQL自動備份整庫指令碼

該指令碼支援自動備份,自動上傳到ftp伺服器,備份失敗自動傳送報警郵件 bin sh create by jianglei.yu on 20160421 使用測指令碼需要先安裝mutt郵件傳送工具。使用使用自動化安裝。詳細請參考 define mysql environments hostname ...