vlambda博客
学习文章列表

自动备份mysql数据库脚本和nginx服务启动脚本


自动备份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@Linux 1 ~]# yum -y install mariadb mariadb-server

#mariadb是mysql的客户端命令;mariadb-server是mysql服务端命令

[root@Linux 1 ~]# rpm -qlmariadb

[root@Linux 1 ~]# systemctl start mariadb

登录mysql:

[root@Linux 1 ~]# mysqladmin  -u root password "123456"#给root用户配置一个密码 123456

[root@Linux 1 ~]# 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]# vimmysql-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@Linux 1 ~]# 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@Linux 1 ~]# sh setup_nginx.sh

nginx服务启动脚本

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

[root@Linux 1 ~]# 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@Linux 1 ~]# chmod +x /etc/init.d/nginx

[root@Linux 1 ~]# chkconfig --add /etc/init.d/nginx

[root@Linux 1 ~]# chkconfig nginx on

[root@Linux 1 ~]# chkconfig --list

[root@Linux 1 ~]# systemctl status nginx

[root@Linux 1 ~]# systemctl start nginx

[root@Linux 1 ~]# systemctlstatusnginx