1.需求
2.操作環境
centos linux release 7.5.1804 (core)3.前置環境準備mysql server version: 5.7.21
4.shell指令碼檔案
#!/bin/sh
#資料庫資訊
dbusername=backup
dbpasswd=123456
db=sms
dbport=3306
#遠端伺服器資訊
remoteip=116.114.18.147
remoteport=2233
remoteuser=backup
remotepath=/backup
#昨天時間
yesterday=$(date +%f -d '-1day')
year=$(date +%y -d '-1day')
month=$(date +%m -d '-1day')
#臨時檔案存放目錄
dirtemp=/home/backup/scripts/db_sms/temp
#日誌檔案目錄
dirlog=/home/backup/scripts/db_sms/logs
#資料存放目錄
dirdata=/backup/sms_mt
#表名檔案
tablesfile=$dirtemp/tables.txt
#每天生成乙個日誌檔案
logfile=$dirlog/info_`date +%y%m%d`.log
echo "`date +%y-%m-%d-%h:%m:%s` show tables start" >>$logfile
#查詢資料庫所有表名
/usr/local/mysql/bin/mysql -u$dbusername -p$dbpasswd -e "
use $db;
show tables;
" >$tablesfile
#將查詢的表名寫入日誌檔案,做記錄
cat $tablesfile >> $logfile
echo "`date +%y-%m-%d-%h:%m:%s` show tables finish" >>$logfile
#判斷表檔案是否存在
if [ ! -f $tablesfile ];
then
echo "`date +%y-%m-%d-%h:%m:%s` tables file not exists" >>$logfile
exit 1
fi#匯出資料離線文字
function exportsms()
#存放資料目錄
dirdatatbale=$dirdata/$provincecode/$year/$month
#判斷資料目錄是否存在
if [ ! -d $dirdatatbale ];then
mkdir -p $dirdatatbale
fi#資料檔案名稱
datafile=$provincecode-$yesterday
#執行sql語句
/usr/local/mysql/bin/mysql -u$dbusername -p$dbpasswd -e "
use $db;
select * from $1 where create_time >= '$yesterday 00:00:00' and create_time <='$yesterday 23:59:59';
">/$dirdatatbale/$datafile.txt
#進入檔案目錄,壓縮檔案
cd $dirdatatbale &&
#壓縮檔案
tar zcf $datafile.tar.gz $datafile.txt &&
#刪除txt檔案
rm -f $datafile.txt
echo "`date +%y-%m-%d-%h:%m:%s` export data:$1 end" >>$logfile
}#讀取表檔案,依次處理
cat $tablesfile | while read line
do #判斷表名是否以sms_mt結尾
if [[ $line == *_sms_mt ]];
then
exportsms $line
fidone
#推送資料給遠端伺服器端
echo "`date +%y-%m-%d-%h:%m:%s` push data start" >>$logfile
scp -p$remoteport -r -p $dirdata $remoteuser@$remoteip:$remotepath &&
rm -rf $dirdata/*
echo "`date +%y-%m-%d-%h:%m:%s` push data end" >>$logfile
#刪除7天後日誌
find $dirlog/ -type f -mtime +7 -name "*.log" |xargs rm -f
#複製日誌檔案
cp -r $logfile $logfile.mail &&
#將執行日誌郵件傳送給管理員
mail -s "sms db auto back `date +%y-%m-%d`" [email protected] < $logfile.mail &&
rm -f $logfile.mail
SQL語句實現水仙花數求取
水仙花數 所謂 水仙花數 是指乙個三位數,其各位數字立方和等於該數本身。例如 370是乙個 水仙花數 因為 370 3 的三次方 7的三次方 0 的三次方 本文用兩種方法解決水仙花數的求取 第一種使用一層while迴圈,從100 1000遍歷,取出其個位 十位 百位的數字,進行三次方計算後相加再與原...
shell 根據變數加減 進行迴圈語句操作
1 while語句 while condition do 迴圈體donecondition 迴圈控制條件 進入迴圈之前,先做一次判 斷 每一次迴圈之後會再次做判斷 條件為 true 則執行 一次迴圈 直到條件測試狀態為 false 終止迴圈 因此 condtion一般應該有迴圈控制變數 而此變數的值...
sql語句實現分頁
sql語句實現分頁 sqlstr select top 10 from shebei where id not in select top cint pagenum 1 10 id from shebei order by id desc order by id desc 計算總頁數 dimstr ...