久久天天躁狠狠躁夜夜免费观看,精品国产粉嫩内射白浆内射双马尾,久久国产欧美日韩精品,久久久久久性高,激情欧美成人久久综合

MySQL備份方案之Xtrabackup詳細(xì)解答

JSON 2024-01-08 17:06:19 524

我們熟知的MySQL備份方案有:mysqldump、Xtrabackup、主從復(fù)制、文件系統(tǒng)快照等方案,而我們要使用哪一種需要根據(jù)具體情況去選擇。mysqldump是MySQL自己提供的邏輯備份工具,能導(dǎo)出數(shù)據(jù)庫中的數(shù)據(jù)、表結(jié)構(gòu)和其他信息,但是會對數(shù)據(jù)庫性能產(chǎn)生一定的影響,尤其是在數(shù)據(jù)量大的情況下,因為它需要執(zhí)行SQL查詢并將結(jié)果寫入備份文件,這可能會對數(shù)據(jù)庫服務(wù)器負(fù)載增加,當(dāng)然也有優(yōu)點,備份的數(shù)據(jù)庫文件可移植性好,可以在不同版本和架構(gòu)的 MySQL 服務(wù)器上使用。而Xtrabackup是一種物理備份工具,物理備份就是直接復(fù)制數(shù)據(jù)庫文件的方式來進(jìn)行備份,這種備份方法相對于邏輯備份(如mysqldump)來說通常更快速、占用的存儲空間較小。

在這里我們使用Xtrabackup備份,Xtrabackup主要有兩個工具:xtrabackup、innobackupex

xtrabackup下載安裝

# 下載到服務(wù)器
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/tarball/percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
# 解壓
tar zxvf percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
# 把文件放到要存儲的位置
mv percona-xtrabackup-2.4.7-Linux-x86_64 /usr/local/xtrabackup
# 創(chuàng)建軟連接(可以不操作)
ln -s /usr/local/xtrabackup/bin/* /usr/bin/

全量備份方案

1.這里備份執(zhí)行備份操作命令,按照步驟來。指定mysql配置文件,輸入賬號密碼,指定sock文件 ,指定數(shù)據(jù)備份目錄

??????注意:(./percona-xtrabackup-2.4.7-Linux-x86_64) 我是把名字改了,改成了(xtrabackup),所以要用(./xtrabackup)??????

# 正常情況下命令
./percona-xtrabackup-2.4.7-Linux-x86_64/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password='password' -S /var/lib/mysql/mysql.sock /data/mysql_bak/
# 改了文件名字之后
./xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password='password' -S /var/lib/mysql/mysql.sock /data/mysql_bak/

2.tar zcvf 備份文件名.tar.gz 備份文件名

tar zcvf 2024-01-08_00-05-12.tar.gz 2024-01-08_00-05-12

全量數(shù)據(jù)恢復(fù)(停機恢復(fù))

第一種

1.先解壓數(shù)據(jù)備份文件

tar xf 2024-01-08_00-05-12.tar

2.數(shù)據(jù)恢復(fù)我們還是使用xtrabackup,數(shù)據(jù)備份文件解壓完之后,我們需要對全量備份進(jìn)行事務(wù)的處理

./xtrabackup/bin/xtrabackup --apply-log /data/mysql_bak/2024-01-08_00-05-12

3.事務(wù)處理完之后把mysql停掉

# 我這里系統(tǒng)是centos6.9,所以用如下命令
service mysqld stop

4.處理完事務(wù)的備份文件mv(mv:mv命令可以用來移動文件或者將文件改名)到mysql的數(shù)據(jù)文件中。然后需要對這個文件進(jìn)行授權(quán)

# 將數(shù)據(jù)移動到數(shù)據(jù)庫文件中 或者 修改一個名字
mv /data/mysql_bak/2024-01-08_00-05-12 dbfiles-2024.01.08
# 授權(quán),對當(dāng)前文件進(jìn)行授權(quán),這個文件我一般和mysql數(shù)據(jù)文件目錄放在一起
chown -R mysql. dbfiles-2024.01.08

第二種

./xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysql_bak/2024-01-08_00-05-12

--copy-back:做數(shù)據(jù)恢復(fù)時將備份數(shù)據(jù)文件拷貝到MySQL服務(wù)器的datadir 配置文件指向的數(shù)據(jù)目錄

??????注意:--copy-back參數(shù)需要數(shù)據(jù)目錄為空??????

全量數(shù)據(jù)恢復(fù)(在線恢復(fù))

1.使用 --apply-log 選項,執(zhí)行事務(wù)日志的恢復(fù)

./percona-xtrabackup-2.4.7-Linux-x86_64/bin/innobackupex --defaults-file=/etc/my.cnf --apply-log /data/mysql_bak/

2.把MySQL數(shù)據(jù)目錄刪除,然后直接執(zhí)行以下命令

./xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysql_bak/2024-01-08_00-05-12

--copy-back:做數(shù)據(jù)恢復(fù)時將備份數(shù)據(jù)文件拷貝到MySQL服務(wù)器的datadir 配置文件指向的數(shù)據(jù)目錄

??????注意:--copy-back參數(shù)需要數(shù)據(jù)目錄為空??????

3.更改 MySQL 數(shù)據(jù)目錄的所有者

chown -R mysql:mysql /var/lib/mysql

4.重啟 MySQL 服務(wù)

重啟 MySQL 服務(wù),使更改生效:

service mysql restart

增量備份方案

??????注意:xtrabackup和MySQL版本不匹配需要添加: --no-server-version-check ??????

1.這里使用xtrabackup進(jìn)行全量備份 ,前面全量備份是使用innobackupex進(jìn)行全量備份

# 這里要寫用戶名和密碼,并且要自己指定文件夾名稱(20240108)
./xtrabackup/bin/xtrabackup --backup -S /var/lib/mysql/mysql.sock -u root -p password --target-dir=/data/mysql_bak/full/20240108

2.在/data/mysql_bak/文件中創(chuàng)建一個增量備份目錄

cd /data/mysql_bak
mkdir increment

3.進(jìn)行增量備份

進(jìn)行增量備份要指定是依照那一個全量備份進(jìn)行增量備份,說白了就是增量備份是在全量備份的基礎(chǔ)之上進(jìn)行

./xtrabackup/bin/xtrabackup --backup -S /var/lib/mysql/mysql.sock -u root -p password --target-dir=/data/mysql_bak/increment/inc-20240108 --incremental-basedir=/data/mysql_bak/full/20240108

4.增量備份文件備份好了之后需要對全量備份進(jìn)行事務(wù)處理,再將增量備份 和 全量備份文件進(jìn)行合并

??????注意:這里只給全量文件做事務(wù)處理,這里用的是xtrabackup做事務(wù)處理??????

# 對全量備份做事務(wù)處理
./xtrabackup/bin/xtrabackup --prepare --applay-log-only --target-dir=/data/mysql_bak/full/20240108
# 進(jìn)行數(shù)據(jù)合并 -> 將增量數(shù)據(jù)合并到全量數(shù)據(jù)中
./xtrabackup/bin/xtrabackup --prepare --target-dir=/data/mysql_bak/full/20240108 --incemental-dir=/data/mysql_bak/increment/inc-20240108

5.數(shù)據(jù)合并成功之后進(jìn)行恢復(fù)數(shù)據(jù)

# 先停止MySQL
service mysqld stop
# 修改配置文件my.cnf,將MySQL數(shù)據(jù)目錄指向新的數(shù)據(jù)備份文件
vim /etc/my.cnf
# 將數(shù)據(jù)移動到數(shù)據(jù)庫文件中 或者 修改一個名字
mv /data/mysql_bak/full/20240108 dbfiles-20240108
# 授權(quán),對當(dāng)前文件進(jìn)行授權(quán),這個文件我一般和mysql數(shù)據(jù)文件目錄放在一起
chown -R mysql. dbfiles-20240108
# 啟動MySQL
service mysqld start

增量備份(停機恢復(fù))

# 先停止MySQL
service mysqld stop
# 修改配置文件my.cnf,將MySQL數(shù)據(jù)目錄指向新的數(shù)據(jù)備份文件
vim /etc/my.cnf
# 將數(shù)據(jù)移動到數(shù)據(jù)庫文件中 或者 修改一個名字
mv /data/mysql_bak/full/20240108 dbfiles-20240108
# 授權(quán),對當(dāng)前文件進(jìn)行授權(quán),這個文件我一般和mysql數(shù)據(jù)文件目錄放在一起
chown -R mysql. dbfiles-20240108
# 啟動MySQL
service mysqld start

怎么恢復(fù)單獨某個表的數(shù)據(jù)

這里講兩種方式,其實都是一樣的套路

第一種:

a.從全備份中提取特定表的文件:

Percona XtraBackup創(chuàng)建的備份文件通常存儲在目標(biāo)目錄中,其中包含完整的數(shù)據(jù)庫備份。你可以在備份目錄中找到所有數(shù)據(jù)庫表的 .ibd 文件。對于 InnoDB 表,這些文件通常在

`../datadir/{database_name}/{table_name}.ibd`
cp /path/to/backup/datadir/your_database/your_table_name.ibd /path/to/restore

替換

/path/to/backup/datadir/your_database/your_table_name.ibd

為備份中你想要恢復(fù)的表的路徑,/path/to/restore 為你想要還原表的目標(biāo)目錄

b.在 MySQL 中創(chuàng)建目標(biāo)數(shù)據(jù)庫和表

在 MySQL 中創(chuàng)建目標(biāo)數(shù)據(jù)庫和表,確保表的結(jié)構(gòu)與你要恢復(fù)的表一致。

CREATE DATABASE your_database;
USE your_database;
CREATE TABLE your_table_name (...);  -- 包括表結(jié)構(gòu)

c.更正表文件的權(quán)限

如果表文件的權(quán)限不正確,需要更正它們的所有權(quán):

sudo chown mysql:mysql /path/to/restore/your_table_name.ibd

d.重建表索引

如果你導(dǎo)出的是 InnoDB 表,可能需要重新建立表的索引。在 MySQL 命令行中執(zhí)行:

ALTER TABLE your_table_name DISCARD TABLESPACE;
ALTER TABLE your_table_name IMPORT TABLESPACE;

替換 your_table_name 為你的表名。

第二種:

a.直接刪除數(shù)據(jù)存儲文件中的對應(yīng)的idb文件

rm -rf table.idb

b.然后把備份文件中對應(yīng)的文件copy過去,和第一種一樣

cp /path/to/backup/datadir/your_database/your_table_name.ibd /path/to/restore

 c.更正表文件的權(quán)限

如果表文件的權(quán)限不正確,需要更正它們的所有權(quán):

sudo chown mysql:mysql /path/to/restore/your_table_name.ibd

d.重建表索引

如果你導(dǎo)出的是 InnoDB 表,可能需要重新建立表的索引。在 MySQL 命令行中執(zhí)行:

ALTER TABLE your_table_name DISCARD TABLESPACE;
ALTER TABLE your_table_name IMPORT TABLESPACE;

替換 your_table_name 為你的表名。

??????注意:我們這里都是以InnoDB存儲引擎來測試??????

全量備份腳本

第一種

1.shell腳本寫好之后,再寫一個定時任務(wù)就OK了,這里是直接備份到`/data/mysql_bak/full/`目錄下,然后把數(shù)據(jù)打包,并且把備份的數(shù)據(jù)刪掉

#!/bin/bash
#0 3 * * * /bin/sh /data/mysql_bak-full.sh /dev/null 2>&1
# crazyitboy 20240108
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
MySQL_USER=root
MYSQL_PWD=password
BAKDIR=/data/mysql_bak/full
MONTH=$(date +%m)
DAY=$(date +%d)
YEAR=$(date +%Y)
HOUR=$(date +%H)
MIN=$(date +%M)
DRINAME=$YEAR$MONTH$DAY$HOUR$MIN
BAKDIR_MYSQL=$BAKDIR/
BAK_TAR=${DRINAME}.tar.gz
TEMP_DIR=$BAKDIR/temp_dir/

if [ ! -d "$TEMP_DIR" ]; then
    mkdir -p $TEMP_DIR
fi

/usr/local/xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=${MySQL_USER} --password=${MYSQL_PWD} -S /var/lib/mysql/mysql.sock ${TEMP_DIR}
if [ $? -eq 0 ]; then
    echo "innobackupex 備份完成!(OK?。?
else
    echo "innobackupex 備份失?。。‵AIL?。?
    exit
fi

cd ${TEMP_DIR}
PWDS=$(pwd)

if [ "${TEMP_DIR}" == "${PWDS}/" ]; then
      BAK_TAR_NAME=${BAK_TAR}
      tar -czf /data/mysql_bak/full/${BAK_TAR_NAME} *
      [ $? != 0 ] && echo "tar -czf ${BAK_TAR_NAME} ${TEMP_DIR}* -R" && exit

      echo "$TEMP_DIR 打包成功!"

    cd $BAKDIR
    RM_PWDS=$(pwd)
    if [ "${BAKDIR}/" == "${RM_PWDS}/" ]; then
        rm -rf temp_dir
    fi

else
    echo "$TEMP_DIR 打包失?。?
fi

2.然后執(zhí)行定時任務(wù),每天3點執(zhí)行

0 3 * * * /bin/sh /data/mysql_bak/mysql_bak-full.sh /dev/null 2>&1

第二種

1.使用vim /etc/mysql_bak-full.sh命令創(chuàng)建并編輯腳本

#!/bin/bash -
rm -rf /data/mysql_bak/full
xtrabackup --login-path=bkpuser_local --backup --target-dir=/data/mysql_bak/full

2.使用chomd命令賦予/etc/mysql_bak-full.sh腳本執(zhí)行權(quán)限

chomd 755 /etc/mysql_bak-full.sh

3.我們計劃每周日23點對MySQL進(jìn)行一次全量備份

# 使用 crontab -e 添加周期備份任務(wù)
crontab -e
0 23 * * 0 /bin/bash /etc/mysql_bak-full.sh
# 使用 crontab -l 查看周期任務(wù)
crontab -l

增量備份腳本

??????注意:這里編寫用于第N次(這里以第2次為例)增量備份腳本,因為增量備份我這里是每天都需要備份??????

1.使用vim /etc/mysql_bak-inc2.sh命令創(chuàng)建并編輯腳本

#!/bin/bash -
rm -rf /data/mysql_bak/increment/inc2
xtrabackup --login-path=bkpuser_local --backup --target-dir=/data/mysql_bak/increment/inc2 --incremental-basedir=/data/mysql_bak/increment/inc1

2.使用chomd命令賦予/etc/mysql_bak-inc2.sh腳本執(zhí)行權(quán)限

chomd 755 /etc/mysql_bak-inc2.sh

3.我們計劃每周一到周六23點對MySQL進(jìn)行一次增量備份

# 使用 crontab -e 添加周期備份任務(wù)
crontab -e
# 周一
0 23 * * 1 /bin/bash /etc/mysql_bak-inc1.sh
# 周一,以此類推
0 23 * * 2 /bin/bash /etc/mysql_bak-inc2.sh
# 使用 crontab -l 查看周期任務(wù)
crontab -l

這里周二到周六腳本命名以此類推,1改成2,2改成3

# 查看定時任務(wù)狀態(tài)/停止定時任務(wù)/啟動定時任務(wù)/重啟定時任務(wù)
service crond status/stop/start/restart

版權(quán)所屬:SO JSON在線解析

原文地址:http://suancuo.cn/blog/484.html

轉(zhuǎn)載時必須以鏈接形式注明原始出處及本聲明。

本文主題:

如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。

關(guān)于作者
一個低調(diào)而悶騷的男人。
相關(guān)文章
如何解析JSON數(shù)據(jù)(詳細(xì)解答)
條形碼生成是什么原理(詳細(xì)解答)
做網(wǎng)站時域名有哪些重要性?詳細(xì)解答
做網(wǎng)站時域名有哪些重要性?詳細(xì)解答
RC4加密算法詳細(xì)解答
SEO SpringMVC redirect 301,301和302區(qū)別詳細(xì)講解
不會算房貸利息怎么辦?詳細(xì)解答
不會算房貸利息怎么辦?詳細(xì)解答
JavaScript對象詳細(xì)剖析
JavaScript對象詳細(xì)剖析
最新文章
計算機網(wǎng)絡(luò)的相關(guān)內(nèi)容 354
SOJSON V6 JavaScript 解密技巧與分析 5940
微信客服人工電話95068:如何快速解封微信賬號(2025最新指南) 11885
Java Http請求,HttpURLConnection HTTP請求丟失頭信息,Head信息丟失解決方案 5052
實用API合集分享:教你輕松獲取IP地址的API合集 8839
Linux I/O重定向 6705
Ruby 循環(huán) - while、for、until、break、redo 和 retry 3990
Node.js:全局對象 3604
如何使用終端檢查Linux上的內(nèi)存使用情況 3779
JavaScript對象詳細(xì)剖析 3252
最熱文章
免費天氣API,天氣JSON API,不限次數(shù)獲取十五天的天氣預(yù)報 745370
最新MyEclipse8.5注冊碼,有效期到2020年 (已經(jīng)更新) 703112
蘋果電腦Mac怎么恢復(fù)出廠系統(tǒng)?蘋果系統(tǒng)怎么重裝系統(tǒng)? 678428
Jackson 時間格式化,時間注解 @JsonFormat 用法、時差問題說明 561958
我為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 511823
Elasticsearch教程(四) elasticsearch head 插件安裝和使用 483716
Jackson 美化輸出JSON,優(yōu)雅的輸出JSON數(shù)據(jù),格式化輸出JSON數(shù)據(jù)... ... 299543
Java 信任所有SSL證書,HTTPS請求拋錯,忽略證書請求完美解決 246654
Elasticsearch教程(一),全程直播(小白級別) 232088
227528
支付掃碼

所有贊助/開支都講公開明細(xì),用于網(wǎng)站維護:贊助名單查看

查看我的收藏

正在加載... ...