Linxu云计算—实战自动备份mysql数据库脚本和nginx服务启动脚本

·  阅读 62

自动备份mysql数据库脚本

从centos7.0开始,系统中自带的mysql数据库包,改为mariadb数据库。

MariaDB数据库概述:MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。MariaDB由MySQL的创始人Michael Widenius(迈克尔·维德纽斯)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria(玛丽亚)的名字。 甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。

安装mariadb数据库:

[root@xuegod63 ~]# yum -y install mariadb mariadb-server 
# mariadb 是mysql的客户端命令 ; mariadb-server 是mysql服务端命令
[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数据库
MariaDB [(none)]> show databases;
MariaDB [(none)]> create database xuegod  ;    #创建xuegod数据库
MariaDB [(none)]> use xuegod;        #选择数据库
MariaDB [xuegod]> create table user (id int);   #创建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;   #查看表中的数据
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
复制代码

mysql自动化备份脚本:

思路: 1、检查一下运行环境: 目录是否存在,时间,权限,用户 2、运行要执行的命令:备份,导出数据。。。 3、把命令执行过程中的没有用的文件删除一下 4、弹出命令运行成功的消息

[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用户才能运行
if [ $UID  -ne 0 ];then
echo 脚本必须root用户运行
exit 0
fi
# 判断目录是否存在,不存在则新建,否则如果备份文件存在则退出脚本
if [ ! -d $BAKDIR ];then
        mkdir -p $BAKDIR
elif [ -f $BAKDIR/${FILENAME}.tar.gz ];then
        echo "备份文件已存在"
        exit 1
fi
#使用mysqldump备份数据库
/usr/bin/mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} > ${BAKDIR}/${FILENAME}
cd $BAKDIR && tar -czf ${FILENAME}.tar.gz ${FILENAME}
#查找备份目录下以.sql结尾的文件并删除(不建议)
#[ $? -eq 0 ] && find $BAKDIR -type f -name *.sql -exec rm -rf {} \;
#打包命令执行成功了,提示成功,然后删除100天以前的备份文件
[ $? -eq 0 ] && echo "$FILENAME 数据库备份成功"
cd $BAKDIR && find . -type f -mtime +100 -exec rm -rf {} \;
ls $BAKDIR
tar tvf $BAKDIR/${FILENAME}.tar.gz 
复制代码

加入计划任务

crontab -e
0 3 * * * /bin/bash /root/mysql-back-auto.sh
复制代码

nginx编译脚本

此nginx脚本中使用了函数功能,让脚本具有更强的可读性

[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}存在,继续编译安装步骤"
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 "进入${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服务启动脚本

此nginx脚本中使用了函数功能,让脚本具有更强的可读性

[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   #不存在可执行的文件,则退出
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
复制代码

更多技术干货尽在公众号【学神来啦】,有电子书免费获得。

分类:
代码人生
标签:
收藏成功!
已添加到「」, 点击更改