#!/bin/bash
#这个脚本用来备份SQL文件;

sql_home="/home/mysql"
sql_bak_log="$sql_home/xtrabackup.log"
server_conf="/usr/local/sunlight/conf/server.conf"
sql_backup_date=$(date "+%Y%m%d")

if [ -f $server_conf ];then
while read line
do
  eval "$line"
done < $server_conf
else
  dbuser="root"
  sql_passwd=""
  dbhost="127.0.0.1"
  sql_port="3306"
fi

sql_user="$dbuser"
sql_passwd="$dbpass"
sql_host="$dbhost"
sql_port="$dbport"

if [ -z "$sql_user" ];then
  echo "Error! sql user is empty!"
  echo "Error! sql user is empty!" >> $sql_bak_log
  exit 1
fi

if [ -z "$sql_passwd" ];then
  echo "Error! sql password is empty!"
  echo "Error! sql password is empty!" >> $sql_bak_log
  # exit 1
fi

if [ ! -d $sql_home ];then
  mkdir -p $sql_home
  chown mysql:mysql $sql_home
  chmod 700 $sql_home
fi

#check mysql daemon
check_sql_daemon=$(mysql -h"$sql_host" -u"$sql_user"  --password="$sql_passwd" -e "select version();")
if [ $? -ne 0 ];then
  echo "[ Error ] `date "+%Y/%m/%d %H:%M:%S"` [ msg ] We didn't find mysql daemon!"
  echo "[ Error ] `date "+%Y/%m/%d %H:%M:%S"` [ msg ] We didn't find mysql daemon!" >> $sql_bak_log
  exit 1
fi

#check xtrabackup package
check_xtrabackup_rpm=$(rpm -qa|grep xtrabackup | wc -l)
if [ $check_xtrabackup_rpm -ne 1 ];then
  echo "[ Error ] `date "+%Y/%m/%d %H:%M:%S"` [ msg ] xtrabackup does not be installed!"
  echo "[ Error ] `date "+%Y/%m/%d %H:%M:%S"` [ msg ] xtrabackup does not be installed!" >> $sql_bak_log
  exit 1
fi

if [ -e "$sql_home/${sql_backup_date}.tar.gz" ];then
  rm -f "$sql_home/${sql_backup_date}.tar.gz"
fi

sudo -u mysql innobackupex --user=$sql_user --password="$sql_passwd" --socket=/var/lib/mysql/mysql.sock --no-timestamp --stream=tar "$sql_home/" | gzip > "$sql_home/${sql_backup_date}.tar.gz"

if [ $? -eq 0 ];then
  echo "[ Success ] `date "+%Y/%m/%d %H:%M:%S"` [ msg ] The tar.gz package has been finished !" >> $sql_bak_log
else
  echo "[ Error ] `date "+%Y/%m/%d %H:%M:%S"` [ msg ] The first backup step has been failed !" >> $sql_bak_log
  echo "-------------------------------------------------------------------------------------------------" >> $sql_bak_log
  exit 1
fi

chown mysql:mysql  -R /home/mysql

chmod 755 -R /home/mysql

echo "[ Success ] `date "+%Y/%m/%d %H:%M:%S"` Mysql Files Backup Success! " >> $sql_bak_log
echo "-------------------------------------------------------------------------------------------------" >> $sql_bak_log
exit 0

最新文章

  1. c++ 类覆盖方法中的协变返回类型
  2. go语言熟知的开源项目
  3. buaaoo_second_improvement
  4. 3-1.Hadoop单机模式安装
  5. enumerate()用法
  6. Vue.js总结 [2017.6.5]
  7. EF-一对一关系
  8. Nginx性能优化
  9. spoj1825 Free tour II
  10. java-----遇到问题------myeclipse----发布项目到tomcat中lib文件夹没有子项目产生ClassNotFoundException错误
  11. lamp 5.6.36 bug记录
  12. Android数据展示之ListView
  13. java Socket 获取本地主机ip
  14. 20155201 2016-2017-2 《Java程序设计》第九周学习总结
  15. 从event loop规范探究javaScript异步及浏览器更新渲染时机
  16. 转 RMAN: RAC Backup, Restore and Recovery using RMAN
  17. Android 电源管理 -- wakelock机制
  18. 标记语言XML
  19. js文件处理File
  20. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治

热门文章

  1. 推送证书p12文件转换成pem的命令
  2. 【SQL】group by 及 having
  3. laravel基于Bootstrap的成功和失败的提示信息和验证提示信息
  4. 【IAP支付之三】苹果IAP安全支付与防范 receipt收据验证
  5. url 传参数时出现中文乱码该怎么解决
  6. Struts2的基础知识
  7. js 变量的声明能提升 初始化不会提升
  8. &lt;Spark&gt;&lt;Running on a Cluster&gt;
  9. MongoDB的安装及安装为windows服务
  10. 解决 java.lang.ClassNotFoundException: javax.servlet.ServletContext报错