成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于自動化運(yùn)維平臺實(shí)現(xiàn)mysql物理備份

IT那活兒 / 988人閱讀
基于自動化運(yùn)維平臺實(shí)現(xiàn)mysql物理備份
點(diǎn)擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!??!
背 景

某客戶現(xiàn)場的MySQL始終沒有一套完整備份體系,常年處于裸奔的狀態(tài),如出現(xiàn)極端情況,例如主機(jī)故障無法恢復(fù),那數(shù)據(jù)庫數(shù)據(jù)將全部丟失,出于數(shù)據(jù)安全等考慮,經(jīng)與客戶溝通將在自動化運(yùn)維平臺上搭建一套MySQL備份流程。

MySQL物理備份流程

自動化運(yùn)維管理平臺:

  • 支撐八大運(yùn)維場景自動化(如下圖所示),覆蓋常見運(yùn)維工作。
  • 靈活的可視化任務(wù)編排及調(diào)度,操作、資源、工具、人員的任意編排調(diào)度,構(gòu)建多方位自動化能力。
  • 內(nèi)置大量運(yùn)維操作原子場景,支持常見數(shù)據(jù)庫、中間件、云平臺、網(wǎng)絡(luò)設(shè)備等運(yùn)維操作自動化能力。
MySQL物理備份流程實(shí)現(xiàn)準(zhǔn)備
1. 創(chuàng)建備份用戶
SQL> create user monmydb@localhost identified with mysql_native_password by XXXXX;
SQL> grant process on *.* to monmydb@localhost;
SQL> grant super on *.* to monmydb@localhost;
SQL> grant replication client on *.* to monmydb@localhost;
SQL> grant select on *.* to monmydb@localhost;
SQL>flush privileges;
SQL> show grants for monmydb@localhost;
2. 創(chuàng)建相關(guān)目錄
  • mkdir -p /mysql/dacp/mysql/mysqlbak/scripts  #備份腳本目錄;
  • mkdir -p /mysql/dacp/mysql/mysqlbak/data/full  #備份文件目錄;
  • mkdir -p /mysql/dacp/mysql/mysqlbak/data/log  #備份日志目錄。
將MySQL物理備份腳本上傳至備份腳本目錄。
3. 安裝物理備份軟件
將軟件包上傳至備份腳本目錄,本流程使用軟件如下:
percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
cd /mysql/dacp/mysql/mysqlbak/scripts
tar -zxvf percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
Mysql物理備份流程腳本
1. MySQL物理備份腳本
#!/bin/bash
Innobackupex_Path=/mysql/dacp/mysql/mysqlbak/scripts/percona-xtrabackup-2.4.7-Linux-x86_64/bin/xtrabackup
Mysql_Client=/mysql/dacp/mysql/soft/bin/mysql
Bak_Time=`date +%Y%m%d_%H%M%S`
#請勿在Incrbackup_Path及下屬文件夾創(chuàng)建或?qū)懭雰?nèi)容,否則可能導(dǎo)致增量備份不成功。
Backup_Dir=/mysql/dacp/mysql/mysqlbak/data #備份主目錄
#Backup_Dir=/opt/backup/data/`data -I` #按日期生成備份主目錄
Fullbackup_Path=$Backup_Dir/full # 全庫備份的目錄
Incrbackup_Path=$Backup_Dir/incr # 增量備份的目錄
Log_Path=$Backup_Dir/logs #日志文件目錄
Keep_Fullbackup=2 #保留的全備份數(shù)量,此處要加1; 如要保留2個,此處要寫3
Mysql_Conf=/etc/my.cnf #mysql配置文件
export MYSQL_PWD=xxxxxxx
SOCK=/mysql/dacp/mysql/data/mysql.sock
Mysql_Opts="$Mysql_Client -s --host=localhost --user=root --password=$MYSQL_PWD -S$SOCK" #mysql的連接配置,按需修改

Error()
{
echo -e "e[1;31m$1e[0m" 1>&2
exit 1
}

Backup()
{
#兩個參數(shù)為全量備份,第一個參數(shù)為備份目錄,第二個參數(shù)為日志全路徑:
if [ $# = 2 ] ; then
$Innobackupex_Path --defaults-file=$Mysql_Conf -uroot -p$MYSQL_PWD  --backup --parallel=3 --target-dir $1/full_$Bak_Time>$2 2>&1
#三個參數(shù)為增量備份,第一個為增量備份目錄,第二個為上個增量備份目錄,第三個為日志全路徑。
elif [ $# = 3 ];then
$Innobackupex_Path --defaults-file=$Mysql_Conf -uroot -p$MYSQL_PWD --backup --target-dir $1/incr_$Bak_Time  --incremental-basedir $2 >$3 2>&1
else
Error "Backup(): 參數(shù)不正確"
fi
}
#獲得某個目錄下,最近修改的目錄:
Lastest_Dir()
{
if [ -d $1 ]; then
path=`ls -t $1 |head -n 1`
if [ $path ]; then
echo $path
else
Error "Lastest_Diri(): 目錄為空,沒有最新目錄"
fi
else
Error "Latest_Dir(): 目錄不存在或者不是目錄"
fi
}
#進(jìn)行增量備份:
Do_Inc()
{
if [ "$(ls -A $Incrbackup_Path)" ] ; then
#不是第一次增量備份,以最新的增量備份目錄為base_dir
Backup $Incrbackup_Path $Incrbackup_Path/`Lastest_Dir $Incrbackup_Path` $Log_Path/incr_$Bak_Time.log
else
#第一次增量備份要先全量備份:
Backup $Incrbackup_Path  $Log_Path/incr_full_$Bak_Time.log
fi
}
#進(jìn)行全量備份:
Do_Full()
{
Backup $Fullbackup_Path $Log_Path/full_$Bak_Time.log
cd $Fullbackup_Path
ls -t |tail -n +$Keep_Fullbackup |xargs rm -rf

}
#環(huán)境和配置檢查:
Check()
{
#檢查目錄和創(chuàng)建目錄:
if [ ! -d $Fullbackup_Path ];then
mkdir -p $Fullbackup_Path
fi

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

if [ ! -d $Log_Path ];then
mkdir -p $Log_Path
fi
#檢測所需的軟件:
if [ ! -f $Innobackupex_Path ];then
Error "未安裝xtradbbackup或xtradbbackup路徑不正確"
fi

if [ ! -f $Mysql_Client ];then
Error "未安裝mysql客戶端"
fi

if [ ! -f $Mysql_Conf ];then
Error "mysql配置文件路徑不正確"
fi
#檢查mysql的運(yùn)行狀態(tài):
if [ `ps -ef |grep mysqld |grep -v grep |wc -l` = 0 ];then
Error "MySQL沒有運(yùn)行"
fi
#驗(yàn)證mysql的用戶和密碼是否正確:
if  ! `echo exit |$Mysql_Opts >/dev/null 2>&1` ; then
Error "提供的數(shù)據(jù)庫連接配置不正確!"
fi
}
case $1 in

full)
Check
Do_Full
;;

inc)
Check
Do_Inc
;;

*)
echo "full 全量備份"
echo "inc 增量備份"
;;
esac
2. 執(zhí)行物理備份腳本

腳本實(shí)現(xiàn)邏輯:

核查備份目錄大小是否滿足,否則輸出異常備份失敗,正常則執(zhí)行備份腳本,備份執(zhí)行完成核查執(zhí)行日志是否備份成功。
#!/bin/bash

unamesr="`uname -sr`"
case "$unamesr" in
AIX*)
AWK=awk
. $HOME/.profile
;;
SunOS 5*)
AWK=nawk
. $HOME/.profile
;;
HP*)
AWK=awk
. $HOME/.profile
;;
Linux*)
AWK=awk
. $HOME/.bash_profile
;;
esac

directory=$directory
sh_directory=$sh_directory
log_directory=$log_directory
user=$user

sudo su - $user <rm -rf $directory/mysqlbak/data/full/full*
rm -f ${log_directory}/*.log
EOF

tmp1=`df -mP |grep ${directory}|awk {print $4}`
tmp2=`df -mP |grep ${directory}|awk {print $3}`

if [[ ${tmp1} -gt ${tmp2} ]];then

echo "可執(zhí)行備份"

sudo su - $user <sh $sh_directory/xtradump.sh full
EOF

sudo su - $user <cat ${log_directory}/*.log |grep completed OK |wc -l > /tmp/backup.log
chmod 775 /tmp/backup.log
EOF

backup=`cat /tmp/backup.log`

if [[ ${backup} = 1 ]];then

output=0
echo "備份成功"
else
output=1
echo "備份失敗,請檢查"
fi
else
echo "目錄空間不足,不可執(zhí)行備份"
output=1
fi
exit 0
3. 備份文件傳輸腳本
#!/bin/bash

data_directory="/mysql/dacp/mysql/mysqlbak/data/full"
sh_directory="/mysql/dacp/mysql/mysqlbak/scripts"

/usr/openv/netbackup/bin/bparchive -p MYSQL_DMP_ARC -s User_Archive -L $sh_directory/`date +%Y%m%d`.log -w $data_directory/full_*

find $sh_directory/ -name "*.log" -mtime +1 |xargs -i rm {}
4. 備份文件傳輸監(jiān)控腳本

#!/bin/bash
sh_directory="/mysql/dacp/mysql/mysqlbak/scripts"
ipa=`ip addr |grep inet|grep -v 127.0.0.1|grep -v inet6|awk {print $2}|tr -d "addr:"|grep 134.|head -n 1`
hostip=${ipa%/*}
cat $sh_directory/`date +%Y%m%d`.log|grep successfully |wc -l > /tmp/trscheck.log

check=`cat /tmp/trscheck.log`

if [[ ${check} = 1 ]];then
echo "$hostip `date +%F %T` 備份文件發(fā)送成功" >> $sh_directory/trscheck.log

else

cd $sh_directory
./mess.sh -b "`date +%F %T` $hostip ERROR: mysql備份文件發(fā)送失敗,請檢查 " -t 18974885939,15367933992
echo " `date +%F %T` $hostip mysql備份文件發(fā)送失敗,請檢查" >> $sh_directory/trscheck.log
fi

基于自動化運(yùn)維平臺實(shí)現(xiàn)
1. 創(chuàng)建巡檢項(xiàng)
運(yùn)維操作--作業(yè)計(jì)劃--巡檢項(xiàng)--新建巡檢項(xiàng)--選擇執(zhí)行物理備份腳本--填寫相關(guān)參數(shù)信息--保存。
2. 創(chuàng)建作業(yè)任務(wù)
運(yùn)維操作--作業(yè)計(jì)劃--作業(yè)任務(wù)--新增作業(yè)任務(wù)--添加巡檢--選擇剛添加的巡檢項(xiàng)--填寫相關(guān)參數(shù)信息--保存。


本文作者:劉 能(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129242.html

相關(guān)文章

  • 宜信開源|詳解PaaS平臺LAIN的功能和架構(gòu)

    摘要:是宜信公司大數(shù)據(jù)創(chuàng)新中心開發(fā)的開源平臺。為宜信大數(shù)據(jù)創(chuàng)新中心各個團(tuán)隊(duì)提供了統(tǒng)一的測試和生產(chǎn)環(huán)境,簡化了服務(wù)的部署與上線流程,也降低了運(yùn)維人員對系統(tǒng)管理的復(fù)雜度?;谌萜骷夹g(shù),面向多樣化的技術(shù)棧,并且天然隔離系統(tǒng)和應(yīng)用的依賴。 LAIN是宜信公司大數(shù)據(jù)創(chuàng)新中心開發(fā)的開源PaaS平臺。在金融的場景下,LAIN 是為解放各個團(tuán)隊(duì)和業(yè)務(wù)線的生產(chǎn)力而設(shè)計(jì)的一個云平臺。LAIN 為宜信大數(shù)據(jù)創(chuàng)新中...

    mist14 評論0 收藏0
  • 極數(shù)云舟重磅發(fā)布企業(yè)級云原生數(shù)據(jù)庫ArkDB

    摘要:月日,極數(shù)云舟在北京互聯(lián)網(wǎng)金融中心重磅發(fā)布企業(yè)級云原生數(shù)據(jù)庫,致力于打造具有自主知識產(chǎn)權(quán)的核心數(shù)據(jù)庫產(chǎn)品,不斷推動中國數(shù)據(jù)庫產(chǎn)業(yè)的發(fā)展和提升國產(chǎn)化數(shù)據(jù)庫自主品牌國際影響力。是極數(shù)云舟基于思想自主研發(fā)的一款企業(yè)級云原生數(shù)據(jù)庫。4月19日,極數(shù)云舟在北京互聯(lián)網(wǎng)金融中心重磅發(fā)布企業(yè)級云原生數(shù)據(jù)庫ArkDB,致力于打造具有自主知識產(chǎn)權(quán)的核心數(shù)據(jù)庫產(chǎn)品,不斷推動中國數(shù)據(jù)庫產(chǎn)業(yè)的發(fā)展和提升國產(chǎn)化數(shù)據(jù)庫自...

    mushang 評論0 收藏0
  • “怎么做好云遷移”? 深藍(lán)云海資深架構(gòu)師給你答案

    摘要:基于云遷移的三個階段細(xì)分為八個主要步驟,評估階段主要包括項(xiàng)目啟動現(xiàn)狀梳理以及應(yīng)用系統(tǒng)關(guān)聯(lián)關(guān)系分析三個步驟,設(shè)計(jì)階段包括云架構(gòu)優(yōu)化設(shè)計(jì)和云遷移方案設(shè)計(jì),實(shí)施階段包括目標(biāo)架構(gòu)遷移演練及實(shí)施和試運(yùn)行三個步驟。 在云計(jì)算市場規(guī)模不斷擴(kuò)大的大背景下,云遷移的需求越來越大且面臨挑戰(zhàn)。云遷移不是一個遷移軟件工具,而是一種服務(wù)。前IBM資深架構(gòu)師姜亞杰從云遷移的三個階段、四個維度到八個步驟的方法,簡述...

    kk_miles 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<