la demanda escena
Nuestro en el servicio en línea, la copia de seguridad de datos se realiza manualmente, ineficiente y no hay registros de registro, para simular el funcionamiento real, de acuerdo con los siguientes requisitos, secuencias de comandos shell escribir a mano a mysqldump copia de seguridad automática de datos, de acuerdo con los siguientes requisitos División I a soluciones por fuera.
1. Copia de seguridad automática de todos los días a las 3:00 am
2. El registro de operación de actualización, log de registro personalizado de escritura
3. copia de seguridad de datos es válida durante 7 días y se eliminan automáticamente después de 7 días
4.Log para indicar el momento de la copia de seguridad de la base de datos
El error debe ser de error
# Respuestas #! / Bin / bash # La siguiente información de configuración en sus propias modificaciones mysql_user = "raíz" de usuario de copia de seguridad #mysql mysql_password = volver "contraseña" #mysql hasta la contraseña del usuario MYSQL_HOST = "localhost" MYSQL_PORT = "3306" mysql_charset = "UTF-8" #mysql codificación backup_db_arr = ( "db1" "db2") # nombre de la base de datos para hacer copia de seguridad, tales como una pluralidad de espaciadas separadas por un espacio ( "db1" "db2" "db3") backup_location = / data / mysql # hacer copias de seguridad de almacenamiento de datos, por favor, no terminan con un "/", esto se mantenga el valor predeterminado, el programa creará automáticamente una carpeta expire_backup_delete = "ON" # copias de seguridad antiguas de borrado se pone en OFF a ON ON a OFF expire_days = 3 # tiempo de expiración predeterminado para el número de días o tres días, esto sólo es efectivo cuando se enciende expire_backup_delete
# El Banco comenzó la siguiente necesidad de modificar BACKUP_TIME = `date +% F:% t` # definir detalles del tiempo de reserva backup_Ymd = `date +% Y-% m-% d` # definir la fecha y hora directorio de reserva backup_3ago = `date -d 'hace 3 días' +% Y-% m-% d` # 3 días antes de la fecha BACKUP_DIR = $ backup_location / $ # backup_Ymd carpeta de respaldo ruta completa welcome_msg = "Bienvenido a las herramientas de copia de seguridad utilizan MySQL!" # 欢迎 语
# Determine si desea iniciar el MySQL, MySQL no se inicia la salida de copia de seguridad mysql_ps = `ps -ef | grep mysql | wc -l` mysql_listen = `netstat -an | grep LISTEN | grep $ MYSQL_PORT | wc -l` si [[$ mysql_ps == 0] -o [$ mysql_listen == 0]]; entonces echo "` date +% M:% t` --error:!! MySQL no se está ejecutando parada de copia de seguridad" salida más echo "Copia de seguridad de Time -` date +% M:% t`" eco `date +% M:% t` - $ welcome_msg ser
# Se conecta a la base de datos MySQL, que no se puede conectar la salida de copia de seguridad mysql -h $ -P $ MYSQL_HOST MYSQL_PORT -u $ mysql_user -p $ mysql_password << finales usar MySQL; seleccionar anfitrión, el usuario de usuario donde el usuario = 'root' y host = 'localhost'; salida fin
flag = `echo $?` si [$ flag = "0"!]; entonces echo "` date +% M:% t` --error: no se puede conectar el servidor MySQL parada de copia de seguridad!" salida más echo "`date +%F:%T` --MySQL connect ok! Please wait......" # 判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份 if [ "$backup_db_arr" != "" ];then #dbnames=$(cut -d ',' -f1-5 $backup_database) #echo "arr is (${backup_db_arr[@]})" for dbname in ${backup_db_arr[@]} do echo "`date +%F:%T` --database $dbname backup start..." `mkdir -p $backup_dir` `mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname --default-character-set=$mysql_charset | gzip > $backup_dir/$dbname-$backup_time.sql.gz` flag=`echo $?` if [ $flag == "0" ];then echo "`date +%F:%T` --database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz" else echo "`date +%F:%T` --database $dbname backup fail!" fi
done else echo "`date +%F:%T` --ERROR:No database to backup! backup stop" exit fi # 如果开启了删除过期备份,则进行删除操作 if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then #`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;` `find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf` echo "`date +%F:%T` --Expired backup data delete complete!" fi echo "`date +%F:%T` --All database backup success! Thank you!" echo "" exit fi |