編寫shell指令碼對mysql資料庫進行定時備份

2021-07-22 09:14:30 字數 2715 閱讀 1559

在linux上安裝mysql並建立測試庫,編寫shell指令碼對此庫使用mysqldump進行定時備份和歷史備份檔案清理(保留3天),注意指令碼的通用性和擴充套件性

#安裝服務端

yum install mysql-server

yum install mysql-devel

#安裝客戶端

yum install mysql

#啟動mysql

service mysqld start 或 /etc/init.d/mysqld start

#停止mysql

service mysqld stop

#設定密碼

mysqladmin -u root password ***

#登入mysql

mysql -u root -p

#建立資料庫

create database users;

#建立表

create tablse student(

id integer auto_increment not null primary key,

name varchar(30) );

#插入一條資料

insert into student(name) values("congju");

#檢視資料                                    

select * from student;

mysql自帶的工具,允許你以sql命令集的形式將整個資料庫匯出到乙個單獨的檔案中。

#將users資料庫備份到/root/user.dump檔案中 

#儲存備份個數

number=3

#備份儲存路徑

backup_dir=/root/mysqlbackup

#日期dd=`date +%y%m%d`

#備份工具

tool=mysqldump

#使用者名稱

username=root

#密碼password=******

#將要備份的資料庫

database_name=users

#簡單寫法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.dump

$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.dump

#寫建立備份日誌

echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

#找出需要刪除的備份

delfile=`ls -l -crt $backup_dir/*.dump | awk '' | head -1`

#判斷現在的備份數量是否大於$number

count=`ls -l -crt $backup_dir/*.dupm | awk '' | wc -l`

if [ $count -gt $number ]

then

rm $delfile //刪除最早生成的備份,只保留number數量的備份

#寫刪除檔案日誌

echo "delete $delfile" >> $backup_dir/log.txt

fi

定時時需要在 /etc/crontab 加入以下**

30 5 * * * /root/users.sh
上邊表示在每天的5點30分進行資料庫的備份

今天的日期是 2016-09-03

1 首先執行指令碼 users.sh 產生乙個當前日期的備份

2 然後依次複製3個備份

3 刪除 當前的備份

4 執行 users.sh指令碼,看執行效果

cat log.txt
經測試,上述過程可以實現對mysql指定資料庫進行備份



編寫Shell指令碼

獲取變數的方式 1 echo path 2 echo 3 echo path 引數的提取 引數的個數 n 第n個引數 0 當前指令碼名稱 取出所有引數 shift 引數左移 執行過程 2 編寫指令碼內容 單獨講解 3 新增執行許可權 chmod a x abc.sh 4 當前目錄執行 abc.sh ...

Shell 指令碼編寫

shell 指令碼與 windows dos 下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比 windows 下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,它使用了 linux unix 下的命令。方法一...

shell指令碼編寫

echo echo n不換行輸出,echo e會處理特殊字元,比如有 n則會換行 printf 不自動換行輸出 print 自動換行輸出 傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數。指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中...