Archivos en la categoría Base de Datos

Crear Base de Datos UFT-8 en MySQL en entornos GNU/Linux

Vamos a proceder a crear una base de datos en UFT-8 en entornos GNU/Linux. Los comandos de la consola de MySQL pueden utilizarse bajo cualquier plataforma, lo único que cambia es el método de acceso.

Abrir la terminal y ejecutamos el siguiente comando para acceder a la consola de MySQL:

$ mysql -u root -p
Continua leyendo »

Recuperar contrseña de root de MySQL

Bueno en este post vamos a recuperar la password de root de MySQL.

Lo primero es para nuestra mysql:

sudo /etc/init.d/mysql stop

Y reiniciamos sin la password de la siguiente manera:

sudo mysqld_safe –skip-grant-tables &

Puede que nos salga alguna salida extraña, ahora le damos al Enter y escribimos:

mysql -u root

Seleccionamos la BBDD:

mysql> use mysql;

Añadimos la nueva password:

mysql> update user set password=PASSWORD(”nueva_password) where User=’root’;

Refrescamos los permisos:

mysql> flush privileges;

Salimos:

mysql> quit

Reiniciamos:

sudo /etc/init.d/mysql restart

Script para crear backups de forma automatizada

Bueno este seria el script a ejecutar. Tenemos que tener en cuenta que es necesario tener montada la un unidad de NAS en una carpeta local y configurar el crontab para que se ejecute cuando consideremos necesario.

#!/bin/bash
# Script de terminal para realizar backups de todas las Bases de Datos de MySQL
# Volcado cada hora al servidor Nas /nasServer/mysql
# Descripcion detallada de los datos:
# Directorio: /nasServer/mysql/yyyy-mm-dd
# Fichero: mysql-DBNAME.2009-07-23-14:23:40.gz
# Ruta completa: /nasServer/mysql/yyyy-mm-dd/mysql-DBNAME.2009-07-23-14:23:40.gz
# -------------------------------------------------------------------------
# GNU GENERAL PUBLIC LICENSE
# Version 3, 29 June 2007
#
# Copyright (C) 2007 Free Software Foundation, Inc.
# Everyone is permitted to copy and distribute verbatim copies
# of this license document, but changing it is not allowed.
# -------------------------------------------------------------------------
# Ultima actualización: Jul-23-2009 - Asegurarse que NAS esta realmente montado en $NAS
# -------------------------------------------------------------------------
NOW=$(date +"%Y-%m-%d") # Formato yyyy-mm-dd
FILE="" # Uso en el bucle
NASBASE="/nasServer" # Punto de montage de NAS
BAK="${NASBASE}/mysql/${NOW}" # Ruta del directorio backup en $NAS
### Configuración del Server ###
#* Usuario de MySQL *#
MyUser="root"
#* PASSWORD del usuario de MySQL *#
MyPass="PASSWORD"
#* Host de MySQL *#
MyHost="127.0.0.1"
#* Binarios de MySQL *#
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
# Asegurarse que nas esta realmente montado
mount | awk '{ print $3}' |grep -w $NASBASE >/dev/null
if [ $? -ne 0 ]
then
echo "Error: NAS no montado en $NASBASE, por favor monta el Servidor NAS el un direcotio local local y vuelve a intentarlo."
exit 99
fi
### NAS debe montarse de forma avanzada ###
# Se asume que /nasServer esta montado via /etc/fstab
if [ ! -d $BAK ]; then
mkdir -p $BAK
else
:
fi
# Obtener la lista de todas las BBDD
DBS="$($MYSQL -u $MyUser -h $MyHost -p$MyPass -Bse 'show databases')"
# Comenzar volcado de la base de datos una a una
for db in $DBS
do
FILE=$BAK/mysql-$db.$NOW-$(date +"%T").gz
# Comprimir todas los ficheros con gzip.
$MYSQLDUMP -u $MyUser -h $MyHost -p$MyPass $db | $GZIP -9 > $FILE
done

Descarga:

backup_mysql.sh.tar.gz

Importar / Exportar Bases de datos grandes de MYSQL

Sustituiremos [USERNAME] con el nombre de usuario de mysql, [DBNAME] con el nombre de la base de datos, [/path_to_file/DBNAME] con la ruta path y nombre del fichero para el volcado de la base de datos.

Copiar/Exportar base de datos grande

Vamos a crear una fichero comprimido con la base de datos:

mysqldump -u [USERNAME] -p [DBNAME] | gzip > [/path_to_file/DBNAME].sql.gz

Importar base de datos grande

Forma rápida:

gzip -dc [/path_to_file/DBNAME].sql.gz | mysql -u [USERNAME] -p [DBNAME]

O

gunzip -c [/path_to_file/DBNAME].sql.gz | mysql -u [USERNAME] -p [DBNAME]

Forma mas rustica:

Primero descomprimimos la base de datos:

gzip -d [/path_to_file/DBNAME].sql.gz

Nos conectamos a mysql:

mysql -u [USERNAME] -p

Continuamos mostrando las base de datos, borramos, creamos, elegimos base de datos añadimos fichero:

SHOW DATABASES;
DROP DATABASE [DBNAME];
CREATE DATABASE [DBNAME];
USE [DBNAME];
SOURCE [/path_to_file/DBNAME].sql;

Condiciones de volcado

Volcado con excepciones de tablas, en este caso búsquedas.

mysqldump -u [USERNAME] -p [DBNAME] --ignore-table=[DBNAME].index_busqueda | gzip > [/path_to_file/DBNAME].sql.gz

Creamos lo backup solo con las tablas sin informacion:

mysqldump -u [USERNAME] -p [DBNAME] --no-data | gzip > [/path_to_file/DBNAME].info.sql.gz

Creamos la copia incluyendo solo los datos de las tablas que necesitemos.

mysqldump -u [USERNAME] -p [DBNAME] --no-create-info --ignore-table=[DBNAME].search_index --ignore-table=[DBNAME].cache --ignore-table=[DBNAME].cache_block --ignore-table=[DBNAME].cache_content --ignore-table=[DBNAME].cache_filter --ignore-table=[DBNAME].cache_form --ignore-table=[DBNAME].cache_menu --ignore-table=[DBNAME].cache_mollom --ignore-table=[DBNAME].cache_page --ignore-table=[DBNAME].cache_pathdst --ignore-table=[DBNAME].cache_pathsrc --ignore-table=[DBNAME].cache_views | gzip > [/path_to_file/DBNAME].data.sql.gz;

Omitir aquellas tablas que contengas cache_:

mysqldump -u [USERNAME] -p [DBNAME] --no-create-info --ignore-table=[DBNAME].search_index --ignore-table=[DBNAME].cache% | gzip > [/path_to_file/DBNAME].data.sql.gz;

Eliminar las tablas, para realizar un import limpia:

mysqldump -u [USERNAME] -p [DBNAME] --add-drop-table | gzip > [/path_to_file/DBNAME].sql.gz

Referencia: http://codex.wordpress.org/Backing_Up_Your_Database

Backcups de seguridad de forma automatica CRONTAB + MySQLDump

Pues eso este script nos ayuda a configurar mediante mysqldump y crontab la realización de copias de seguridad en nuestro sistema. En este post existe tambien otro script que he creado y pude ser de utilización: Enlace

Para ello lo descargamos de sourceforge y después ejecutamos:

wget http://freefr.dl.sourceforge.net/sourceforge/automysqlbackup/automysqlbackup.sh.2.5

Ahora ejecutamos:

sudo ./automysqlbackup.sh.2.5

Ahora solo nos toca seguir los pasos, y recordas el formato del crontab:

Descarga

Referencia:

Cron

Howto: crear backups de MySQL automáticas con cron

Como mas de una vez en los desarrollos hemos tenido que realizar backups de las bases de datos, esta vez proponemos el automatizar dicha tarea.

Primero deberemos crear nuestro script que lo realizaremos en Bash, de daremos permisos para que se pueda ejecutar y posteriormente le crearemos un cron en crontab para que se ejecute cada x tiempo. Es necesario el probar que se ejecuta el script y de que al menos en una ocasion realiza la copia correctamente para asegurar su buen funcionamiento.

Crear el script:

sudo nano backup_mysql

Añadimos lo siguiente:


# Backup de la base de datos de mysql nombre_base_datos
fecha=$(date +%Y%m%d)
mysqldump -u usuario -p clave nombre_base_datos > fichero_$fecha.sql
gzip fichero_$fecha.sql

Las copias las realizamos y la comprimimos en gzip.

Le añadimos permisos de ejecución al script:

chmod +x backup_mysql

Ahora añadiremos el script al cron para que se realice con x periodicidad, el formato del cron es el siguiente:

[minutos] [hora] [día] [mes] [dia_de_semana] [comando]

Ejecutamos:

crontab -e

Y en mi caso utilizamos la opción 3, utilizar el editor nano:

0 2 * * 6 /home/keopx/backup_mysql

Esto hace que los sabados a las 2:00 de la mañana realice una copia, esta opción la podremos modificar en caso de que sea necesario. A esto se le podría añadir la opción de hacer las copias de forma remota almacenándolas en otros dispositivos.