1.编写一键备份MYSQL数据库脚本;

1)支持任意单个或者多个数据库的备份;
2)支持多个数据库、所有库备份;

思路:

  • 备份mysql数据库命令
#到处mysql所有库的数据到mysql_all.sql
mysqldump -uroot -p123456 -a > mysql_all.sql
#备份到对应的服务器
scp /root/mysql_all.sql 192.168.142.100:/tmp/mysql
cp /root/mysql_all.sql /tmp/mysql/
#备份到想要存放的目录
mysqldump -uroot -p123456 -a > /tmp/mysql/mysql_all.sql
  • 支持任意单个或多个库的备份
#!/bin/bash
DATABASE_1=$1
DATABASE_2=$2
MYSQL_PASSWD=123456
MYSQL_USER=root
BACKUP_DIR=/tmp/mysql_bak/
mkdir -p ${BACKUP_DIR}if [ $DATABASE_1 != " " ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $DATABASE_1   > ${DATABASE_1}.sqlelif [ $? -eq 0 ];thencp ${DATABASE_1}.sql ${BACKUP_DIR}echo "已备份{$DATABASE_1}库,备份为名${DATABASE_1}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在${DATABASE_1}数据库,备份失败"
fi
if [ $DATABASE_2 != " " ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $DATABASE_2   > ${DATABASE_2}.sqlelif [ $? -eq 0 ];thencp ${DATABASE_2}.sql ${BACKUP_DIR}echo "已备份{$DATABASE_2}库,备份为名${DATABASE_2}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在${DATABASE_2}数据库,备份失败"
fi输出:
[root@node1 ~]# sh 1.sh 1 2
mysqldump: Got error: 1049: "Unknown database '1'" when selecting the database
mysqldump: Got error: 1049: "Unknown database '2'" when selecting the database#弊端
#1、无法输出后面判断
#2、会创建2个空的sql 1.sql 2.sql
  • 修正:
#!/bin/bash
read -p "请输入你需要备份的数据库:" DATABASE_1 DATABASE_2
MYSQL_PASSWD=123456
MYSQL_USER=root
BACKUP_DIR=/tmp/mysql_bak/
mkdir -p ${BACKUP_DIR}
touch test.txt
mysql -u$MYSQL_USER -p$MYSQL_PASSWD -e "show databases;"| grep $DATABASE_1 > test.txt
CAT_TEXT=$(cat test.txt|wc -l)
if [ $CAT_TEXT -ne 0 ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $DATABASE_1   > ${DATABASE_1}.sqlcp ${DATABASE_1}.sql ${BACKUP_DIR}echo "已备份[$DATABASE_1]库,备份为名${DATABASE_1}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在$[DATABASE_1]数据库,备份失败"
fimysql -u$MYSQL_USER -p$MYSQL_PASSWD -e "show databases;"| grep $DATABASE_2 > test.txt
CAT_TEXT=$(cat test.txt|wc -l)
if [ $CAT_TEXT -ne 0 ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $DATABASE_2   > ${DATABASE_2}.sqlcp ${DATABASE_2}.sql ${BACKUP_DIR}echo "已备份[$DATABASE_2]库,备份为名${DATABASE_2}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在$[DATABASE_2]数据库,备份失败"
fi
#需要备份更多库,就在下面同样加上DATABASE_3以及添加上相应的代码即可。
  • 支持多个数据库、所有库备份

版本1:

#!/bin/bash
read -p "请输入你需要备份的数据库:" DATABASE_1 DATABASE_2
MYSQL_PASSWD=123456
MYSQL_USER=root
BACKUP_DIR=/tmp/mysql_bak/
mkdir -p ${BACKUP_DIR}
touch test.txt
mysql -u$MYSQL_USER -p$MYSQL_PASSWD -e "show databases;"| grep $DATABASE_1 > test.txt
CAT_TEXT=$(cat test.txt|wc -l)
if [ $CAT_TEXT -ne 0 ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $DATABASE_1 > ${DATABASE_1}.sqlcp ${DATABASE_1}.sql ${BACKUP_DIR}echo "已备份[$DATABASE_1]库,备份为名${DATABASE_1}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在$[DATABASE_1]数据库,备份失败"
fimysql -u$MYSQL_USER -p$MYSQL_PASSWD -e "show databases;"| grep $DATABASE_2 > test.txt
CAT_TEXT=$(cat test.txt|wc -l)
if [ $CAT_TEXT -ne 0 ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $DATABASE_2   > ${DATABASE_2}.sqlcp ${DATABASE_2}.sql ${BACKUP_DIR}echo "已备份[$DATABASE_2]库,备份为名${DATABASE_2}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在$[DATABASE_2]数据库,备份失败"
fi

版本2:

#!/bin/bash
#2022年6月6日
###################
MYSQL_PASSWD=123456
MYSQL_USER=root
BACKUP_DIR=/tmp/mysql_bak/
DATE=$(date +%F)
if [ $# -eq 0 ];thenecho "请在脚本后,输入要备份的数据库名。"exit
fi
if [[ $* != "all" ]];thenecho "无需备份全部库"
elseecho "开始备份全部库。"mysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -A > all_${DATE}.sqlcp all_${DATE}.sql ${BACKUP_DIR}echo "备份库名为:all_${DATE}.sql"exit
fi
for BASE_UP in $*
do
mysql -u$MYSQL_USER -p$MYSQL_PASSWD -e "show databases;"| grep ${BASE_UP} > test.txt
CAT_TEXT=$(cat test.txt|wc -l)
if [ $CAT_TEXT -ne 0 ];thenmysqldump -u$MYSQL_USER -p$MYSQL_PASSWD -B $BASE_UP > ${BASE_UP}_${DATE}.sqlcp ${BASE_UP}_${DATE}.sql ${BACKUP_DIR}echo "已备份${BASE_UP}库,备份为名${BASE_UP}_${DATE}.sql,备份目录${BACKUP_DIR}"
elseecho "不存在${BASE_UP}数据库,备份失败"
fi
done

2.编写一键Nginx虚拟主机添加脚本;

1)支持任意单个或者多个虚拟主机添加;
2)支持多个虚拟主机添加;

#!/bin/bash
#2022年6月6日
#一键Nginx虚拟主机添加脚本
###################
NG_BASE_DIR=/data/nginx
NG_CONF_DIR=${NG_BASE_DIR}/conf/sleep
NG_HTML_DIR=${NG_BASE_DIR}/html
if [ $# -eq 0 ];thenecho "请输入你要添加的域名"exit
fi#判断虚拟主机配置目录是否存在
if [ ! -d ${NG_CONF_DIR} ];thenmkdir -p ${NG_CONF_DIR}
fi
#配置输入域名的配置文件
for CONF_NAME in $*
doecho "检查虚拟主机配置,有则跳过,没有则创建"if [ ! -f ${NG_CONF_DIR}/${CONF_NAME}.conf ];thentouch ${NG_CONF_DIR}/${CONF_NAME}.confecho "虚拟主机${CONF_NAME}不存在,在${NG_CONF_DIR}下创建新建虚拟文件${CONF_NAME}.conf"elseecho "虚拟主机${CONF_NAME}存在"fiif [ ! -d ${NG_HTML_DIR}/${CONF_NAME} ];thenmkdir -p ${NG_HTML_DIR}/${CONF_NAME}echo "${CONF_NAME}" > ${NG_HTML_DIR}/${CONF_NAME}/index.htmlecho "创建了${CONF_NAME}虚拟主机目录及首页文件index.html"elseecho "${CONF_NAME}项目已经存在。"fiecho "添加虚拟主机配置文件"
cat > ${NG_CONF_DIR}/${CONF_NAME}.conf << EOF
server {listen 80;server_name ${CONF_NAME};location / {root ${NG_HTML_DIR};index index.html;}
}
EOF
echo "虚拟主机${NG_HTML_DIR}/${CONF_NAME}已经配置成功"
echo "-----------------------------------------------------------------"
done
#检查并平滑重启nginx
${NG_BASE_DIR}/sbin/nginx -t
${NG_BASE_DIR}/sbin/nginx -s reload
echo "已检查并且平滑重启"
echo "ls -l ${NG_HTML_DIR}"
ls -l ${NG_HTML_DIR}

3)支持删除虚拟主机、多个虚拟主机删除;

#!/bin/bash
#2022年6月6日
#支持删除虚拟主机、多个虚拟主机删除脚本
###################
NG_BASE_DIR=/data/nginx
NG_CONF_DIR=${NG_BASE_DIR}/conf/sleep
NG_HTML_DIR=${NG_BASE_DIR}/html
if [ $# -eq 0 ];thenecho "请输入你要删除的域名"exit
fi#配置输入域名的配置文件
for CONF_NAME in $*
doecho "检查虚拟主机配置,有则删除,没有则跳过"if [  -f ${NG_CONF_DIR}/${CONF_NAME}.conf ];thenrm -f  ${NG_CONF_DIR}/${CONF_NAME}.confecho "虚拟主机${CONF_NAME}存在,删除${NG_CONF_DIR}下虚拟文件${CONF_NAME}.conf"elseecho "虚拟主机${CONF_NAME}不存在"fiif [ -d ${NG_HTML_DIR}/${CONF_NAME} ];thenrm -fr ${NG_HTML_DIR}/${CONF_NAME}echo "删除${CONF_NAME}虚拟主机目录及首页文件index.html"elseecho "${CONF_NAME}项目不存在。"fi
echo "虚拟主机${NG_HTML_DIR}/${CONF_NAME}已经删除成功"
echo "-----------------------------------------------------------------"
done
#检查并平滑重启nginx
${NG_BASE_DIR}/sbin/nginx -t
${NG_BASE_DIR}/sbin/nginx -s reload
echo "已检查并且平滑重启"
echo "ls -l ${NG_HTML_DIR}"
ls -l ${NG_HTML_DIR}

编写一键备份MYSQL数据库脚本; 一键Nginx虚拟主机添加、删除脚本;相关推荐

  1. 一键备份MYSQL数据库脚本

    编写一键备份MYSQL数据库脚本: 1)支持单个任意数据库的备份: 2)支持多个数据库同时备份: 3)支持所有数据库同时备份. 备份单个数据库 #!/bin/bash #mysql DB backup ...

  2. 使用Python3编写脚本一键备份MySQL数据库

    假设,MySQL的连接信息如下: host: 192.168.1.4 port: 3306 user: root password: mypassword 现在,我们需要对这台服务器上的数据库进行备份 ...

  3. 编写一键备份MYSQL数据库脚本

    远程备份mysql数据库 1.mysql需要有远程访问权限 这里我为了方便,就设置所有地址都可以访问了.如果没有,在数据库中执行如下命令 创建备份用户及授权 >grant select,lock ...

  4. 一键备份MySQL数据库

    将如下代码另存为.bat文件 @echo off echo. echo      MySQL数据库备份 echo ***************************** echo. echo 今天 ...

  5. 宝塔mysql data修改_宝塔一键修改mysql数据库存放路径,更改默认数据目录…

    宝塔一键修改mysql数据库存放路径,更改默认数据目录脚本! 该shell脚本仅限于宝塔bt.cn linux面板使用,希望对有需要的朋友有所帮助,如有问题请留言! 主要参数功能: 1.默认修改数据库 ...

  6. linux php mysqldump,Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)

    利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使用) 设计该脚本的一些设计.编写考虑: 利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使 ...

  7. Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)

    设计该脚本的一些设计.编写考虑: 该脚本适用于编译安装mysql和通过yum或apt-get等安装方式 该脚本可以反复执行,不会重复覆盖数据 可增加,删除N天前的备份以节省磁盘空间 充分利用mysql ...

  8. mysql数据库优化器_mysql数据库运维利器-一键生成MySQL数据库优化建议-【安基网】...

    概述MySQLTuner is a script written in Perl that allows you to review a MySQL installation quickly and ...

  9. mysql数据自动备份_每天自动备份MySQL数据库的shell脚本

    经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的.一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行.我们需要一种安全的,每天自动备份的方法 ...

最新文章

  1. Ubuntu下Sublime Text 3解决无法输入中文的方法
  2. 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)...
  3. kafka原理_Kafka动态配置实现原理解析
  4. 分组合计且排序和显示名称
  5. ruby 生成随机字符串_Ruby程序生成随机数
  6. 周鸿祎评互联网大佬的编程能力:我能排前三
  7. 8能达到go速度吗 php_相同逻辑的php与golang代码效率对比,最好语言落谁家…
  8. 图像处理-图像增强(二)
  9. java 安全策略,编程式安全策略配置
  10. 2.2 LayoutInflater 加载布局文件源码
  11. C#控制 计算机中“服务”的启动与停止 转
  12. nginx 负载均衡 404_Nginx+.Net Core实现项目负载均衡
  13. 转载于:http://blog.csdn.net/iorikyo/article/details/1314892
  14. c执行cmd pdf2swf_PDF在线翻阅开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)【转】
  15. android switch的使用方法,Android开关控件,ToggleButton和Switch使用大全
  16. 天牛群,天牛须结合粒子群算法BAS-PSO。研究生阶段毕生所 学,低价出售!可定制pid参数整定。
  17. 汽车4G车载TBOX智能终端
  18. 【ESP8266 ES01 小爱】使用ESP 8266 WOL 远程唤醒电脑
  19. web课程设计网页规划与设计:个人毕设网站设计 —— 二手书籍(11个页面) HTML+CSS+JavaScript
  20. 【机器学习】图像语义分割常用指标Dice系数 敏感性 特异性 IOU及python代码实现

热门文章

  1. 迅捷在线压缩将JPG图片压缩的方法
  2. bzoj 2118 墨墨的等式 - 图论最短路建模
  3. 【word】插入mathtype公式,造成前后文本不同行
  4. android百分号运算符计算器,请教这个计算器中的百分号与分数计算的代码。
  5. hdu-1004 Let the Balloon Rise
  6. layui分页limit不显示_layui表格分页不生效怎么解决?
  7. jmail支持的邮箱
  8. ios内存管理机制基础
  9. mysql 存储过程 长字符串_mysql存储过程瓜分字符串
  10. DDLDML课堂练习(MySQL)