Anda di halaman 1dari 19

Captulo 9

Gestin de la seguridad
de los datos

NDICE CAPTULO 9
Tipos de fallos
Copias de seguridad de bases de datos

Tipos de copias
Copias en MySQL
Exportacin/importacin de datos
Uso de MySQL Workbench para gestin de datos

Tipos de fallos
Fallo del sistema operativo
Fallo en la alimentacin
Fallo en el sistema de ficheros
Fallo de algn elemento de hardware
Fallo humano que conlleva prdida o
corrupcin de informacin

Copias de seguridad de bases de


datos

Tipos de copias de seguridad


Frio/Caliente
Fsica/lgica
Completa/incremental
Local/remota
Manual/automtica

Copias de seguridad en MySQL


Copias fsicas: copia en frio I
Ejemplo
Para hacer una copia de todos los datos en un sistema Linux en frio.
Detenemos el servidor:
#>mysqladmin shutdown
Comprimimos y empaquetamos los datos en un nuevo fichero llamado
copia.tar.gz.
#>tar czvf copia.tar.gz /var/lib/mysql/
Copiamos el fichero a un nuevo directorio:
#>cp copia.tar.gz /backup/

Copias de seguridad en MySQL


Copias fsicas: copia en frio II

Para la restauracin haramos el proceso inverso deteniendo


previamente el servidor:
#>cd /var/lib/
#>tar zvxf copia.tar.gz
Este fichero tambin nos sirve para migrar los datos a otro
servidor mysql.

Copias de seguridad en MySQL


Copias fsicas: copia en caliente
Ejemplo mysqlhotcopy
Para hacer una copia en caliente de las tablas MyISAM de la base de datos mysql en
Linux en el directorio backup.
#>mysqlhotcopy user root password root mysql /backup/
Para hacer una copia y, seguidamente empaquetarla:
#>mysqlhotcopy user root password root mysql /backup/ ;
tar cvzf copia.tar.gz /backup/mysql/
Si adems queremos incluir la fecha:
#>mysqlhotcopy user root password root mysql /backup/ ; tar cvzf
copia`date +%d%m%y`.tar.gz /backup/mysql/
Para restaurar los datos debemos detener primero el servidor y copiarlos al
directorio correspondiente como en el ejemplo anterior.

Copias de seguridad en MySQL


Copias lgicas: mysqldump
Sintaxis bsica:
#>mysqldump [options] db_name [tbl_name ...]
#>mysqldump [options] --databases db_name ...
#>mysqldump [options] --all-databases

Ejemplo
Para hacer una copia completa de todas las bases
de datos:
#>mysqldump uroot proot all-databases

Este comando vuelva la copia por pantalla. Si


preferimos enviar la salida a un archivo:
#>mysqldump uroot proot A > copia.sql

Copias de seguridad en MySQL


Copias incrementales I
Variable log-bin activa el registro binario
Registra slo operaciones de modificacin sobre la
base de datos
Sirve como copia incremental de datos
El programa mysqlbinlog permite leer ficheros
binarios
Los registros se deben reiniciar (purgar) cada cierto
tiempo
Tambien se usa en replicacin

Copias de seguridad en MySQL


Copias incrementales II
Ejemplo
Para hacer copias peridicas todas las semanas, los domingos a
las 10:00h de la maana.
Si adems, queremos usar registros binarios (log-bin=regbin)
para copias incrementales y queremos que se eliminen en cada
copia de seguridad.
En el fichero my.cnf, en la seccin [mysqld] agregamos la lnea:
log-bin=regbin
Aadimos a crontab (crontab -e) la lnea:
00 10 * * 7 /usr/bin/csegbases.sh

Copias de seguridad en MySQL


Copias incrementales III
El fichero csegbases.sh es un shell script que contiene lo
siguiente:
#!/bin/bash
mysqldump uroot proot --single-transaction --flushlogs --all-databases --delete-master-logs > copia`date
+%d%m%y`.sql
Supongamos que tenemos un fallo catastrfico el mircoles a las
8 AM que requiere restauracin de las copias de seguridad. Para
recuperarnos, primero restauramos la ltima copia de seguridad
completa que tenemos (la del domingo a las 10:00 AM). El
archivo de copia completo es tan solo una serie de sentencias
SQL, as que restaurarlo es muy fcil:
#> mysql uroot proot < copiafecha.sql

Copias de seguridad en MySQL


Copias incrementales IV
En este punto, el estado de los datos ha sido restaurado hasta el
domingo a las 10:00 AM.
Para restaurar los datos generados desde entonces, debemos
usar las copias incrementales, es decir los archivos de registro
binario que tengamos en nuestro directorio de datos.
Si no hemos generado otros por cualquier motivo tendremos un
solo fichero llamado regbin.000001 que recargaramos con el
siguiente comando:
#>mysqlbinlog regbin.000001 | mysql uroot -proot

Exportacin/importacin de datos
LOAD DATA I
Permite cargar datos de un fichero de texto a tablas
Sintaxis:
LOAD DATA [LOW PRIORITY | CONCURRENT][LOCAL] INFILE
'fichero'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
[IGNORE number LINES]

Exportacin/importacin de datos
LOAD DATA II
Ejemplo
Disponemos de un fichero con datos de partidos llamado
partidos.txt y situado en la unidad C del servidor. En l cada fila o
registro est separado por un salto de lnea y cada campo por un
punto y coma.
Indica el comando necesario para cargar los datos en la tabla de
partidos omitiendo los errores en la repeticin de claves, as como
las dos primeras lneas.
LOAD DATA INFILE C:\\partidos.txt IGNORE INTO TABLE
partido FIELDS TERMINATED BY ; LINES TERMINATED BY
\n;

Exportacin/importacin de datos
SOURCE
Podemos ejecutar ficheros de comandos para ejecutar un conjunto
de instrucciones INSERT del siguiente modo
C:\> mysql uusuario ppassword < ruta_fichero_de_comandos
Tambin disponemos del comando SOURCE ejecutable desde el
cliente mysql:
mysql> source ruta_fichero_de_comandos
O equivalentemente con \.:
mysql> \. ruta_fichero_de_comandos

Exportacin/importacin de datos
LOAD XML I
Para exportar datos en formato XML usamos la opcion xml de
mysqldump
C:\>mysql xml e SELECT * FROM tabla > fichero.xml
Para importar datos con formato XML en una tabla, proceso
contrario al anterior, usamos LOAD XML
Sintaxis:
LOAD XML [LOCAL] INFILE 'file_name' [REPLACE | IGNORE]
INTO TABLE [db_name.]tbl_name
[ROWS IDENTIFIED BY '<tagname>']
[IGNORE number [LINES | ROWS]]
[(column_or_user_var,...)]
[SET col_name = expr,...]

Exportacin/importacin de datos
Exportar datos

Mediante la clusula SELECT

SELECT[INTO OUTFILE 'file_name'


export_options
| INTO DUMPFILE 'file_name'
Mediante mysqldump
mysqldump [opciones]
nombre_de_base_de_datos [tablas]
mysqldump [opciones] --databases DB1 [DB2
DB3...]
mysqldump [opciones] --all-databases

Gestin de datos con MySQL


Workbench
La mayora de operaciones de seguridad de datos pueden realizarse
mediante la herramienta Workbench

FIN CAPITULO 9

Anda mungkin juga menyukai