domingo, 27 de septiembre de 2015

Descargar Tutorial en PDF

Descargue aquí el tutorial "Instalación y Configuración de MySQL 5.6 en OpenSUSE 13.2 PDF: Tutorial

4 - CONFIGURACIÓN DE MYSQL SERVER

Unas de las cosas más deseadas es la replicación de información con la intención de tener la información fresca en otro servidor en caso de problemas con el servidor principal, para este ejemplo vamos a configurar una replicación maestro-esclavo, tomando como ejemplo:
Servidor Master, IP: 180.180.1.8
Servidor Slave, IP: 180.180.1.9

1.1.       Configuración del Servidor Master

-          Editamos el archivo my.cnf agregando las siguientes líneas:
Server-id=1
Log-bin=mysql-bin
-          Reiniciamos el MySQL: sudo service mysql restart
-          Entramos al MySQL para crear el usuario que hará la replicación: CREATE USER replicador IDENTIFIED BY ‘lacontraseña’;
-          Le damos los permisos necesarios: GRANT REPLICATION SLAVE ON *.* TO ‘replicador’@’%’ IDENTIFIED BY ‘lacontraseña’; FLUSH PRIVILEGES;
-          Ya configurado el servidor debemos bloquear las tablas para crear una copia de la(s) base(s) de dato(s):
-          Bloquear tablas: FLUSH TABLES; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
-          Al ejecutar SHOW MASTER STATUS el MySQL podrá mostrarnos la siguiente información, tal información es importante y se debe anotar tanto File como Position (pueden variar):
-------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      664 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
-          Creamos la copia de del master con la herramienta que se desee (Workbench, mysqldump etc) lo importante es que TODA la base de datos sea copiada.

1.2.       Configuración del Servidor Slave

-          Editamos el archivo my.cnf agregando las siguientes líneas:
Server-id=2
Relay-log=mysqld-relay-bin
-          Reiniciamos el MySQL: sudo service mysql restart
-          Restauramos en este servidor la copia hecha del Master.
Dentro del MySQL ejecutamos la instrucción siguiente:
CHANGE MASTER TO
MASTER_HOST=’180.180.1.8’,
MASTER_USER=’replicador’, 
MASTER_PASSWORD=’lacontraseña’,
MASTER_LOG_FILE=’mysql-bin.000001’, 
MASTER_LOG_POS=664, MASTER_PORT=3306;
-          Iniciamos la replicación: START SLAVE;
Desbloqueamos las tablas dentro del servidor Master UNLOCK TABLES;
Y podemos verificar el estatus del master con SHOW MASTER STATUS;

Y podemos verificar el estatus del slave con SHOW SLAVE STATUS\G;

3 - RESPALDOS AUTOMATICOS CON CRON

1.1.       Creación de Script de Respaldo

-          Lo primero que hay que hacer es tener un directorio específico para crear los respaldos. Ejemplo: /mi_directorio/dumps/
-          Crear el archivo .sh que ejecutará los respaldos
vi /mi_directorio/dumps/ejecuta_respaldo.sh
-          Agregar el escript:
#!/bin/sh
# Respaldos de MySQL

# nombre del respaldo
ARCHIVO="resp_prueba_`date +%m%d%H%M`"

# carpeta donde se hace los dumps
cd /home/mysql/dumps/

# dumps de las bases de datos que se requieren
mysqldump -u miuser -pmipass --opt miBD01 > resp_miDB01.sql
mysqldump -u miuser -pmipass --opt miDB02 > resp_miDB02.sql

# se comprime todos los dumps en un solo archivo
tar -zcvf $ARCHIVO.tgz *.sql

# (opcionales) mover el archivo a un directorio destino y limpiar
#cp -rv $ARCHIVO.tgz /directorio_destino/$ARCHIVO.tgz
#rm *.tgz
-          Una vez creado el script a nuestra conveniencia, se debe cambiar el archivo en modo ejecutable:
sudo chmod 700 /mi_directorio/dumps/ejecuta_respaldo.sh
-          Para comprobar si funciona solo ejecútalo: ./ejecuta_respaldo.sh

1.2.       Añadirlo en el cron para que se ejecute automáticamente (crontab)

Se debe configurar en el crontab con la instrucción para que se realice el respaldo a la hora que se requiera. Para ello con usuario su, dirígete al directorio /etc/ y escribe crontab –e para entrar a configurarlo directamente.
Agrega a las líneas del crontab la siguiente instrucción:
0 4 * * * /mi_directorio/dumps/ejecuta_respaldo.sh
En la instrucción le estoy indicando al cron que a las 4 am, en el minuto 0 se ejecute el respaldo que se ha creado. Para aprender a configurarlo se muestra el siguiente cuadro:
--- en el cron
.-----------------------• Minuto (0 - 59)
|  .--------------------• Hora (0 - 23)
|  |  .-----------------• Día del mes (1 - 31)
|  |  |  .--------------• Mes (1 - 12)
|  |  |  |  .-----------• Día de la semana (0 - 6) (domingo=0 o 7), y
|  |  |  |  |             también acepta como valores:
|  |  |  |  |             mon, tue, wed, thu, fri, sat y sun
|  |  |  |  |  .--------• Usuario preferiblemente root
|  |  |  |  |  |      .-• Programa a ejecutar
↓  ↓  ↓  ↓  ↓  ↓      ↓
1 14  *  *  *  fulano /home/fulano/bin/tarea.sh > /dev/null 2>&1
Si el servicio cron no funciona únicamente seguir los pasos del punto siguiente.

1.3.       Habilitar cron (en caso de no estar instalado)

Muchas veces el servicio de cron no está configurado en el equipo para ello solo se debe seguir unos simples pasos en openSuse

-          Para Instalarlo: yast -i cronie

-          Para iniciar el servicio por primera vez cuando recién se ha instalado cronie: rccron start

-          Abrir el archivo vi /etc/crontab y agregarle al inicio lo siguiente:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=alguien@gmail.com (opcional)



2 - CONFIGURACIÓN DE MYSQL SERVER

1.1.       Configuración de Usuarios

Unas de las primeras acciones que hay que realizar es configurar el usuario root de MySQL y todos los usuarios que se conectarán al servidor, para ello vamos a conectarnos a mysql por consola
-          Escribiendo: mysql –u root –ptucontraseña, una vez adentro del mysql:
-          Se recomienda que el usuario root de MySQL solo se conecte de manera local en el servidor, ya por defecto viene así, para configurar cualquier otro usuario con acceso remoto:
Crear Usuario con nivel de acceso local:
CREATE USER ‘miusu’@’localhost’ IDENTIFIED BY ‘mipass’;
Dar permisos sobre todas las tablas de mi  base de datos (puedes hacerlo con la misma contraseña para conexión remota):
GRANT ALL PRIVILEGES ON *.* TO ‘miusu’@’localhost’ IDENTIFIED BY ‘miotrapass’;
GRANT ALL PRIVILEGES ON mibd.* TO ‘miusu’@’localhost’ IDENTIFIED BY ‘miotrapass’;
Dar permisos a un usuario a conectarse desde ciertas IP a una tabla predeterminada:
GRANT ALL PRIVILEGES ON mibd.mitabla TO ‘miusu’@’180.180.*’ IDENTIFIED BY ‘mipass’;
-          Refrescar los privilegios fuera de mysql con mysqladmin –u root –p flush-privileges

1.2.       Cambios de contraseña

Dentro del mysql lanzar comando:
Cambiar contraseña solo para conexión localhost
SET PASSWORD FOR ‘miusu’@’localhost’ = PASSWORD(‘nuevacontraseña’);
Cambiar contraseña solo para conexión remota
SET PASSWORD FOR ‘miusu’@’%’ = PASSWORD(‘nuevacontraseña’);

1.3.       Configuración de almacenamiento (cambio de datadir)

Esta configuración es necesaria cuando el directorio /var/lib/mysql que es donde se guarda las bases de datos (y por ende la data final) del sistema no tiene suficiente espacio y se cuenta con otra partición con suficiente espacio para almacenar toda la data que se va a manejar. La configuración consiste en mudar el directorio de la data a la partición donde se tiene suficiente espacio de almacenamiento.
-          Estando en consola conectarse como usuario administrador: su
-          Detener el mysql: sudo service mysql stop
-          copiamos la libreria de mysql en el destino que queremos
sudo cp -R /var/lib/mysql /ruta_nueva/mysql
-          Borramos los archivos ib_logfile
sudo rm /ruta_nueva/ib_logfile*
-          Cambiamos el propietario de los archivos de la ruta nueva
sudo chown -R mysql:mysql /ruta_nueva/mysql
-          editamos el archivo my.cnf ubicado en /etc/ y cambiamos datadir=/var/lib/mysql por la línea datadir=/ruta_nueva/mysql
vi my.cnf (Shift+a= insertar, Shift+q=salir)
-          Detenemos el appamor
sudo service appamor stop
-          Editamos el archivo /etc/apparmor.d/usr.sbin.mysqld, si no existe se crea
vi/etc/apparmor.d/usr.sbin.mysqld
-          Agregamos las líneas dentro del archivo:
/ruta_nueva/mysql/ r,
/ruta_nueva/mysql/** rwk,
-          Iniciamos el apparmor
sudo service apparmor start
-          Si desean (opcional), pueden borrar el contenido del viejo directorio
sudo rm -R /var/lib/mysql
-          Arrancamos el Mysql
sudo service mysql start

1.4.       Sensibilidad de mayúsculas y minúsculas

Un inconveniente muy común es la sensibilidad de mayúsculas y minúsculas, y esto es porque hay muchos programas realizados en Windows donde el MySQL para Windows viene configurado para no prestarle atención a las mayúsculas  minúsculas en los nombres de las tablas y demás objetos y cuando intentas conectar a MySQL para Linux te arroja errores por no encontrar las tablas creadas por problemas de nombre, es muy sencillo cambiar la configuración, simplemente debes:
-          Para dejarlo al estilo MySQL para Windows, abrir el archivo my.cnf ubicado en /etc/ y agregarle la siguiente línea:
Lower_case_table_names=1
-          Reiniciar el mysql: sudo service mysql restart
Donde los parámetros pueden ser:
-          0: Las tablas se almacenan con la sensibilidad especificada en la sentencia de creación. La comparación de sus nombres es sensible a mayúsculas/minúsculas. Por defecto en sistemas operativos Unix
-          1: Las tablas se almacenan convirtiendo sus nombres a minúsculas. La comparación de sus nombres no es sensible a mayúsculas/minúsculas. Por defecto para sistemas operativos Windows y Mac

-          2: Los tablas se almacenan con la sensibilidad especificada en la sentencia de creación. La comparación de sus nombres no es sensible a mayúsculas/minúsculas.

1 - INSTALACIÓN DE MYSQL SERVER EN OPENSUSE

1.1.       Descargando Repositorio

Abrir el Link de repositorios de MySQL para OpenSuse: http://dev.mysql.com/downloads/repo/suse/ y descargar el repositorio para la versión que deseen.
Nota de interés: este ejemplo lo haré con SUSE Linux Enterprise Server 12: mysql-community-release-sles12-2.noarch.rpm

El archivo descargado, colocarlo en un directorio de preferencia del OpenSuse, puede ser /home/desktop  /home/Downloads
Nota de Interés: en este ejemplo crearé mi propia carpeta dentro de home llamada Instaladores:   /home/Instaladores

1.2.       Instalando Paquete

Ejecutar Konsole o Putty o su herramienta de preferencia para poder ejecutar comandos en OpenSuse.
Al entrar a la consola debe logearse como root, escribiendo la sentencia: su y proporcionando la clave si es requerida.
Vaya a el directorio donde se encuentre el respositorio utilizando el comando cd, ejemplo: cd /home/Instaladores
Instale los paquetes, recuerde estar pendiente qué paquete descargó y cambiarlo en el nombre: sudo rpm –Uvh mysql-community-release-sles12-2.noarch.rpm

1.3.       Importando MySQL GnuPG Key

Para importar la clave de Mysql dentro del sistema se debe escribir el siguiente script: sudo rpm –import /etc/RPM-GPG-KEY-mysql

1.4.            Seleccionando Versión a instalar

Para ver las versiones de MySQL a instalar en OpenSuse debemos escribir: zypper repos | grep mysql.*community
Del listado desplegado vamos a trabajar con alguna de estas dos:
mysql56-community
mysql57-community
Nota de Interés: para este ejemplo vamos a utilizar el mysql56-community
Tomando en cuenta que vamos a trabajar con la versión 5.6 de MySQL, debemos habilitarla, y deshabilitar la versión 5.7 (y 5.5 si aparece), para ello debemos ejecutar los siguientes comandos:
Habilitamos la 56: sudo zypper modifyrepo –e mysql56-community
Deshabilitamos la 57: sudo zypper modifyrepo –d mysql57-community-dmr
Listamos para verificar: zypper repos –E | grep mysql.*community
Si todo está bien debemos refrescar: sudo zypper refresh

1.5.       Instalando Base de Datos

Teniendo listo todo lo anterior, procedemos a la instalación de definitiva de la base de datos, hay que tomar en cuenta que en esta oportunidad hemos tomado como ejemplo la versión 5.6, es decir, que ustedes pueden tomar la versión que quieran. Debemos ejecutar en consola: sudo zypper install mysql-community-server para iniciar la instalación de la que hemos habilitado en el paso anterior.

1.6.       Iniciando el Servidor

Iniciar el servicio de Mysql: sudo service mysql start
Verificar status del servicio: sudo sevice mysql status
Si quieren detener el servicio: sudo service mysql stop
Para reiniciar el servicio: sudo service mysql restart

1.7.       Instalación Segura y Configuración Básica

Para realizar la configuración inicial debemos realizar los siguientes cambios de importancia
Iniciar configuración: mysql_secure_installation <Contraseña en blanco, la primera vez>

1.8.       En caso de error en instalación

Para los que instalan la versión 5.7, puede que corran con la mala suerte de que experimenten un bug cuando realizan la instalación segura del punto anterior, no permite entrar con usuario root, para solucionar ello es imprescindible cambiar de versión, primero entren al Yast>Programas, filtren por mysql, seleccionen todos los mysql-community-server, click derecho y desinstalen, y cambien a otra versión, preferiblemente 6.5, esto es un bug que de seguro arreglarán en su momento



aquí les dejo un video tutorial