在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號 與 相同,但是使用時加引號,並在引號中...