當前位置:首頁 » 數據倉庫 » linux自動備份db2資料庫備份
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linux自動備份db2資料庫備份

發布時間: 2022-06-22 15:45:22

A. linux怎麼備份資料庫

一、 使用mysql相關命令進行簡單的本地備份

1 mysqllmp命令

mysqlmp 是採用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。

使用 mysqlmp進行備份非常簡單,如果要備份資料庫」 db_backup 」,使用命令:
#mysqlmp –u -p phpbb_db_backup > /usr/backups/mysql/db_backup2008-1-6.sql
還可以使用gzip命令對備份文件進行壓縮:
#mysqlmp db_backup | gzip > /usr/backups/mysql/ db_backup2008-1-6.sql.gz (備份後生成的sql不含建庫語句!)
只備份一些頻繁更新的資料庫表:
## mysqlmp sample_db articles comments links > /usr/backups/mysql/sample_db.art_comm_lin.2008-1-6.sql
上面的命令會備份articles, comments, 和links 三個表。

恢復數據使用命令:
#mysql –u -p db_backup </usr/backups/mysql/ db_backup2008-1-6.sql
注意使用這個命令時必須保證資料庫正在運行。

2 使用 SOURCE 語法

其實這不是標準的 SQL 語法,而是 mysql 客戶端提供的功能,例如:
# SOURCE /tmp/db_name.sql;
這里需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有許可權讀取的文件。

3 mysqlhot備份

mysqlhot 只能用於備份 MyISAM,並且只能運行在 linux 和Unix 和 NetWare 系統上。mysqlhot 支持一次性拷貝多個資料庫,同時還支持正則表達。以下是幾個例子:
#mysqlhot -h=localhost -u=goodcjh -p=goodcjh db_name /tmp
(把資料庫目錄 db_name 拷貝到 /tmp 下)
注意,想要使用 mysqlhot,必須要有 SELECT、RELOAD(要執行 FLUSH TABLES) 許可權,並且還必須要能夠有讀取 datadir/db_name 目錄的許可權。

還原資料庫方法:

mysqlhot 備份出來的是整個資料庫目錄,使用時可以直接拷貝到 mysqld 指定的 目錄 (在這里是 /usr/local/mysql/data/)目錄下即可,同時要注意許可權的問題,另外首先應當刪除資料庫舊副本如下例:

# /bin/rm -rf /mysql-backup/**//*old
關閉mysql 伺服器、復制文件、查詢啟動mysql伺服器的三個步驟:
# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
# cp -af /mysql-backup/**//* /var/lib/mysql /
# /etc/init.d/mysqld start
Starting MySQL: [ OK ]
#chown -R nobody:nobody /usr/local/mysql/data/ (將 db_name 目錄的屬主改成 mysqld 運行用戶)
二、使用網路備份

將MYSQL數據放在一台計算機上是不安全的,所以應當把數據備份到區域網中其他Linux計算機中。假設Mysql伺服器IP地址是:192.168.1.3。區域網使用Linux的遠程計算機IP地址是192.168.1.4;類似於windows的網路共享,UNIX(Linux)系統也有自己的網路共享,那就是NFS(網路文件系統),在linux客戶端掛接(mount)NFS磁碟共享之前,必須先配置好NFS服務端。linux系統NFS服務端配置方法如下:

(1)修改 /etc/exports,增加共享目錄
/export/home/sunky 192.168.1.4(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)

B. 如何在Linux下實現DB2資料庫備份和恢復

Linux環境下DB2資料庫的備份和恢復的實際應用代碼如下:
DB2資料庫備份腳本:
. /home/db2admin/sqllib/db2profile
db2 backup db datedb online to /dbbackup/date include logs
cd /dbbackup/datetoday=`date +」%Y%m%d」`
file1=」*$today*」
ftpfile=`ls $file1`
echo $ftpfile
lftp -c 「open ftp地址;user用戶名密碼@\$0;put $ftpfile」
find /dbbackup/date -ctime +15 -exec rm {} \;
恢復命令:
通過root命令登錄到伺服器上後切換到資料庫用戶名下用su – db2admin命令。
進入到備份文件存放目錄
執行如下命令
[db2admin@localhost db2back]$ db2 restore db datedb from /hom

C. LINUX 自動備份怎麼實現

首先我在/root/backup 目錄下建立一個文件夾,

#mkdir /root/backup/mysqlbackup

以後在每天五點鍾,就會有一個文件保存在這里.

接著新建文件

#vim /root/mysqlautobak

輸入:

filename=` date +%Y%m%d `

mysqlmp --all-databases -uroot -p(mysql密碼)> /root/backup/mysqlbackup/mysql$file.sql保存退出!

讓它可以執行

#chomd +X /root/mysqlautobak

接著開始完crontab了

#vi /etc/crontab添加一行01 5 * * * root /root/mysqlautobak

保存退出.

重新啟動你的crond服務進程

# /etc/rc.d/init.d/crond restart

===============================================================================

hp unix 自動全備份腳本(shell)

說明:每天夜裡10點自動備份並且壓縮,保留2天備份,在備份完當天後刪除前天的備份。在一切執行之後,發郵件通知,郵件內容有刪除文件和備份文件名稱及備份開始時間,結束時間。
使用方法:nohup backup.sh &

filename:backup.sh
reportlist=""
while [ 1 ]
do
hou=`date +%H`
backdate=`date +%Y%m%d`
if [ $hou -eq 22 ]
then
begintime=`date +%Y-%m-%d:%H-%M`
cd /data_log2/for_test
log_txt=`ls -al -crt log.txt | awk '{print $9}' | wc -l`
if [ $log_txt -gt 0 ]
then
mv log.txt log.txt.bak
fi

exp owner=user file=/data_log2/for_test/tmp_now.dmp
compress /data_log2/for_test/tmp_now.dmp
mv tmp_now.dmp.Z report_$backdate.dmp.Z
echo "---------report database backuped----------- ">> log.txt
echo "filename="report_$backdate.dmp.Z >>log.txt

delfile=`ls -al -crt *.Z | awk '{print $9}' | head -1`
count=`ls -al -crt *.Z | awk '{print $9}' | wc -l`

if [ $count -gt 2 ]
then
rm `ls -al -crt *.Z | awk '{print $9}' | head -1`
echo "----------- old backup deleted ---------" >> log.txt
echo "the deleted backup filename="$delfile >> log.txt
fi

echo "-----------------beigin time----------------" >> log.txt
echo $begintime >> log.txt
echo "-----------------end time----------------" >> log.txt
echo `date +%Y-%m-%d:%H-%M` >> log.txt

rm log.txt.bak

mailx -s "10.203.116.23 daily database backup" -r ")" $reportlist < log.txt
fi

sleep 3600
done

======================================================================================
1 給我自己的伺服器寫的一段自動備份的shell
#!/bin/bash

#指定要備份的系統目錄
SYSTEM_DIR=/home

#指定要備份的目錄MAIL_DIR=mailbox #郵件目錄
WEBSITE_DIR=www/html #WEB目錄
DATABASE_DIR=databases #資料庫目錄

#指定備份文件的前綴
MAIL_PREFIX=mail
WEBSITE_PREFIX=web
DATABASE_PREFIX=database

#有朋友的一台WIN2K伺服器,我在上面開了ftp,把備份文件傳到他的伺服器上,相當於我實現了個雙機備份

#ftp伺服器的IP
FTP_SERV=211.144.155.111
#ftp用戶名
FTP_USER=username
#ftp密碼
FTP_PASS=12345678

#備份文件存放目錄
BACKUP_DIR=/home/backup

#格式化一下日期,備份文件時用日期來做文件名的
DATE=`date +%Y%m%d`

#開始備份郵件
if [ -f ${BACKUP_DIR}/${MAIL_PREFIX}${DATE}.tar.gz ]; then #如果當天的郵件已經備份,那沒跳過
echo `date +%Y-%m-%d`'s mail backup file is existing
else #如果沒有備份,那麼用tar命令來打包郵件目錄
tar -czvf ${BACKUP_DIR}/${MAIL_PREFIX}${DATE}.tar.gz ${SYSTEM_DIR}/${MAIL_DIR}
fi

#開始備份網站目錄,備份過程同上
if [ -f ${BACKUP_DIR}/${WEBSITE_PREFIX}${DATE}.tar.gz ]; then
echo `date +%Y-%m-%d`'s webebsite backup file is existing
else
tar -czvf ${BACKUP_DIR}/${WEBSITE_PREFIX}${DATE}.tar.gz ${SYSTEM_DIR}/${WEBSITE_DIR}
fi

#開始備份資料庫目錄,備份過程同上
if [ -f ${BACKUP_DIR}/${DATABASE_PREFIX}${DATE}.tar.gz ]; then
echo `date +%Y-%m-%d`'s database backup file is existing
else
tar -czvf ${BACKUP_DIR}/${DATABASE_PREFIX}${DATE}.tar.gz ${SYSTEM_DIR}/${DATABASE_DIR}
fi

#開始把備份文件傳輸到另一台伺服器上
ftp -i -n $FTP_SERV <<AUTO_FTP
user $FTP_USER $FTP_PASS
passive
binary
put ${BACKUP_DIR}/${MAIL_PREFIX}${DATE}.tar.gz ${MAIL_PREFIX}${DATE}.tar.gz
put ${BACKUP_DIR}/${WEBSITE_PREFIX}${DATE}.tar.gz ${WEBSITE_PREFIX}${DATE}.tar.gz
put ${BACKUP_DIR}/${DATABASE_PREFIX}${DATE}.tar.gz ${DATABASE_PREFIX}${DATE}.tar.gz
AUTO_FTP

別忘了,還有最後一步,就是在crontab里加上個任務,這樣你就不用每次備份都一步步地敲那些瑣碎的命令了。

我的網站,希望大家多多交流

===================================
linux下:

MySQL :: Linux 下自動備份資料庫的 shell 腳本
Linux 伺服器上的程序每天都在更新 MySQL 資料庫,於是就想起寫一個 shell 腳本,結合 crontab,定時備份資料庫。其實非常簡單,主要就是使用 MySQL 自帶的 mysqlmp 命令。

腳本內容如下:
#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME="test"
DB_USER="username"
DB_PASS="password"

# Others vars
BIN_DIR="/usr/local/mysql/bin"
BCK_DIR="/home/mysql/backup"
DATE=`date +%F`

# TODO
$BIN_DIR/mysqlmp --opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/db_$DATE.gz

然後使用將此腳本加到 /etc/crontab 定時任務中:

01 5 * * 0 mysql /home/mysql/backup.sh

好了,每周日凌晨 5:01 系統就會自動運行 backup.sh 文件備份 MySQL 資料庫了。

/home/www/inc/back

D. 在linux怎麼備份資料庫表

1:打開的資料庫的命令

mysql> use mysql
Database changed
2:查看資料庫的命令

mysql> show databases;
3:查看資料庫中表的命令
mysql> show tables;
4:查看錶的詳細結構
mysql> desc tablename;
5:新建資料庫
mysql> create database school;
Query OK, 1 row affected (0.00 sec)
6:新建表

mysql> create table user01(

-> id varchar(20) NOT NULL,

-> userName varchar(10) NOT NULL,

-> age int(11) default'0',

-> sex char(2) NOT NULL default'm',

-> PRIMARY KEY (id)

-> )TYPE=InnoDB;

Query OK, 0 rows affected, 1 warning (0.02 sec)mysql>desc student;
7:插入

mysql> insert into student(id,stuName) values('1','tomcat');

Query OK, 1 row affected (0.00 sec)

8:刪除

mysql> delete from student where id='1';

Query OK, 1 row affected (0.01 sec)

9:刪除表中所有數據

mysql> truncate table student;

Query OK, 1 row affected (0.01 sec)

10:創建新用戶並給予許可權

mysql>grant all privileges on *.* to dbsync@"127.0.0.1" identified by "1234";

11:更改Mysql用戶密碼

c:\Mysql5.0\bin>mysqladmin -u root -p password 1234

Enter password: ****
備份資料庫及表

我們用mysqlmp命令來備份資料庫

c:\mysql\bin\>mysqlmp –u root –p 3306 mysql>d:\backup.sql

執行此語句將把mydb 備份到D盤的backup.sql文件中

備份多個資料庫表

E. linux伺服器操作系統,怎麼實現定時備份資料庫

linux系統下使用腳本定時備份資料庫,代碼如下:

#!/bin/bash
#Setting
#設置資料庫名,資料庫登錄名,密碼,備份路徑,日誌路徑,數據文件位置,以及備份方式
#默認情況下備份方式是mysqlmp,還可以是mysqlmp,mysqldot,如果注釋掉第
#18行,則默認以tag的方式備份
#默認情況下,用root(空)登錄mysql資料庫,備份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home/wang/www/backup/mysql/mysqlbackup
LogFile=/home/wang/www/backup/mysql/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqlmp
#BackupMethod=mysqlhot
#BackupMethod=tar
#SettingEnd
NewFile="$BackupPath"db$(date+%y%m%d).tgz
DumpFile="$BackupPath"db$(date+%y%m%d)
OldFile="$BackupPath"db$(date+%y%m%d--date='5daysago').tgz
echo"-------------------------------------------">>$LogFile
echo$(date+"%y-%m-%d%H:%M:%S")>>$LogFile
echo"--------------------------">>$LogFile
#DeleteOldFile
if[-f$OldFile]
then
rm-f$OldFile>>$LogFile2>&1
echo"[$OldFile]DeleteOldFileSuccess!">>$LogFile
else
echo"[$OldFile]NoOldBackupFile!">>$LogFile
fi
if[-f$NewFile]
then
echo"[$NewFile]TheBackupFileisexists,Can』tBackup!">>$LogFile
else
case$BackupMethodin
mysqlmp*)
if[-z$DBPasswd]
then
mysqlmp-u$DBUser--opt$DBName>$DumpFile
else
mysqlmp-u$DBUser-p$DBPasswd--opt$DBName>$DumpFile
fi
tarczvf$NewFile$DumpFile>>$LogFile2>&1
echo"[$NewFile]BackupSuccess!">>$LogFile
rm-rf$DumpFile
;;
mysqlhot*)
rm-rf$DumpFile
mkdir$DumpFile
if[-z$DBPasswd]
then
mysqlhot-u$DBUser$DBName$DumpFile>>$LogFile2>&1
else
mysqlhot-u$DBUser-p$DBPasswd$DBName$DumpFile>>$LogFile2>&1
fi
tarczvf$NewFile$DumpFile>>$LogFile2>&1
echo"[$NewFile]BackupSuccess!">>$LogFile
rm-rf$DumpFile
;;
*)
/etc/init.d/mysqldstop>/dev/null2>&1
tarczvf$NewFile$DBPath>>$LogFile2>&1
/etc/init.d/mysqldstart>/dev/null2>&1
echo"[$NewFile]BackupSuccess!">>$LogFile
;;
esac
fi
echo"-------------------------------------------"
echo
#lftp-flftp.sh如果有FTP可同時上傳ftp中。

再利用crontab命令生成/var/spool/cron/root 文件:

#crontab–e
//打開一個編輯窗口,第一行會有內容格式的提示,在此輸入命令
//mhdommondowcommand
//具體意義表示:分鍾小時日期月份星期命令,在某月(mon)的某天(dom)或者星期幾(dow)的幾點(h,24小時制)幾分(m)執行某個命令(command)
//如:1002***/home/backup/autobackupmysql.sh(表示零晨二點十分執行備份腳本)

F. 從Linux備份DB2資料庫到AIX上怎麼恢復

DB2資料庫離線和在線全備、增量備份及恢復的具體操作步驟:

1、離線全備份

(1)、首先確保沒有用戶使用DB2:

$db2 list applications for db sample

(2)、停掉資料庫並重新啟動,以便斷掉所有連接:

db2stop force

db2start

(3)、執行備份命令:(使用TSM作為備份的介質)

db2 backup db sample use tsm

備份成功,將會返回一個時間戳。

(4)、檢查備份成功:

Db2 list history backup all for sample ,可以看到多了這個備份的紀錄。

Db2atl query命令也可以看到返回值。

(5)、備註:

首先對主節點(catalog表空間在的節點)執行備份命令,再對另外的節點也做這個操作。

2、 在線備份:

(1)、首先打開一下支持在線備份的資料庫配置參數:

db2 update db cfg for sample using userexit on 啟用用戶出口

db2 update db cfg for sample using logretain on 啟用歸檔日誌

db2 update db cfg for sample using trackmod on 啟用增量備份功能

(需要各個Node都分別做設置)

開啟這些參數後,資料庫處於backup pending狀態,要求做資料庫的離線全備份。做一下離線全備份,參考上面的命令。

(2)、在線備份命令如下:

db2 backup db sample online use tsm

備份成功,返回一個時間戳。

(3)、同樣可以用db2atl 和db2 list history察看備份紀錄。

(4)、備註:

同樣,對每個節點都做這個操作。

3、 在線增量備份

(1)、在開啟了必須的三個參數的情況下,做增量備份:

db2 backup db sample online incremental use tsm

備份成功,返回一個時間戳。

(2)、同樣可以用db2atl 和db2 list history察看備份紀錄。

(3)、還有一種delta的備份:

db2 backup db sample online

incremental delta use tsm

這兩種備份的區別,類似Oracle Exports的Incremental和Cumulative方式,db2的incremental對應oracle的cumulative方式,而db2的delta方式則對應oracle的incremental方式。

(4)、備註:同樣,對每個節點都做這個操作。

4、 恢復資料庫

(1)、手工drop資料庫,模擬災難恢復的情況,執行如下操作:

db2 drop db sample

(2)、恢復備份歷史紀錄(每次backup,不論類型,都會備份歷史紀錄文件)。這里的時間戳應該是最新的:

db2 restore db sample history file use tsm

taken at 20030102223107 buffer 100

(3)、使用db2的恢復幫助工具:

db2ckrst -d sample -t 20030101224424 -r database

命令返回建議的必需的恢復操作命令。

(4)、按照幫助工具的提示,先做版本恢復,恢復命令如下:

db2 restore db sample incremental use tsm taken at 20030101224424 buffer 100

同樣先做主節點的恢復,再做其他節點的恢復操作。

(5)、這時資料庫處於rollforward-pending state的狀態,需要做roll forward 操作:

db2 rollforward db sample to 2003-01-12-13.27.25.000000 on all nodes and stop

前滾到同一個時間點。這個操作要在主節點來做。

5、說明:

(1)、恢復操作也有online和offline的,區別等同backup的操作。

(2)、按照表空間的備份和恢復類似,加子句TABLESPACE ( tablespace-name 即可。表空間級別的備份/恢復操作要求資料庫處於歸檔日誌和啟用增量備份模式下。

(3)、恢復的例子中只做了版本恢復。若還有更新的全備份和增量備份的image,可以依次做恢復(請注意使用db2ckrst的建議恢復次序和次數)之後,最後做roll forward.

G. db2定時備份方法,

db2自身就有備份機制,參考方法如下:

1、 在開始->運行,輸入命令db2cmd,打開一個新的db2命令窗口;

在DB2的「命令窗口」執行下面語句創建備份運行資料庫

db2 create tools catalog cc create new database toolsdb

目的是創建一個命名為toolsdb的資料庫,用來存放任務信息;

2、開啟「任務中心」窗口,如下圖;

請注意「類型」和「DB2實例和分區」按照上圖選擇;

4、在「命令腳本」tab頁中輸入腳本;

BACKUP DATABASE JM_DAJ ONLINE TO "D:DB2_BAK" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 COMPRESS INCLUDE LOGS WITHOUT PROMPTING;

意思是把資料庫JM_DAJ壓縮備份到D:DB2_BAK目錄下(前提是D:DB2_BAK目錄已存在)

5、進入到「安排」tab頁面;

添加一個時間起始點,選擇「重復安排」,如圖所示,注意「運行時許可權」也要填寫,一般為administrator,密碼為登陸windows系統時的密碼,然後就可以點擊「確定」按鈕。

6、至此DB2的自動備份已設置完成,每天備份一次,到「D:DB2_BAK」目錄下找備份文件。

H. 如何在linux下實現mysql資料庫每天自動備份

1. 寫個自動備份的腳本autobackup.sh,內容如下
#!/bin/bash
mysqlmp -p databasename > mydata.sql
2. 更改其為可執行文件 chmod +x autobackup.sh
3. 通過crontab讓系統自動運行這個腳本就好了,如crontab -e
0 0 * * * /路徑到/autobackup.sh
第一個0表示分鍾,第二個0表示0小時也就是零辰第三個*表示每天,第四個*表示每月,第五個*表示每周

I. DB2中怎麼備份遠程資料庫

看你的系統是windows還是linux ,都可以通過相應的遠程連接方式連接到伺服器,然後進入命令行,執行db2 backup database 資料庫名 to 路徑即可;也可以在本地安裝一個db2客戶端工具,之後在開始菜單選擇db2命令行處理器,通過db2 connect to 資料庫名 連接到遠程系統,執行上述備份命令即可