自动备份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