返回顶部
首页 > 资讯 > 操作系统 >shell 备份数据库、代码上线的脚本
  • 420
分享到

shell 备份数据库、代码上线的脚本

shell备份数据库shell代码上线 2022-06-04 23:06:10 420人浏览 安东尼
摘要

Shell 脚本 shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script

Shell 脚本

shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

备份Mysql数据库

场景:

一台mysql服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份

需求:

1)每天备份一次,需要备份所有的库
2)把备份数据存放到/data/backup/下
3)备份文件名称格式示例:dbname-2019-11-23.sql
4)需要对1天以前的所有sql文件压缩,格式为gzip
5)本地数据保留1周
6)需要把备份的数据同步到远程备份中心,假如本机可以直接通过rsync命令同步,同步目标地址为192.168.234.125,数据存放目录:/data/mysqlbak/
7)远程备份数据要求保留1个月

脚本:


#!/bin/bash
mysqldump="/usr/local/mysql/bin/mysqldump"
bakdir="/data/backup"
bakuser="backup"
passwd="backup123"
d1=`date +%F`
d2=`date +%d`
#将后面所有的输出都写入到日志
exec &> tmp/bak.log
echo "mysql bakup begin at `date`"
#循环遍历数据库并导出
for db in db1 db2 db3 db4 db5
do
 $mysqldump -u$bakuser -p$passwd $db > $bakdir/$db-$d1.sql
done
#压缩一天前的备份文件
find $bakdir -type f -name "*.sql" -mtime +1 |xargs gzip
#删除一周前的被封文件
find $bakdir -type f -mtime +7 |xargs rm
#把当天的备份文件同步到远程机器
for db in db1 db2 db3 db4 db5
do
 rsync -a $bakdir/$db-$d1.sql rsuser@192.168.234.125::/data/mysqlbak/$db-$d2.sql
done
echo "mysql bakup end at `date`"

补充:

1.远程机器存放的备份文件以库名-日期的具体日命名,就实现了自动保留30天(比如15号备份的文件db1-15.sql下个月1号的备份文件将会覆盖该文件)
2.当数据库较大时,使用mysqldump备份速度会非常慢,这时该使用xtarbackup工具备份或mysql主从复制

代码上线发布脚本

生产环境中一个业务通常跑在多台服务器上,也就是所谓的负载均衡,那么这些机器上运行的代码必须要保持一致,如何实现一致呢?有两种方案

1.通过共享的方式

如果机器量不多,可以使用NFS实现,当然如果要求稳定性最好是使用专业的存储设备(NgqqGsaceiAS、SAN等),这种方式架构如下:

在这里插入图片描述

这种架构的优点是方便维护,比如有代码更新时,只需要更新一台机器上的代码,则其他机器上都会跟着更新。缺点是,机器量大了的话,共享存储会成为瓶颈,甚至由于对文件的争抢造成性能问题。还有一点,共享存储这里是一个很大的单点隐患,不出故障一切都OK,一旦出了故障,则整个业务都挂掉,影响非常大。

2.分布式

既然通过共享的方式有不少缺点,那么就选择另外一种方式,即把代码存到每一台WEB服务器本地磁盘上,如下图所示:

在这里插入图片描述

这样做的好处是,没有存储性能问题,没有资源争抢冲突,也没有单点故障的隐患。缺点是,每次代码更新需要对所有web机器进行更新,比较繁琐。虽然步骤繁琐,但大多数企业都会选择该方式。

通过shell脚本+expect批量发布代码到多台web服务器:

前提:

1)提供一个存放所有web服务器的IP列表文件ip.list
2)假设所有web服务器上有一个普通用户user,密码为user123,该用户为同步代码用户
3)每次代码上线会提供一个文件列表file.list(即要更改的文件的列表)

脚本:


#/bin/bash

#提醒用户,是否更新了要上线的代码列表文件
read -p "你是否已经更新了文件列表./file.list?确认请输入y或者Y,否则按其他任意键退出脚本。" c
#如果直接按回车,也会退出脚本
if [ -z "$c" ]
then
 exit 1
fi
if [ $c == "y" -o $c == "Y" ]
then
 echo "脚本将在2秒后,继续执行。"
 #每秒输出一个.共输出两个.
 for i in 1 2
 do
 echo -n "."
 sleep 1
 done
 echo
else
 exit 1
fi
#判断有无./rsync.exp文件
[ -f ./rsync.exp ] && rm -f ./rsync.exp
#定义rsync.exp
cat >./rsync.exp <<EOF
#!/usr/bin/expect
set passwd "user123"
set host [lindex \$argv 0]
set file [lindex \$argv 1]
spawn rsync -avR --files-from=\$file / user@\$host:/
expect {
 "yes/no" {send "yes\r"}
 "passWord:" {send \$passwd\r}
}
expect eof
EOF
chmod a+x ./rsync.exp
#定义检测文件是否存在的函数
if_file_exist()
{
 if [ ! -f $1 ]
 then
 echo "文件$1不存在,请检查。"
 exit 1
}
#ip.list为所有WEB机器的ip列表
#file.list为要同步的文件列表
if_file_exist ./ip.list
if_file_exist ./file.list
for ip in `cat ./ip.list`
do
 ./rsync.exp $ip ./file.list
done
#善后处理
rm -f ./rsync.exp

注意:在每台web服务器上创建的代码同步用户需要有代码所在目录的写入权限

总结

到此这篇关于shell 备份数据库、代码上线的脚本的文章就介绍到这了,更多相关shell 备份数据库代码上线内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: shell 备份数据库、代码上线的脚本

本文链接: https://lsjlt.com/news/20990.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • shell 备份数据库、代码上线的脚本
    Shell 脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script ...
    99+
    2022-06-04
    shell 备份数据库 shell代码上线
  • 备份数据库的shell脚本
    #!/bin/bash#back_mysql by 2016-11-14bak_dir=/data/backup_db/`date +%Y%m%d`mysqldb=mysqlmysqluser=*****m...
    99+
    2024-04-02
  • Shell 脚本备份MySQL数据库
    (1)思路  <1>安装MySQL数据库  <2>创建数据库,表,插入数据   <3>授权一个用于备份数据库的用户名和密码&nbs...
    99+
    2024-04-02
  • MySQL数据库备份Shell脚本
    此脚本将远程主机或者本地主机上的数据库的数据备份到本地。备份MySQL数据库除了information_schema、performance_schema、mysql自带库的其他生产库。备份时将MySQL数...
    99+
    2024-04-02
  • 两个备份数据库的shell脚本
    备份数据库的shell脚本一 #!/bin/bash#指定运行的脚本shell#运行脚本要给用户执行权限bakdir=/backupmonth=`date +%m`day=`date +%d`year=`d...
    99+
    2022-06-04
    脚本 备份 两个
  • 备份shell脚本实例代码
    1、backup_run.sh #!/bin/sh # backup_run # script to run the backups # loads in a setting fi...
    99+
    2022-06-04
    脚本 备份 实例
  • shell 脚本--备份、还原mysql数据库
    备份mysql数据库#! /bin/bashBPATH=/home/backup/mysql_bakUSER="root"PASSWD="123456"HOST="192.168.1.5"DATE=$(da...
    99+
    2024-04-02
  • linux中mysql备份shell脚本代码
    第一步:在你的linux服务器中定义备份目录: mkdir /var/lib/mysqlbackup cd /var/lib/mysqlbackup 第二步:下面是最重要的一步了,就是写定时备份脚本。 ...
    99+
    2022-06-04
    脚本 备份 代码
  • 如何实现备份数据库的shell脚本
    这篇文章将为大家详细讲解有关如何实现备份数据库的shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。备份数据库的shell脚本一代码如下:#!/bin/bash#指定运行的脚本shell#运行脚本...
    99+
    2023-06-09
  • 数据库脚本备份
    rem *******************************Code Start*****************************@echo offset "Ymd=%date:~,4%%...
    99+
    2024-04-02
  • 使用shell脚本怎么备份数据库
    今天就跟大家聊聊有关使用shell脚本怎么备份数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Shell 脚本 Shell 脚本(shell script),是一种为 shell...
    99+
    2023-06-09
  • VPS自动备份数据库到FTP的脚本代码
    1)确保自己在home目录(若不是,运行:cd /home) 2)新建backup文件夹(命令:mkdir backup) 3)新建脚本backup.sh vi backup.sh 复制以下代码(复制完后:...
    99+
    2022-06-04
    脚本 自动备份 代码
  • 备份网站内容的shell脚本代码
    备份网站内容 #!/bin/bash#指定运行的脚本shell#运行脚本要给用户执行权限bakdir=/backupmonth=`date +%m`day=`date +%d`year=`date +%Y...
    99+
    2022-06-04
    脚本 备份 代码
  • MySQL 数据库备份脚本
    MySQL 数据库备份脚本 #!/bin/bash # 数据库连接信息 DB_HOST="127.0.0.1" DB_PORT="3306" DB_USER="root" DB_PASSWD="root" # 时间格式化,如 20...
    99+
    2015-10-18
    MySQL 数据库备份脚本
  • PostgreSQL 数据库备份脚本
    PostgreSQL 数据库备份脚本 #!/bin/bash # PG家目录(/opt/postgresql/pg96/) PG_HOME=${PGHOME} # pg数据库连接信息 PG_HOST="127.0.0.1" PG_P...
    99+
    2014-07-22
    PostgreSQL 数据库备份脚本
  • MongoDB 数据库备份脚本
    #!/bin/bash #backup MongoDB #mongodump命令路径 DUMP=/usr/local/mongodb/bin/mongodump#临时备份目录OUT_DIR=/data...
    99+
    2024-04-02
  • Oracle数据库备份脚本
    物理备份脚本 #!/bin/sh export TMPDIR=$TMP; export ORACLE_SID=orcl; export ORACLE_BASE=/u01...
    99+
    2024-04-02
  • 线上mysql数据库备份
    #!/bin/bash #=============================================================================# FileName: M...
    99+
    2024-04-02
  • python oracle数据库备份脚本
    学习python,将shell备份脚本改成了python脚本练手.python oracle备份脚本一例如下。#!/usr/bin/env python   # -*- coding: utf-8 -*-  import time impo...
    99+
    2023-01-31
    脚本 备份 数据库
  • MySQL数据库全库备份及增量备份脚本
    脚本网盘链接下载。 1、全库备份脚本如下: #!/bin/bash ############### 定义默认值 ################# user='root' passwd='123.com...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作