Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instalación y Configuración de Un Servidor de Base de Datos MySQL-linux PDF
Instalación y Configuración de Un Servidor de Base de Datos MySQL-linux PDF
Introducción:............................................................................................................1
Datos de interés sobre MySQL en RedHat/Fedora:................................................1
Instalación: ..............................................................................................................2
Backup: ...................................................................................................................6
Comandos de interés: .............................................................................................7
Introducción:
Para realizar este documento utilizaremos dos máquinas siendo este el nombre y un
ejemplo del contenido del archivo /etc/hosts:
Los archivos que componen las diferentes base de datos residen en el directorio:
/var/lib/mysql
El archivo de log:
/var/log/msyqld.log
Instalación:
Nota: Mientras no se indique lo contrario, todos los pasos se realizan en las dos
máquinas, es decir, tanto en el Master como en la Réplica. El nombre que utilizaremos
para la base de datos de este ejemplo es MISDATOS.
Para ver qué y dónde se instalan los paquetes podemos ejecutar el comando `rpm –ql
mysql` o `rpm –ql mysql-server`.
# mysql -u root -p
Enter password:
mysql> CREATE DATABASE MISDATOS;
mysql> GRANT ALL PRIVILEGES ON MISDATOS.* TO 'misdatosuser'@'localhost'
IDENTIFIED BY ‘contraseñamisdatosuser’;
Nota específica si ya tenías una base de datos en formato MyISAM en otro servidor:
En este caso, tenía una base de datos en formato MyISAM con una sola tabla llamada
“documentos”.
Este manual está escrito para bases de datos con tablas InnoDB debido al mejor rendimiento
que ofrecen frente a MyISAM. De forma que si ya tienes una BBDD puedes pasarla a InnoDB
exportándola del servidor antiguo (con mysqldump) y modificando el esquema de cada tabla
para que la DB sea InnoDB en lugar de MyISAM:
# cp MISDATOS.sql MISDATOS.sql-InnoDB
# vi MISDATOS.sql-InnoDB
) ENGINE=InnoDB;
Comprobamos que se han insertado correctamente los datos ejecutando una serie de
comandos básicos de SQL:
Database changed
mysql> show tables;
+--------------------+
| Tables_in_MISDATOS |
+--------------------+
| documentos |
+--------------------+
1 row in set (0.00 sec)
# mkdir /var/log/mysql
# chown mysql:mysql /var/log/mysql
Ahora procedemos a configurar el master, pare ello añadimos las líneas en negrita en
la sección [mysqld] del archivo /etc/my.cnf:
# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
server-id=1
innodb_flush_log_at_trx_commit=1
innodb_safe_binlog
sync-binlog=1
log-bin=/var/log/mysql/master-bin
log-bin-index=/var/log/mysql/master-bin.index
Las líneas anteriores indican el ID del servidor, debe ser único en toda la granja de
servidores, parámetros para optimizar InnoDB y ubicación de los archivos de registro
usados en la réplica.
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start
Configuramos la regla que permitirá al usuario slave_user realizar las réplicas entre el
maestro y el esclavo, esto se realiza en el servidor master:
# mysql -u root -p
Enter password:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'replica' IDENTIFIED BY
'contraseña_slave';
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 245 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> exit
Bye
Tomamos nota del archivo master-bin.000001 y la posición (245). Comprobamos que
efectivamente está el log binario, con el comando mysqlbinlog podemos ver el
contenido del mismo:
# mysqlbinlog /var/log/mysql/master-bin.000001
# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
read-only
server-id=2
master-host=maestro
master-user=slave_user
master-password=contraseña_slave
master-connect-retry=60
replicate-do-db=MISDATOS
relay-log = /var/log/mysql/slave-relay-bin
relay-log-index = /var/log/mysql/slave-relay-bin.index
Con los parámetros anteriores indicamos que no se pueda escribir en la base de datos
para evitar inconsistencias, el ID único, los datos de conexión a la base de datos
maestra con el TTL (segundos) correspondiente así como la ubicación de los archivos
de registro.
Una vez hechas las modificaciones reiniciamos el servidor réplica para que tengan
efecto los cambios:
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start
# mysqlbinlog /var/log/mysql/slave-relay-bin.000001
use MISDATOS;
SET TIMESTAMP=1157388190;
UPDATE `documentos` SET `USUARIO` = 'prueba010' WHERE `ID` =1 LIMIT 1;
Backup:
# vi /root/scripts/auto-mysql-backup.sh
#!/bin/bash
DATE=`date +%Y%m%d`
mysqladmin --user=root --password=contraseñarootdb stop-slave
mysqldump --user=root --password= contraseñarootdb --lock-tables --all-
databases > /root/backup/backup-$DATE.sql
mysqladmin --user=root --password=contraseñarootdb start-slave
Lo hacemos ejecutable:
# chmod 700 /root/scripts/auto-mysql-backup.sh
# ln -s /root/scripts/auto-mysql-backup.sh /etc/cron.daily/auto-mysql-
backup.sh
Comandos de interés: