Git Product home page Git Product logo

cluster's Issues

MySQL DB backup

你书上那个MySQL备份脚本不是很理解,于是在网上搜集一个简单的脚本,执行是成功了。但是还有两个问题,想请教一下!(应该还是shell脚本命令没有理解)
`#!/bin/sh

备份数据库

BACKUP_DIR=/data/backup/mysql
DATA_DIR=/data/backup/dbdata

查询mysql中所有数据库名字

SQL_STRING="SELECT SCHEMA_NAME AS db FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'performance_schema');"

DBS=$(echo $SQL_STRING | mysql -u$MYSQL_USER -p$MYSQL_PASS -Bs)

当前日期

DATE=$(date -d '+0 days' +%Y%m%d%H%M)

打包名称

ZIP_NAME="mysql_"$DATE".gz"

删除一个月之前的数据库备份

find $BACKUP_DIR -name "mysql_*.gz" -type f -mtime +30 -exec rm {} ;

循环备份数据库

for DBNAME in $DBS
do
if [ ! -d ${DATA_DIR} ]; then
mkdir -p ${DATA_DIR}
fi
SQL_FILE=$DBNAME-$DATE".sql"
/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DBNAME > $DATA_DIR/$SQL_FILE
done

tar打包所有sql文件到指定路径

tar -czvPf $BACKUP_DIR/$ZIP_NAME $DATA_DIR

打包成功后删除sql文件

if [ $? = 0 ]; then
mv ${SQL_FILE} ${SQL_FILE}.bak
#rm -r $DATA_DIR
fi
Q1.打包的时候虽然指定了存放路径,但是打包文件没有放在指定的路径里,而是跑到了根目录下/ Q2. mv 的时候报错,但是在终端命令行中mv 是可以正常执行的 报错信息:mv: 无法获取"ssm-201704131815.sql" 的文件状态(stat): 没有那个文件或目录`

ssm是一个数据库名称

for DBNAME in mysql test report

#! /bin/bash
USERNAME=root
PASSWORD=root
DATE=`date +%Y-%m-%d_%H%M%S`
OLDDATE=`date +%Y-%m-%d -d '-20 days'` 
FTPOLDDATE=`date +%Y-%m-%d -d '-60 days'`
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
MYSQLADMIN=/usr/bin/mysqladmin
SOCKET=/tmp/mysql.sock
BACKDIR=/data/backup/db

[ -d ${BACKDIR}] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATE}] || mkdir ${BACKDIR}/${DATE}
[ ! -d ${BACKDIR}/${OLDDATE}] || rm -rf ${BACKDIR}/${OLDDATE}

for DBNAME in mysql test report
do
	${MYSQLDUMP} --opt -u${USERNAME} -p${PASSWORD} -S${SOCKET} ${DBNAME} | gzip >
		${BACKDIR}/${DATE}/${DBNAME}-backup-${DATE}.sql.gz
	echo "${DBNAME} has been backup successful"
	/bin/sleep 5
done

HOST=121.121.121.121
FTP_USERNAME=ftpusername
FTP_PASSWORD=ftpuserpaswd
cd ${BACKDIR}/${DATE}
ftp -i -n -v << !
open ${HOST}
user ${FTP_USERNAME} ${FTP_PASSWORD}
bin
cd ${FTPOLDDATE}
mdelete *
cd ..
rmdir ${FTPOLDDATE}
mkdir ${DATE}
cd ${DATE}
mput *
bye
!

这段MySQL备份脚本中的这句话不太理解
for DBNAME in mysql test report
DBNAME是固定写法吗?
后面的test是mysql中的数据库名字吗?
另外一个问题
如果我想备份mysql中所有数据库,与你这个脚本如何结合起来使用呢?
我找的脚本类似这种
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')" for db in $DBS
shell不熟悉,请多多指教

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.