copia de seguridad de MySQL 2.7-Shell

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

Supongo que te gusta

Origin www.cnblogs.com/lihouqi/p/12664260.html
Recomendado
Clasificación