Servidores:yubari:agregar server

De Wiki
Saltar a: navegación, buscar
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

  1. !/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

  1. 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**
  1. !/bin/bash

DIR_BACKUP="/backup/actual/bases"

  1. 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`

  1. Cantidad de backups a mantener:
  1. 9 servidores, 1 backup por hora, durante 11 horas = 99 archivos

CANT=99

  1. Funcion que mantiene los primeros $CANT archivos en un directorio,
  1. siguiendo un orden alfabetico

function borra_viejos() {

       while (( $# > $CANT )); do
               rm -rf "$1"
               shift
       done

}

  1. Paso 1: eliminar los archivos viejos

borra_viejos ${DIR_BACKUP}/*

  1. 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   trustEsta 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í