自動備份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