datos / / directorio de copia de seguridad / backup de MySQL script / usr / local / mysql / script nombre del script mysql_data_backup.sh que aquí hay una ruta de escritura personal, buscamos Nota modificar: Se recomienda al usuario de base de datos para crear una cuenta de usuario y la contraseña de una copia de seguridad especial
Siete vacas nube enlace de invitación, requerido por los socios de enlace de invitación puede hacer clic para comprar, una gran cantidad de concesiones, haga clic en el enlace
Crear siete vacas nube Si no desea cargar siete vacas nube de poner la secuencia de comandos en el interior removida como una cuenta de acceso -> Objeto de almacenamiento -> llega a utilizar el nuevo espacio de abajo sk ak
qshell instalación
进入root 目录
cd 空格
新建文件夹qshell
mkdir qshell
然后下载对应版本 qshell 我们Linux 是 64位的
查看命令如下:
uname -a
显示如下,看到我是64位:
Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Luego descargamos la versión correspondiente: https: //github.com/qiniu/qshell
cd qshell
wget http://devtools.qiniu.com/qshell-linux-x64-v2.4.0.zip?ref=developer.qiniu.com
unzip qshell-linux-x64-v2.4.0.zip
重新命名
mv qshell-linux-x64-v2.4.0 qshell
给权限
chmod +x qshell
然后查看下目录,方便设置环境变量
pwd
/root/qshell
设置环境变量,有三种方式,我们采用对所有系统用户生效,永久生效
vi /etc/profile
在末尾添加如下,注意自己 qshell 的路径
export PATH=$PATH:/root/qshell
执行生效
source /etc/profile
然后执行
qshell
会有很多帮助命令列表,这样就代表添加环境变量成功了
A continuación, empezar con la configuración qshell
首先我们需要添加公钥密钥和账号:
命令如下,请注意更换成自己的密钥
ak 和 sk https://portal.qiniu.com/user/key 查看, name 代表自己的七牛账号
qshell account ak sk name
添加完成后使用
qshell user ls 来查看用户列表
script de prueba
cd /usr/local/mysql/script
./mysql_data_backup.sh
tareas regulares crontab -e copia de seguridad de la tarde
01 00 * * * /usr/local/mysql/script/mysql_data_backup.sh >/tmp/log_backup_mysql_$(date +"\%Y\%m\%d\%H\%M\%S").log
Aquí está la secuencia de comandos
#!/usr/bin/env bash
# Function description:
# Backup MySQL databases for each, backup schema and schema with data in one action.
# Usage:
# bash mysql_bash_backup.sh
# Every friday night execute
# 58 23 * * 5 /usr/local/mysql/script/mysql_data_backup.sh >/tmp/log_backup_mysql_$(date +"\%Y\%m\%d\%H\%M\%S").log
USER="`id -un`"
LOGNAME="$USER"
if [ $UID -ne 0 ]; then
echo "WARNING: Running as a non-root user, \"$LOGNAME\". Functionality may be unavailable. Only root can use some commands or options"
fi
old_PATH=$PATH
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
mysql_host=127.0.0.1
mysql_port=3306
mysql_username=root #数据库用户
mysql_password=root #数据库密码
mysql_basedir=/usr/local/mysql
save_old_backups_for_days=13
mysql_bin_mysql=${mysql_basedir}/bin/mysql
mysql_bin_dump=${mysql_basedir}/bin/mysqldump
mysql_backup_dir=/data/backup/mysql
date_format_type_dir=$(date '+%Y%m%d%H%M%S')
echo "--------------------------------"
echo "=> do backup scheduler start at $(date +%Y%m%d%H%M%S)"
# TODO, check user privileges
# check user if have 'RELOAD,EVENT' privileges,etc
# backup role
# GRANT ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,DROP,EXECUTE,INDEX,INSERT,LOCK TABLES,SELECT,UPDATE,SHOW VIEW,RELOAD,EVENT ON *.* TO 'backup_user'@"%";
# FLUSH PRIVILEGES;
[ -d ${mysql_basedir} ] && mysql_datadir=${mysql_basedir}/data || mysql_datadir=/var/lib/mysql
[ -x ${mysql_bin_mysql} ] || mysql_bin_mysql=mysql
[ -x ${mysql_bin_dump} ] || mysql_bin_dump=mysqldump
[ -d ${mysql_backup_dir}/${date_format_type_dir} ] || mkdir -p ${mysql_backup_dir}/${date_format_type_dir}
mysql_databases_list=""
if [ -d ${mysql_datadir} ]; then
mysql_databases_list=`ls -p ${mysql_datadir} | grep / |tr -d /`
else
mysql_databases_list=$(${mysql_bin_mysql} -h${mysql_host} -P${mysql_port} -u${mysql_username} -p${mysql_password} -e "show databases;" )
fi
saved_IFS=$IFS
IFS=' '$'\t'$'\n'
for mysql_database in ${mysql_databases_list};do
if echo ${mysql_database} | grep -Eqvi "^database$|sys|information_schema|performance_schema|^mysql$" ; then
${mysql_bin_dump} -u${mysql_username} -p${mysql_password} --host=${mysql_host} --port=${mysql_port}\
--routines --events --triggers --single-transaction --flush-logs \
--ignore-table=mysql.event --databases ${mysql_database} |& \
gzip > ${mysql_backup_dir}/${date_format_type_dir}/${mysql_database}.sql.gz
[ $? -eq 0 ] && echo "${mysql_database} backup successfully! " || \
echo "${mysql_database} backup failed! "
/bin/sleep 2
${mysql_bin_dump} -u${mysql_username} -p${mysql_password} --host=${mysql_host} --port=${mysql_port}\
--routines --events --triggers --single-transaction --flush-logs \
--ignore-table=mysql.event --databases ${mysql_database} --no-data |& \
gzip > ${mysql_backup_dir}/${date_format_type_dir}/${mysql_database}_schema.sql.gz
[ $? -eq 0 ] && echo "${mysql_database} schema backup successfully! " || \
echo "${mysql_database} schema backup failed! "
/bin/sleep 2
fi
done
IFS=${saved_IFS}
save_days=${save_old_backups_for_days:-10}
need_clean=$(find ${mysql_backup_dir} -mtime +${save_days} -exec ls '{}' \;)
if [ ! -z "${need_clean}" ]; then
find ${mysql_backup_dir} -mtime +${save_days} -exec rm -rf '{}' \;
echo "$need_clean have been cleaned! "
else
echo "nothing can be cleaned, skipped! "
fi
echo "=> do backup scheduler finished at $(date +%Y%m%d%H%M%S)"
echo -e "\n\n\n"
#上传七牛start
echo ${mysql_backup_dir}/${date_format_type_dir} "\n\n\n" ccc "\n\n\n"
if [ -d ${mysql_backup_dir}/${date_format_type_dir} ]; then
bakFile=${mysql_backup_dir}/${date_format_type_dir}
zipFile="${mysql_backup_dir}/mysql_${date_format_type_dir}.zip"
zip -rP "123456" ${zipFile} ${bakFile} #zip 密码压缩
/root/qshell/qshell rput test "mysql_qn_${date_format_type_dir}.zip" ${zipFile} && rm -f ${zipFile} #上传七牛云 test 七牛云账号
fi
#上传七牛over
declare -x PATH=${old_PATH}
Bueno, a esto, hay un problema de comunicación de bienvenida
La tecnología del mar blog en http://www.ypyunedu.com/article/95