Linxu云計(jì)算如何自動備份mysql數(shù)據(jù)庫腳本和nginx服務(wù)啟動腳本?

自動備份mysql數(shù)據(jù)庫腳本

從centos7.0開始,系統(tǒng)中自帶的mysql數(shù)據(jù)庫包,改為mariadb數(shù)據(jù)庫。

MariaDB數(shù)據(jù)庫概述:MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個分支,主要由開源社區(qū)在維護(hù),采用GPL授權(quán)許可MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。MariaDB由MySQL的創(chuàng)始人Michael
Widenius(邁克爾·維德紐斯)主導(dǎo)開發(fā),他早前曾以10億美元的價格,將自己創(chuàng)建的公司MySQL
AB賣給了SUN,此后,隨著SUN被甲骨文收購,MySQL的所有權(quán)也落入Oracle的手中。MariaDB名稱來自Michael
Widenius的女兒Maria(瑪麗亞)的名字。
甲骨文公司收購了MySQL后,有將MySQL閉源的潛在風(fēng)險,因此社區(qū)采用分支的方式來避開這個風(fēng)險。
過去一年中,大型互聯(lián)網(wǎng)用戶以及Linux發(fā)行商紛紛拋棄MySQL,轉(zhuǎn)投MariaDB陣營。MariaDB是目前最受關(guān)注的MySQL數(shù)據(jù)庫衍生版,也被視為開源數(shù)據(jù)庫MySQL的替代品。
更多技術(shù)干貨盡在公眾號【學(xué)神來啦】,更有電子書免費(fèi)獲得哦!

安裝mariadb數(shù)據(jù)庫:

[root@xuegod63 ~]# yum -y install mariadb mariadb-server 
# mariadb 是mysql的客戶端命令 ; mariadb-server 是mysql服務(wù)端命令
[root@xuegod63 ~]# rpm -ql mariadb
[root@xuegod63 ~]# systemctl start mariadb

登錄mysql:
[root@xuegod63 ~]# mysqladmin  -u root password "123456"   #給root用戶配置一個密碼123456
[root@xuegod63 ~]# mysql -u root -p123456  #登錄mysql數(shù)據(jù)庫
MariaDB [(none)]> show databases;
MariaDB [(none)]> create database xuegod  ;    #創(chuàng)建xuegod數(shù)據(jù)庫
MariaDB [(none)]> use xuegod;        #選擇數(shù)據(jù)庫
MariaDB [xuegod]> create table user (id int);   #創(chuàng)建user表,只有一個id字段
MariaDB [xuegod]> insert into user values(1);   #插入一條記錄,id字段值1
MariaDB [xuegod]> insert into user values(2);   #插入一條記錄,id字段值2
MariaDB [xuegod]> select * from user;   #查看表中的數(shù)據(jù)
+------+
| id   |
+------+
|    1 |
|    2 |
+------+

mysql自動化備份腳本:

思路:
1、檢查一下運(yùn)行環(huán)境: 目錄是否存在,時間,權(quán)限,用戶
2、運(yùn)行要執(zhí)行的命令:備份,導(dǎo)出數(shù)據(jù)。。。
3、把命令執(zhí)行過程中的沒有用的文件刪除一下
4、彈出命令運(yùn)行成功的消息

[root@localhost shell]# vim mysql-back-auto.sh
#!/bin/bash
# 自動備份mysql腳本
# 定義變量
BAKDIR=/data/backup/mysql
MYSQL_DATABASE=xuegod
FILENAME=${MYSQL_DATABASE}_`date +%Y-%m-%d`.sql
MYSQL_USER=root
MYSQL_PASSWORD=123456

# 腳本必須是root用戶才能運(yùn)行
if [ $UID  -ne 0 ];then
echo 腳本必須root用戶運(yùn)行
exit 0
fi
# 判斷目錄是否存在,不存在則新建,否則如果備份文件存在則退出腳本
if [ ! -d $BAKDIR ];then
        mkdir -p $BAKDIR
elif [ -f $BAKDIR/${FILENAME}.tar.gz ];then
        echo "備份文件已存在"
        exit 1
fi
#使用mysqldump備份數(shù)據(jù)庫
/usr/bin/mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} > ${BAKDIR}/${FILENAME}
cd $BAKDIR && tar -czf ${FILENAME}.tar.gz ${FILENAME}
#查找備份目錄下以.sql結(jié)尾的文件并刪除(不建議)
#[ $? -eq 0 ] && find $BAKDIR -type f -name *.sql -exec rm -rf {} \;
#打包命令執(zhí)行成功了,提示成功,然后刪除100天以前的備份文件
[ $? -eq 0 ] && echo "$FILENAME 數(shù)據(jù)庫備份成功"
cd $BAKDIR && find . -type f -mtime +100 -exec rm -rf {} \;
ls $BAKDIR
tar tvf $BAKDIR/${FILENAME}.tar.gz 

加入計(jì)劃任務(wù)

crontab -e
0 3 * * * /bin/bash /root/mysql-back-auto.sh

nginx編譯腳本

此nginx腳本中使用了函數(shù)功能,讓腳本具有更強(qiáng)的可讀性

[root@xuegod63 ~]# vim setup_nginx.sh
#!/bin/bash
#編譯安裝nginx-1.18.0
#定義變量
prefix=/usr/local/nginx
setup_file=nginx-1.18.0.tar.gz
setup_dir=/root/
setup_version=nginx-1.18.0
setup_url=http://nginx.org/download/nginx-1.18.0.tar.gz
#檢查文件是否存在,不存在則下載
check_file(){
if [ ! -f ${setup_dir}${setup_file} ];then
    cd ${setup_dir} && wget ${setup_url}
else
    cd ${setup_dir}
    echo "${setup_dir}${setup_file}存在,繼續(xù)編譯安裝步驟"
fi
if [ ! -d ${prefix} ];then
    mkdir -p /usr/local/nginx
else
    echo "${prefix}存在"
fi
}
make1(){
check_file;
if [ -f ${setup_dir}${setup_file} ];then
    tar -xvf ${setup_dir}${setup_file}
    if [ $? -eq 0 ];then
        echo "解壓成功"
        cd ${setup_dir}${setup_version}
        echo "進(jìn)入${PWD}目錄"
        yum install -y pcre-devel zlib-devel
        ./configure --prefix=${prefix} 
        make -j 4 && make install
        if [ $? -eq 0 ]; then
            echo "編譯完成"
            exit 0
        else
            echo "編譯失敗請檢查!"
            exit 1
        fi
    fi

fi
}
make1 
[root@xuegod63 ~]# sh setup_nginx.sh

nginx服務(wù)啟動腳本

此nginx腳本中使用了函數(shù)功能,讓腳本具有更強(qiáng)的可讀性

[root@xuegod63 ~]# vim /etc/init.d/nginx    
#!/bin/bash
#chkconfig: 2345 80 90
#description:nginx run
# nginx啟動腳本
PATH_NGINX=/usr/local/nginx      #nginx路徑
DESC="nginx daemon"       #nginx描述
NAME=nginx
DAEMON=$PATH_NGINX/sbin/$NAME   #/usr/local/nginx/sbin/nginx #nginx命令的絕對路徑 
PIDFILE=$PATH_NGINX/logs/${NAME}.pid
SCRIPTNAME=/etc/init.d/$NAME
[ -x "$DAEMON" ] || exit 0   #不存在可執(zhí)行的文件,則退出
do_start()
{
        [ ! -f "${PIDFILE}" ] && ${DAEMON} || echo -n " nginx already running"
        ps_aux
}
do_stop()
{
        [ -f "${PIDFILE}" ] && $DAEMON -s stop || echo -n " nginx not running"
}
do_reload()
{
        $DAEMON -s reload || echo -n "\n nginx can't reload"
}
ps_aux() {
        echo ""
        ps aux | grep "${NAME}" | grep -v "grep"
}
case "$1" in
    start)                
        echo -n "Starting $DESC: $NAME"
                do_start
                echo "."
        ;;
        stop)
                echo -n "Stopping $DESC: $NAME"
                do_stop
                echo "."
        ;;
        reload|graceful)
         echo -n "Reloading $DESC configuration..."
                do_reload
                echo "."
        ;;
        restart)
                echo -n "Restarting $DESC: $NAME"
                do_stop
                sleep 1
                do_start
        ;;
        *)
                echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" 
                exit 1
        ;;
esac
exit 0
[root@xuegod63 ~]# chmod +x /etc/init.d/nginx
[root@xuegod63 ~]# chkconfig --add /etc/init.d/nginx
[root@xuegod63 ~]# chkconfig nginx on
[root@xuegod63 ~]# chkconfig --list
[root@xuegod63 ~]# systemctl status nginx
[root@xuegod63 ~]# systemctl start nginx
[root@xuegod63 ~]# systemctl status nginx
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容