inotify + rsync copia de seguridad en tiempo real
Preparación ambiental
Dos centos7, cierre el firewall y selinux
A extremo de respaldo —— 192.168.112.153 [lado del servidor]
B fuente de respaldo —— 192.168.112.172 [lado del cliente]
Introducción
- Inotify es un mecanismo de monitoreo de eventos de sistema de archivos asíncrono, de grano fino y poderoso. El kernel de Linux ha agregado soporte de Inotify desde 2.6.13. Inotify puede monitorear la adición, eliminación, modificación y movimiento del sistema de archivos. Event, al usar esta interfaz del kernel, el software de terceros puede monitorear varios cambios de archivos en el sistema de archivos, e inotify-tools es un software de terceros
- Rsync tiene las ventajas de alta seguridad, respaldo rápido y soporte para respaldo incremental. A través de rsync, los requisitos de respaldo de datos que no requieren desempeño en tiempo real pueden resolverse, pero rsync no puede monitorear ni sincronizar datos en tiempo real.
principio
- Inotify solo necesita implementarse en el cliente de sincronización, cuando el archivo monitoreado cambia, el script rsync se activa para sincronizar
Operación en A
1. Instale EPEL
yum -y install epel-release
2. Instale los servicios inotify y rsync
yum -y install inotify-tools rsync
3. Modifique el archivo de configuración rsync
vim /etc/rsyncd.conf
uid=root
gid=root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[mysqldata]
path = /data/mysqldata
comment = mysql data
ignore errors
read only = no
write only = no
hosts allow = 192.168.112.172
list = false
auth users = rsync_user
secrets file = /etc/rsync.password
- Nota: ip escribe la ip de B [es decir, la ip del cliente], ¡
y es necesario crear la ruta de la ruta! ! !
4. Crea un directorio
mkdir -p /data/mysqldata
5. Cree archivos de nombre de usuario y contraseña de rsync y agregue permisos
echo "rsync_user:rsync_user_pwd" > /etc/rsync.password
chmod -R 600 /etc/rsync.password
6. Inicie el servicio y verifique el puerto.
rsync --daemon
netstat -nlpt|grep 873
Operación en B
7. Instale EPEL
yum -y install epel-release
8. Instale los servicios inotify y rsync
yum -y install inotify-tools rsync
9. Configure el archivo de contraseña del cliente y modifique los permisos.
echo "rsync_user_pwd" > /etc/rsync.password
chmod -R 600 /etc/rsync.password
10. Scripting
vim bf.sh
#!/bin/bash
ip=192.168.112.153
src=/data/mysqldata_src/
dst=mysqldata
user=rsync_user
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${
src} \
| while read file
do
rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd"
done
- Nota: ¡La ruta en la línea 6, yum está instalado, la
/usr/bin/inotifywait
fuente está instalada/usr/local/bin/inotifywait
y es necesario crear la ruta src! ! ! - Verificación de ruta
11. Crea un directorio
mkdir -p /data/mysqldata_src
12. Ejecute el script
sh bf.sh
13. Ingrese al directorio correspondiente y cree un archivo
cd /data/mysqldata_src/
touch aa.txt
14. Vuelva a A y compruebe
cd /data/mysqldata/
ls