欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux中數(shù)據(jù)庫的定時備份

 更新時間:2023年05月12日 08:18:47   作者:xiezhr  
這篇文章主要介紹了linux中數(shù)據(jù)庫的定時備份的相關(guān)資料,需要的朋友可以參考下

1 序言

相信大家都還記得這則新聞吧,歐洲云計算巨頭 OVH 位于法國斯特拉斯堡的機(jī)房發(fā)生嚴(yán)重火災(zāi),大火徹底摧毀了五層高、占地 500 平方米的 SBG2 數(shù)據(jù)中心。

當(dāng)?shù)貓蠹埛Q 115 位消防員投入 6 個小時才將其撲滅。經(jīng)過長達(dá) 6 個小時的持續(xù)燃燒,SBG2 內(nèi)的數(shù)據(jù)恐怕已經(jīng)徹底丟失。

大火對歐洲范圍內(nèi)的眾多網(wǎng)站造成嚴(yán)重影響。據(jù) Netcraft 稱,目前跨 464000 個域的多達(dá) 360 萬個網(wǎng)站皆已下線。

數(shù)據(jù)是無價的,所以生產(chǎn)環(huán)境中定時備份數(shù)據(jù)庫顯得尤為重要。備份能防止服務(wù)器故障和人為誤操作帶來的數(shù)據(jù)丟失。

生產(chǎn)環(huán)境中l(wèi)inux操作系統(tǒng)也是服務(wù)器的首選,所以我們今天就以linux為例,說一說數(shù)據(jù)庫備份。

具體以什么數(shù)據(jù)庫為例呢,就以這幾年工作中接觸到的幾種常見數(shù)據(jù)庫為例吧。

  • Oracle
  • mysql
  • postgresql
  • mongoDB

在這里呢也給自己挖一個坑,工作中呢也用到winserver 作為服務(wù)器的情況,所以呢后面也整理更新下winserver 環(huán)境下數(shù)據(jù)庫備份。

2 crond 相關(guān)知識點(diǎn)

2.1 crond 是什么?

crond任務(wù)調(diào)度相當(dāng)于我們?nèi)粘I钪械聂[鐘??梢栽谀硞€時間點(diǎn)執(zhí)行特定的命令和程序。 linux系統(tǒng)自身定期執(zhí)行的任務(wù)工作:例如輪詢系統(tǒng)日志、備份系統(tǒng)數(shù)據(jù)、清理系統(tǒng)緩存、殺毒等等 用戶執(zhí)行的工作任務(wù):用戶通過設(shè)置任務(wù)調(diào)度,定時執(zhí)行自己添加shell腳本或簡單的指令。例如每隔1分鐘和互聯(lián)網(wǎng)上時間服務(wù)器同步,每天凌晨1點(diǎn)備份數(shù)據(jù)庫等等

2.2 crontab 進(jìn)行定時任務(wù)設(shè)置

2.2.1 crontab 指令選項說明

語法:

crontab[-e|-l|-r]

-e:編輯crontab 定時任務(wù)
-l:查詢crontab定時任務(wù)
-r:刪除當(dāng)前用戶所有的crontab定時任務(wù)

2.2.2 crontab 指令使用格式

crontab用戶的定時任務(wù)一般分為6段(空格分隔,系統(tǒng)的定時任務(wù)則/etc/crontab分為7段),其中前五段位時間設(shè)定段,第六段為所要執(zhí)行的命令或腳本任務(wù)段。

①語法:

* * * * * cmd
①cmd為要執(zhí)行的命令或腳本,例如/server/scripts/lee.sh
②每個段之間必須要有空格。

② crontab語法格式中時間段的含義表

含義取值范圍
第一個“*”一小時當(dāng)中的第幾分鐘0-59
第二個“*”一天當(dāng)中的第幾個小時0-23
第三個“*”一個月當(dāng)中的第幾天1-31
第四個“*”一年當(dāng)中的第幾個月1-12
第五個“*”一周當(dāng)中的星期幾0-7(0和7都代表周天)

③ crontab語法格式中特殊符號的含義表

特殊符號含義
*"*" 表示任意時間都,就是“每”的意思,舉例:如00 01 * * * cmd 表示每月每周每日的凌晨1點(diǎn)執(zhí)行cmd任務(wù)。
-"-" 表示分隔符,表示一個時間范圍段,如17-19點(diǎn),每小時的00分執(zhí)行任務(wù)。00 17-19 * * * cmd 表示17,18,19點(diǎn)整點(diǎn)分別執(zhí)行的意思。
,"," 表示分隔時間段的意思。30 17,18,19 * * * cmd 表示每天17,18,19點(diǎn)的半點(diǎn)執(zhí)行cmd 也可以和“-”結(jié)合使用,如: 30 3-5,17-19 * * * cmd 表示每天3、4、5和17、18、19 執(zhí)行
/nn代表數(shù)字 即”每隔n單位時間”,例如:每10分鐘執(zhí)行一次任務(wù)可以寫 */10 * * * * cmd,其中 /10,的范圍是0-59,也可以寫成0-59/10
① 30 23 * * * cmd    表示每天23:30分執(zhí)行cmd命令
② 40 22 * * 1 cmd    表示每周一22:40分執(zhí)行cmd命令
③ 30 0 1-12 * * cmd  表示每月1號和12號 00:30執(zhí)行cmd命令
④ 30 0 * * 1-5 cmd   表示每周一和周五00:30執(zhí)行命令
⑤ */10 4 * * * cmd   表示每天4:00每隔10分鐘執(zhí)行一次cmd命令

2.2.4 crontab 設(shè)置步驟

這里我們以每5分鐘同步一次互聯(lián)網(wǎng)時間為例進(jìn)行說明

① 查看crond服務(wù)是否啟動

/sbin/service crond status --查看crond服務(wù)是否啟動

[root@xiezhr /]# /sbin/service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-01-10 21:14:50 CST; 1 months 25 days ago
 Main PID: 990 (crond)
   CGroup: /system.slice/crond.service
           └─990 /usr/sbin/crond -n

Jan 25 14:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 14:30:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 15:00:02 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 15:30:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 16:00:01 xiezhr crond[990]: /usr/sbin/sendmail: error while loading shared librari...ory
Jan 25 16:24:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/yunjing)
Jan 28 11:18:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/sgagenttask)
Jan 28 11:18:01 xiezhr crond[990]: (root) RELOAD (/var/spool/cron/root)
Feb 07 12:03:01 xiezhr crond[990]: (*system*) RELOAD (/etc/cron.d/yunjing)
Feb 07 12:03:01 xiezhr crond[990]: (root) RELOAD (/var/spool/cron/root)
Hint: Some lines were ellipsized, use -l to show in full.

如果crond服務(wù)沒啟動則執(zhí)行如下命令啟動crond服務(wù)

/sbin/service crond start          啟動服務(wù)

查看進(jìn)程

[root@xiezhr /]# ps -ef|grep crond
root       990     1  0 Jan10 ?        00:00:22 /usr/sbin/crond -n
root     19552 15271  0 16:10 pts/1    00:00:00 grep --color=auto crond

② 編寫shell腳本

在home路徑下添加如下shell腳本

[root@xiezhr home]# vim /home/my.sh
/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

③ 給腳本增加執(zhí)行權(quán)限

[root@xiezhr home]# chmod u+x /home/my.sh 

④ 設(shè)置定時任務(wù)crontab

[root@xiezhr home]# crontab -e
*/5 * * * * /home/my.sh

3 各個數(shù)據(jù)庫備份腳本

3.1 Oracle數(shù)據(jù)庫

#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1;
export ORACLE_SID=orcl;
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#以上代碼為Oracle數(shù)據(jù)庫運(yùn)行賬號oracle的系統(tǒng)環(huán)境變量設(shè)置,必須添加,否則crontab任務(wù)計劃不能執(zhí)行。

date=date +%Y_%m_%d            #獲取系統(tǒng)當(dāng)前日期時間
days=7                         #設(shè)置刪除7天之前的備份文件
orsid=192.168.1.100:1521/orcl  #Oracle數(shù)據(jù)庫服務(wù)器IP、端口、SID
orowner=scott                  #備份此用戶下面的數(shù)據(jù)
bakuser=system                 #用此用戶來執(zhí)行備份,必須要有備份操作的權(quán)限
bakpass=oracle                 #執(zhí)行備注的用戶密碼
bakdir=/backup/oracledata      #備份文件路徑,需要提前創(chuàng)建好
bakdata=$orowner"_"$date.dmp   #備份數(shù)據(jù)庫名稱
baklog=$orowner"_"$date.log    #備份執(zhí)行時候生成的日志文件名稱
ordatabak=$orowner"_"$date.tar.gz #最后保存的Oracle數(shù)據(jù)庫備份文件

cd $bakdir                     #進(jìn)入備份目錄
mkdir -p $orowner              #按需要備份的Oracle用戶創(chuàng)建目錄
cd $orowner                    #進(jìn)入目錄
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #執(zhí)行備份
tar -zcvf $ordatabak $bakdata  $baklog                      #壓縮備份文件和日志文件
find $bakdir/$orowner  -type f -name "*.log" -exec rm {} \; #刪除備份文件
find $bakdir/$orowner  -type f -name "*.dmp" -exec rm {} \; #刪除日志文件
find $bakdir/$orowner  -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;  #刪除7天前的備份(注意:{} \中間有空格)

以上exp備份,如果要采用expd備份,只需將上面執(zhí)行語句換成下面的即可
expdp $bakuser/$bakpass@$orsid full=y cluster=n directory=$bakdir dumpfile=$bakdir/$orowner/$bakdata logfile=$bakdir/$orowner/$baklog 

3.2 Mysql數(shù)據(jù)庫

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
export PATH
dbuser='root'          #數(shù)據(jù)庫用戶名
dbpasswd='123456'      #數(shù)據(jù)庫密碼
dbname='test1 test2'   #數(shù)據(jù)庫名,可以定義多個數(shù)據(jù)庫,中間以空格隔開,如 test1 test2
backtime=`date +%Y%m%d%H%M%S`    #備份時間
logpath= '/home/mysql/backup'     #日志備份路徑
datapath='/home/mysql/backup'     #數(shù)據(jù)備份路徑
echo "備份時間為${backtime},備份數(shù)據(jù)庫表 ${dbname} 開始" >> ${logpath}/mysqllog.log  #日志記錄頭部
#正式備份數(shù)據(jù)庫
for table in $dbname; do  
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
#備份成功以下操作
if [ "$?" == 0 ];then 
cd $datapath
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null   #為節(jié)約硬盤空間,將數(shù)據(jù)庫壓縮
rm -f ${datapath}/${backtime}.sql   #刪除原始文件,只留壓縮后文件
cd $datapath
rm -rf `find . -name '*.sql.gz' -mtime +30` >> ${logpath}/mysqllog.log 2>&1  #刪除30天前備份文件
echo "數(shù)據(jù)庫表 ${dbname} 備份成功!!" >> ${logpath}/mysqllog.log
else
echo “數(shù)據(jù)庫表 ${dbname} 備份失敗!!” >> ${logpath}/mysqllog.log   #備份失敗則進(jìn)行以下操作
fi
done

3.3 postgresql數(shù)據(jù)庫

#!/bin/bash
pg_user ='postgres'
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
export exp_date=`date '+%Y%m%d'`
pg_dump  -U postgres dbpostgres -f /u01/backup/$exp_date.sql  
gzip -1 /u01/backup/$exp_date.sql       #壓縮備份文件
find /u01/backup -mtime +14 -exec rm {} \;   #刪除七天前備份文件

3.4 mongoDB數(shù)據(jù)庫

#!/bin/sh
DUMP=/home/webapp/Downloads/mongoDB/mongodbserver/bin/mongodump #mongodump備份文件執(zhí)行路徑
OUT_DIR=/home/webapp/backup/mongo_bak/mongod_bak_now #臨時備份目錄
TAR_DIR=/home/webapp/backup/mongo_bak/mongod_bak_list #備份存放路徑
DATE=`date +%Y_%m_%d_%H_%M_%S` #獲取當(dāng)前系統(tǒng)時間
DB_USER=XXXX#數(shù)據(jù)庫賬號
DB_PASS=XXXX #數(shù)據(jù)庫密碼
DB_NAME=TEST #數(shù)據(jù)庫名稱
IP=xx.xx.xx.xx:27017
DAYS=365 #DAYS=30代表刪除30天前的備份,即只保留最近30天的備份
TAR_BAK="mongod_bak_$DATE.tar.gz" #最終保存的數(shù)據(jù)庫備份文件名
cd $OUT_DIR
rm -rf $OUT_DIR
mkdir -p $OUT_DIR/$DATE
$DUMP -h $IP -u $DB_USER -p $DB_PASS -d $DB_NAME -o $OUT_DIR/$DATE #備份數(shù)據(jù)庫
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE                         #壓縮為.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete                               #刪除30天前的備份
exit

4 定時備份數(shù)據(jù)庫實(shí)際操作

每天凌晨1點(diǎn)備份以上常見數(shù)據(jù)庫

① 創(chuàng)建備份腳本

在home路徑下創(chuàng)建backup.sh 并添加以上數(shù)據(jù)庫備份shell腳本

[root@xiezhr home]#  vim /home/bakcup/backup.sh
# 要備份那個數(shù)據(jù)庫,就往backup.sh 添加對應(yīng)的shell腳本即可

③ 給腳本增加執(zhí)行權(quán)限

[root@xiezhr home]# chmod u+x /home/bakcup/backup.sh

③ 設(shè)置定時任務(wù)crontab

[root@xiezhr home]# crontab -e
0 1 * * * /home/bakcup/backup.sh

本期到此就結(jié)束了,下一期我們說一說winserver環(huán)境下數(shù)據(jù)庫備份。

到此這篇關(guān)于linux中數(shù)據(jù)庫的定時備份的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫定時備份linux篇內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux下截屏并編輯的最佳工具

    Linux下截屏并編輯的最佳工具

    今天小編就為大家分享一篇關(guān)于Linux下截屏并編輯的最佳工具,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Kerberos安裝教程及使用詳解

    Kerberos安裝教程及使用詳解

    Kerberos協(xié)議主要用于計算機(jī)網(wǎng)絡(luò)的身份鑒別(Authentication), 其特點(diǎn)是用戶只需輸入一次身份驗(yàn)證信息就可以憑借此驗(yàn)證獲得的票據(jù)(ticket-granting ticket)訪問多個服務(wù)。這篇文章主要介紹了Kerberos安裝教程及使用詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • CentOS新建用戶并使能密鑰登錄的方法

    CentOS新建用戶并使能密鑰登錄的方法

    這篇文章主要介紹了CentOS新建用戶并使能密鑰登錄的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • linux系統(tǒng)下vim插件安裝介紹

    linux系統(tǒng)下vim插件安裝介紹

    大家好,本篇文章主要講的是linux系統(tǒng)下vim插件安裝介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • ubuntu安裝顯卡驅(qū)動和cuda教程

    ubuntu安裝顯卡驅(qū)動和cuda教程

    這篇文章主要介紹了ubuntu安裝顯卡驅(qū)動和cuda教程,文中附有詳細(xì)的圖文安裝步驟以及安裝配置代碼,跟著本文來進(jìn)行操作,有需要的朋友可以參考下
    2021-09-09
  • CentOs 7.3中搭建RabbitMQ 3.6單機(jī)多實(shí)例服務(wù)的步驟與使用

    CentOs 7.3中搭建RabbitMQ 3.6單機(jī)多實(shí)例服務(wù)的步驟與使用

    這篇文章主要給大家介紹了關(guān)于CentOs 7.3中搭建RabbitMQ 3.6單機(jī)多實(shí)例服務(wù)的步驟與使用的相關(guān)資料,文中將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧。
    2018-03-03
  • 關(guān)于linux服務(wù)器hosts文件配置詳解

    關(guān)于linux服務(wù)器hosts文件配置詳解

    在本篇文章里小編給大家整理的是關(guān)于linux服務(wù)器hosts文件配置問題,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置數(shù)據(jù)庫連接池

    eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置數(shù)據(jù)庫連接池

    首先有一點(diǎn)要明確, 我是個新手, 而我所知道的只是一個表面, 根源我并不了解, 目前也不打算去深究. 所以我的方法, 可能只適用于eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 的數(shù)據(jù)庫連接池的配置, 其他版本我無法保證.至少Tomcat 6的admin包還沒出, 所以我的方法肯定不適用于Tomcat 6.
    2008-10-10
  • Apache2.4和Apache2.2訪問控制配置語法對比

    Apache2.4和Apache2.2訪問控制配置語法對比

    這篇文章主要介紹了Apache2.4和Apache2.2訪問控制配置語法對比,本文給出若干配置實(shí)現(xiàn)講解Apache2.4和Apache2.2訪問控制配置語法的不同之處,需要的朋友可以參考下
    2015-04-04
  • Linux中curl命令和wget命令的使用介紹與比較

    Linux中curl命令和wget命令的使用介紹與比較

    這篇文章主要給大家介紹了Linux中curl命令和wget命令使用以及這兩者之間的區(qū)別比較的相關(guān)資料,curl和wget命令都是Linux下的工具,可以用來下載文件。文中介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04

最新評論