Skip to content

Latest commit

 

History

History
185 lines (129 loc) · 13.1 KB

File metadata and controls

185 lines (129 loc) · 13.1 KB

12.4 Copia de seguridad y recuperación

En esta sección se discute otro aspecto de la gestión de aplicaciones: copia de seguridad de datos del servidor de producción y recuperación. A menudo nos encontramos con la red de servidores de producción está roto, mal disco duro, bloqueo del sistema operativo, o si la base de datos no está disponible una variedad de circunstancias inusuales, por lo que el personal de mantenimiento necesario para producir aplicaciones y los datos en el servidor para hacer la recuperación de desastres remota, frío preparar hot standby listo. En la siguiente presentación, se explica cómo la aplicación de copia de seguridad, la forma de copia de seguridad / restauración de bases de datos MySQL y bases de datos Redis..

Copia de seguridad de aplicaciones

En la mayoría de entorno de clúster, las aplicaciones Web, la necesidad básica de copia de seguridad, ya que es en realidad una copia del código, que se encuentran en el entorno de desarrollo local, o el sistema de control de versiones tiene que mantener el código. Pero muchas veces, una serie de sitios de desarrollo requieren que los usuarios cargar archivos, entonces necesitamos para estos usuarios subir archivos de copia de seguridad. De hecho, ahora hay un enfoque adecuado es poner las necesidades y los archivos relacionados con el sitio almacenados en el almacenamiento hasta el almacenamiento en la nube, por lo que incluso si el sistema se bloquea, con tal de que todavía Cloud Storage archivo, al menos, los datos no se perdido.

Si no adoptamos caso almacenamiento en la nube, cómo hacer hacer un sitio de copia de seguridad? Aquí te presentamos una herramienta de sincronización de archivos rsync: rsync sitio de respaldo se puede lograr en la sincronización del sistema de archivos diferente, Si las ventanas, entonces, necesitan que versión de Windows cwrsync.

Instalación Rsync

web oficial rsync 's: http://rsync.samba.org/can obtener la última versión de la fuente anterior. Por supuesto, porque rsync es un software muy útil, por lo que muchas distribuciones de Linux lo incluyen, incluida la extensión.

La instalación de paquetes

# sudo apt-get install rsync ; Note: debian, ubuntu and other online installation methods ;
# yum install rsync ; Note: Fedora, Redhat, CentOS and other online installation methods ;
# rpm -ivh rsync ; Note: Fedora, Redhat, CentOS and other rpm package installation methods ;

Otras distribuciones de Linux, utilice los métodos apropiados de gestión de paquetes para instalar. Instalación de los paquetes fuente

tar xvf rsync-xxx.tar.gz
cd rsync-xxx
./configure - prefix =/usr; make; make install 
Nota: Antes de utilizar paquetes de código compilado e instalado, usted tiene que instalar las herramientas del compilador gcc como trabajo

Rsync Configurar

rsync principalmente en los siguientes tres archivos de configuración rsyncd.conf (archivo de configuración global), rsyncd.secrets (archivo de contraseña), rsyncd.motd (información del servidor rysnc).

Varios documentos sobre esta configuración que pueden consultar el sitio web oficial o en otro sitios web introducción rsync, aquí el servidor y el cliente de la forma de abrir

  • Services client opens:

    # /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

  • daemon parametro ejecutar rsync en modo servidor.. Join the rsync boot

    echo 'rsync - daemon' >> /etc/rc.d/rc.local

Establecer contraseña rsync

echo 'Your Username: Your Password' > /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
  • Sincronización del cliente:

Los clientes pueden utilizar el siguiente comando para sincronizar los archivos en el servidor:

rsync -avzP --delete --password-file=rsyncd.secrets [email protected]::www/var/rsync/backup

Este comando, explique brevemente algunos puntos:

  1. -avzP es lo que el lector puede mostrar el -help Show
  2. -delete por ejemplo, A, eliminado un archivo, la sincronización de la hora, B se eliminarán automáticamente los archivos correspondientes
  3. -Password-file del cliente / etc / rsyncd.secrets establecer la contraseña y el servidor de / etc / rsyncd.secrets la contraseña de la misma, por lo que cron se está ejecutando, no se necesita la contraseña
  4. Este comando en el "Nombre de Usuario" para el lado del servicio del / etc / rsyncd.secrets el nombre de usuario
  5. Esta 192.168.145.5 comando como la dirección IP del servidor
  6. :: Www, tenga en cuenta los dos: número, www como un archivo de configuración del servidor / etc / rsyncd.conf en [www], lo que significa que, según el servicio en el cliente / etc / rsyncd.conf sincronizarlos [www] párrafo, un número, cuando se usa de acuerdo con el archivo de configuración no especifica directamente la sincronización de directorios.

Para sincronizar en tiempo real, puede configurar el crontab, manteniendo la sincronización de rsync cada minuto, por supuesto, los usuarios también pueden configurar el nivel de importancia dependiendo del tipo de archivo de la frecuencia de sincronización.

Copia de seguridad de MySQL

Aplicación de base de datos MySQL sigue siendo la corriente principal, la copia de seguridad de MySQL actual de dos maneras: la copia de seguridad en caliente y en frío de copia de seguridad, copia de seguridad en caliente se utiliza principalmente en la actualidad el modo maestro / esclavo modo (maestro / esclavo) se utiliza principalmente para la sincronización de bases de datos separadas de lectura y escritura, pero También se puede utilizar para los datos de copia de seguridad en caliente), sobre cómo configurar esta información, podemos encontrar una gran cantidad. Los datos de backup en frío, entonces eso es un cierto retraso, pero se puede garantizar que el período de tiempo antes de que la integridad de los datos, como a veces puede ser causada por el mal uso de nuestra pérdida de datos, el modelo maestro / esclavo es capaz de recuperar los datos perdidos, pero a través de copia de seguridad en frío puede restaurar parcialmente los datos.

Copia de seguridad en frío shell script se utiliza generalmente para conseguir copia de seguridad periódica de la base de datos y la sincronización de rsync a través de la sala de un servidor que no es local descrito anteriormente.

La siguiente es una copia de seguridad de MySQL script de respaldo programado, utilizamos el programa mysqldump, este comando se puede exportar a un archivo de base de datos.

#!/bin/bash
# The following configuration information, modify their own
mysql_user="USER" #MySQL backup user
mysql_password="PASSWORD" # MySQL backup user's password
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8" # MySQL coding
backup_db_arr=("db1" "db2") # To back up the database name, separated by spaces separated by a plurality of such("db1" "db2" "db3")
backup_location=/var/www/mysql # backup data storage location, please do not end with a "/", this can keep the default, the program will automatically create a folder
expire_backup_delete="ON" # delete outdated backups is turned OFF to ON ON to OFF
expire_days=3 # default expiration time for the three days the number of days, this is only valid when the expire_backup_delete open

# We do not need to modify the following start
backup_time=`date +%Y%m%d%H%M` # define detailed time backup
backup_Ymd=`date +%Y-%m-%d` # define the backup directory date time
backup_3ago=`date-d '3 days ago '+%Y-%m-%d` # 3 days before the date
backup_dir=$backup_location/$backup_Ymd # full path to the backup folder
welcome_msg="Welcome to use MySQL backup tools!" # greeting

# Determine whether to start MYSQL, mysql does not start the backup exit
mysql_ps=`ps-ef | grep mysql | wc-l`
mysql_listen=`netstat-an | grep LISTEN | grep $mysql_port | wc-l`
if [[$mysql_ps==0]-o [$mysql_listen==0]]; then
  echo "ERROR: MySQL is not running! backup stop!"
  exit
else
  echo $welcome_msg
fi

# Connect to mysql database, can not connect to the backup exit
mysql-h $mysql_host-P $mysql_port-u $mysql_user-p $mysql_password << end
use mysql;
select host, user from user where user='root' and host='localhost';
exit
end

flag=`echo $?`
if [$flag!="0"]; then
  echo "ERROR: Can't connect mysql server! backup stop!"
  exit
else
  echo "MySQL connect ok! Please wait......"
   # Judgment does not define the backup database, if you define a backup is started, otherwise exit the backup
  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 "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 "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz"
		  else
			  echo "database $dbname backup fail!"
		  fi
		  
	  done
  else
	  echo "ERROR: No database to backup! backup stop"
	  exit
  fi
   # If you open the delete expired backup, delete operation
  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 "Expired backup data delete complete!"
  fi
  echo "All database backup success! Thank you!"
  exit
fi

Atributos de escritura Modificar shell:

chmod 600 /root/mysql_backup.sh
chmod +x /root/mysql_backup.sh

Establecer atributos, agregue el comando crontab, hemos creado copias de seguridad automáticas regulares todos los días de 00:00, entonces el directorio directorio de scripts de copia de seguridad / var / www / mysql se ajusta a rsync sincronización.

00 00 *** /root/mysql_backup.sh

Recuperación de MySQL

A principios de la copia de seguridad de MySQL en la copia de seguridad en caliente y en frío de copia de seguridad, el propósito principal de copia de seguridad en caliente es ser capaces de recuperar en tiempo real, como por ejemplo un fallo en el disco duro del servidor de aplicaciones ocurrido, después podemos modificar el archivo de configuración de base de datos de lectura y escritura en servidumbre, no sea que puede reducir al mínimo el tiempo de servicio de interrupción.

Pero a veces tenemos que realizar una copia de seguridad en frío de la recuperación de datos SQL, como con la copia de seguridad de base de datos, puede importar con el comando:

mysql -u username -p databse < backup.sql

Se puede ver, la exportación y la importación de datos de base de datos es bastante simple, pero si también necesita para administrar los permisos, o algún otro juego de caracteres, que puede ser un poco más complicado, pero estos todo se puede hacer a través de una serie de comandos.

Backup Redis

Redis es nuestro más utilizado NoSQL, su copia de seguridad también se divide en dos tipos: de copia de seguridad de copia de seguridad en caliente y en frío, Redis también soporta el modo maestro / esclavo, así que nuestra copia de seguridad en caliente se puede lograr de esta manera, podemos referirnos a la configuración correspondiente del funcionario perfiles de documento, bastante simple. Aquí presentamos el modo de copia de seguridad en frío: Redis realmente oportuna dentro de los datos de la caché de memoria guardados en el archivo de base de datos en el interior, sólo copia de seguridad del archivo correspondiente puede ser, es el uso de la copia de seguridad rsync a un previamente descrito sala de máquinas no local puede ser alcanzado .

Redis recuperación

Redis Recuperación divide en copia de seguridad en caliente y en frío de copia de seguridad de recuperación y la recuperación, los propósitos y los métodos de recuperación de MySQL de recuperación de copia de seguridad en caliente y, siempre y cuando la aplicación modificada de la conexión de base de datos correspondiente.

Pero a veces necesitamos de copia de seguridad en frío para recuperar datos, Redis respaldo frío y la recuperación es en realidad sólo hay que poner la copia del archivo de base de datos se guardan en el directorio de trabajo Redis, y luego empezar a Redis en él, Redis en tiempo de arranque se carga automáticamente en la memoria de archivos de base de datos , la velocidad de inicio de la base de datos para determinar el tamaño del archivo.

Resumen

En esta sección se describe la aplicación de una parte de nuestra copia de seguridad y recuperación, es decir, la forma de hacer la recuperación de desastres, incluida la copia de seguridad de archivos, copia de seguridad de base de datos. También introdujeron diferentes sistemas que utilizan la sincronización de archivos rsync, base de datos MySQL y copia de seguridad de base de datos Redis y recuperación, la esperanza de que a través de la introducción de esta sección, puede dar como desarrollador de productos para el programa de recuperación de desastres en línea ofrece una solución de referencia.

Links