Servidores:yubari:agregar server
Contenido
Agregar backup para un nuevo servidor
- En el server 25
Tenemos en /backup/script_archivos.shh, en ese hay que poner el servidor nuevo para hacer ssh al nuevo servidor
- !/bin/bash
ssh 192.168.19.20
ssh 192.168.19.21
ssh 192.168.19.23
ssh 192.168.19.24
ssh 192.168.19.26
ssh 200.16.30.4
ssh 200.16.30.6
ssh 200.16.30.7
ssh 200.16.30.9
- Este va al ultimo porque toma mucho tiempo
ssh 200.16.30.5
- Hay otro archivo script_bases.sh ahi hay que poner el servidor también**
- !/bin/bash
DIR_BACKUP="/backup/actual/bases"
- 200.16.30.4 removido, hasta que se decida qué hacer con él
SERVIDORES="192.168.19.20 192.168.19.21 192.168.19.23 192.168.19.24 192.168.19.26 200.16.30.4 200.16.30.5 200.16.30.6 200.16.30.7"
HORA=`date +%Y-%m-%d.%H-%M`
- Cantidad de backups a mantener:
- 9 servidores, 1 backup por hora, durante 11 horas = 99 archivos
CANT=99
- Funcion que mantiene los primeros $CANT archivos en un directorio,
- siguiendo un orden alfabetico
function borra_viejos() {
while (( $# > $CANT )); do rm -rf "$1" shift done
}
- Paso 1: eliminar los archivos viejos
borra_viejos ${DIR_BACKUP}/*
- Paso 2: actualizar los volcados de los servidores
for server in $SERVIDORES
do
if [ "$server" = "200.16.30.4" ] then # Este servidor funciona con MySQL # Este comando funciona magicamente cortesia del archivo /root/.my.cnf COMANDO="mysqldump --all-databases" else # Estos servidores funcionan con PostgreSQL COMANDO="pg_dumpall -ih $server -U postgres" fi
# Largamos el comando en paralelo, para no perder tiempo # por lentitudes en disco y/o red $COMANDO | bzip2 -c > ${DIR_BACKUP}/${HORA}::${server}::sql.bz2 &
done
wait
- Nota
saque esto, porque pusimos el sysfl en el oren, habra que volver a ponerlo cuando pongamos el oren de nuevo
if [ "$server" = "200.16.30.4" ]
then # Este servidor funciona con MySQL # Este comando funciona magicamente cortesia del archivo /root/.my.cnf COMANDO="mysqldump --all-databases" else # Estos servidores funcionan con PostgreSQL COMANDO="pg_dumpall -ih $server -U postgres" fi
Backup de archivos
Primero: en el cliente
* Habilitar en el archivo /etc/ssh/sshd_config las siguientes opciones:
PermitRootLogin yes (esto dice "no") AllowUsers user1 user2 user3 root@<ip.servidor>
* Reiniciar el servidor ssh con el comando "/etc/init.d/ssh restart". **IMPORTANTE:** esto es temporal, es vital volver a deshabilitar la opción PermitRootLogin más adelante (ya veremos cómo) * Crear el directorio /root/.ssh/ * Verificar que el directorio /root tenga permisos 700 (lectura y escritura únicamente por usuario root)
Segundo: en el servidor
* Crear una clave pública (si no existiera una) con el comando "ssh-keygen -t rsa" * Copiar esa clave al cliente con el comando "scp /root/.ssh/id_rsa.pub root@<ip.cliente>:/root/.ssh/authorized_keys2" * Hacer ssh al cliente para comprobar que el cambio funciona: "ssh root@<ip.cliente>". No debería solicitar contraseña
Tercero: en el cliente
* Hacer la siguiente modificación en el archivo /etc/ssh/sshd_config:PermitRootLogin forced-commands-only
* Editar el archivo /root/.ssh/authorized_keys2, y agregar lo siguiente al principio:from="<ip.servidor>",command="/usr/bin/rsync <argumentos>" ssh-rsa AAABBB... (resto de la clave)
* Reiniciar el servidor con el comando "/etc/init.d/ssh restart" o "/etc/init.d/sshd restart" * Salir del servidor
Cuarto: en el servidor
* Verificar que el comando funcione, conectándonos mediante SSH al cliente y comprobando que se envían los archivos al servidor * Agregamos al archivo CRON la orden para lanzar el backup, en un horario conveniente. Para ello, editamos el archivo con el comando "crontab -e"
Backup de Base de datos PostgreSQL
Primero: en el cliente
* Editamos el archivo /etc/postgresql/8.1/main/pg_hba.conf, y agregamos la siguiente opción cerca del final del archivo: host all postgres 192.168.19.25/32 trust
Esta línea permite que el usuario postgres conectándose desde la IP 192.168.19.25 (la IP actual del servidor al momento de escribir este documento) tenga acceso sin contraseña a las bases de datos
* Reiniciamos el servidor con el comando "/etc/init.d/postgresql restart"
Segundo: en el servidor
* Entrar a /backup/scripts/scripts_archivo y ahi agregar la ip del servidor que queremos agregar al backup * Editar el archivo /backup/scripts/scripts_bases y agregar a la lista el servidor * Comprobamos que el backup funcione con el comando "pg_dumpall -ih $server -U postgres > volcado.sql".
(cuando esto no anda puede ser porque le falta instalar rsync)
Backup de Base de datos MySQL
Primero: en el cliente
* Crear un usuario que pueda acceder a las bases de forma remota. Esto se hizo alguna vez, pero no recuerdo cómo, así que **queda como tarea pendiente para el pobre infeliz que tenga que leer esta documentación en un futuro lejano, cuando yo ya no esté**. * Reiniciar el servidor
Segundo: en el servidor
* Creamos un fichero de configuración .my.cnf en el directorio base del usuario que correrá el backup (generalmente, el usuario root), le ponemos permisos de acceso 600 y agregamos el siguiente contenido:[client]
host = <ip.cliente> user = root password = <password>
* Comprobamos que el backup funcione con el comando "mysqldump --all-databases". (si tira datos, es porque anda) * Si el comando funciona, lo agregamos al CRON en un horario adecuado o, si tenemos un script (tenemos - ver más adelante), agregarlo ahí