Módulo 7. Administración de MySQL Guía de Prácticas y Laboratorios Día 2 Francisco Medina López Septiembre 2009 Práctica 1. Administrando los privilegios de Usuarios Duración: 10 min. Objetivo: El participante aplicara como conceder privilegios a los usarios creados en la Base de Datos. Instrucciones: Seleccione la respuesta correcta. 1. El privilegio GRANT OPTION se refiere a: 2. El privilegio USAGE se refiere a: 3. El privilegio RELOAD se refiere a: 4. El privilegio FILE se refiere a: 1
Laboratorio 1. Administrando los privilegios de Usuarios Objetivo: El participante aplicara como crear usuarios, asi como darle privilegios a estos dentro de la base de datos. Instrucciones: Escriba lo que se le pide a continuacion. 1. Cree un usuario llamado bill, con la contraseña secret, que tenga pivilegios de select, update, insert y delete sobre la tabla departamento. 2. Escriba el codigo que revoque todos los privilegios del usuario. Práctica 2. Administrando la Base de Datos Objetivo: El participante aplicara y entendera cuales son las tareas diarias de Admnistracion de la Base de Datos MySQL. Instrucciones: Seleccione la respuesta correcta. 1. Cual de los siguientes logs, esta activado por default: a) Query Log. b) Slow query Log. c) Error Log. d) Binary Log. e) Todos los anteriores. 2. El comando SHOW se usa para mostrar: a) La lista de las bases de datos accesibles. b) La lista de las tablas de la base de datos. c) La lista de la colmunas de una tabla especifica d) Todas las anteriores 3. El scrip mysqladmin es usado para: a) Recagargar privilegios para asegurar que no ninguno tenga efecto. b) Revisar el status del servidor. c) Parar e iniciar el servidor. d) Cerrar y abrir los archivos log. e) Ninguna de las anteriores. 2
Laboratorio 2. Administrando la Base de Datos Objetivo: El participante interpretara los logs de MySQL Instrucciones: Realice varios queries para que almacene datos en los diferentes logs de MySQL, Práctica 3. Respaldos y Recuperacion de las Bases de Datos MySQL Objetivo: El participante conocera las tareas basicas de respaldos y recuperacion de bases de Datos. Instrucciones: Seleccione la respuesta correcta. 1. : Si deseas hacer una recuperacion de un respaldo es necesario a) Tirar el servidor de la Base de Datos. b) Bloquear y limpiar las tablas c) Las dos opciones anteriores d) Ninguna de las anteriores. 2. Se deben de bloquear las tablas manualmente antes de ejecutar. a) Un respaldo manual b) mysqldump c) mysqlhotcopy d) Ninguna de las anteriores. 3. Que tipo de tablas se puede consultar con CHECK TABLE: a) InnoDB and MyISAM b) solamente MyISAM c) MyISAM y BDB d) InnoDB y BDB 4. Que tipo de tablas se puede reparar con REPAIR TABLE: a) InnoDB and MyISAM b) solamente MyISAM c) MyISAM y BDB d) InnoDB y BDB 5. Si al ejecutar CHECK TABLE aparece lo siguiente Table is already up to date, significa: a) Se necesita ejecutar REPAIR TABLE b) No esta soportado CHECK TABLE c) La tabla esta bien d) Ninguna de las anteriores. 3
Laboratorio 3. Respaldos y Recuperacion de las Bases de Datos MySQL Objetivo: El participante creara respaldos de la Base de Datos Instrucciones: Cree un respaldo y recuperacion de la Base de Datos usando cada uno de los metodos mencionados. Laboratorio 4. Tablas Federadas Introducción: Las tablas federadas permiten acceder a datos en tablas de bases de datos remotas en lugar de tablas locales. Se implementan a través del motor FEDERATED que está disponible desde la versión MySQL 5.0.3. Con el motor MySQL FEDERATED no hay archivo de datos locales para una tabla (por ejemplo, no hay fichero.myd ). En su lugar, una base de datos remota almacena los datos que normalmente estarían en la tabla. Esto necesita el uso de la API del cliente MySQL para leer, borrar, actualizar e insertar datos. La recuperación de datos se inicia via un comando SELECT * FROM tbl_name. Para leer el resultado, los registros se tratan uno a uno usando la función de la API C mysql_fetch_row() y luego se convierten desde las columnas del conjunto de resultados SELECT al formato que el handler FEDERATED espera. Duración: 25 min. Objetivo: El participante describirá las características del motor FEDERATED y creará tablas usando este dicho motor de almacenamiento. Prerequisitos: Para el siguiente laboratorio trabajará con dos instalaciones del servidor de base de datos MySQL, la de usted y la de su compañero. Instrucciones: Realizar las siguiente actividades. 1. Primero, tiene que tener una tabla en el servidor remoto que quiera acceder con la tabla FEDERATED. CREATE TABLE test_table ( id int(20) NOT NULL auto_increment, name varchar(32) NOT NULL default, other int(20) NOT NULL default 0, PRIMARY KEY (id), KEY name (name), KEY other_key (other) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 2. Cree un usuario en el servidor remoto con todos los privilegios sobre la tabla recién creada. Este usuario debe poder entrar desde el servidor local. 3. Cree una tabla FEDERATED en el servidor local para acceder a la tabla remota: CREATE TABLE federated_table ( id int(20) NOT NULL auto_increment, name varchar(32) NOT NULL default, other int(20) NOT NULL default 0, PRIMARY KEY (id), 4
KEY name (name), KEY other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 COMMENT= mysql://root@remote_host:9306/federated/test_table ; Práctica 4. Replicación de MySQL Introducción: Las características de MySQL 5 soportan replicación asíncrona unidireccional: un servidor actúa como maestro y uno o más actúan como esclavos. (Esto contrasta con la replicación síncrona que es una característica de MySQL Cluster) El servidor maestro escribe actualizaciones en el archivo de log binario, y mantiene un índice de los archivos para rastrear las rotaciones de logs. Estos logs sirven como registros de actualizaciones para enviar a los servidores esclavos. Cuando un esclavo se conecta al maestro, informa al maestro de la posición hasta la que el esclavo ha leído los logs en la última actualización satisfactoria. El esclavo recibe cualquier actualización que han tenido lugar desde entonces, y se bloquea y espera para que el master le envíe nuevas actualizaciones. La replicación unidireccional tiene beneficios para la robustez, velocidad, y administración del sistema tales como: La robustez se incrementa con un escenario maestro/esclavo. En caso de problemas con el maestro, puede cambiar al esclavo como copia de seguridad. Puede conseguirse un mejor tiempo de respuesta dividiendo la carga de consultas de clientes a procesar entre los servidores maestro y esclavo. Se puede enviar consultas SELECT al esclavo para reducir la carga de proceso de conultas del maestro. Sin embargo, las sentencias que modifican datos deben enviarse siempre al maestro, de forma que el maestro y el esclavo no se desincronicen. Esta estrategia de balanceo de carga es efectiva si dominan consultas que no actualizan datos, pero este es el caso más habitual. Puede realizar copias de seguridad usando un servidor esclavo sin perturar al maestro. El maestro continúa procesando actualizaciones mientras se realiza la copia de seguridad. Objetivo: El participante conocera las tareas basicas de replicas de bases de Datos. Instrucciones: Seleccione la respuesta correcta. 1. Las replicas en la base de datos se usan para: a) crear un servidor de desarrollo para probar código real sin riesgo alguno b) mejorar el desempeño de la base de datos. c) hacer respaldos no corruptos d) mejorar disponibilidad e) todas las anteriores 2. El log del archivo binario es: a) creada por defecto b) util para el replicacion y recuperacion de la base c) un respaldo SQL d) todas las anteriores 3. Las operaciones de lectura y escritura son ejecutadas en 5
a) Lectura y escritura en slaves b) Lectura en slaves, escritura en masters c) Lectura en masters, escritura en slaves. d) Ninguna de las anteriores 4. El diseño de la replica en MySQL significa: a) todos los datos son actualizados todo el tiempo b) todos los servidores deben de estar conectados por si algun servidor no esta disponible, y los que estan conectados replazaran las labores del otro hasta que pueda estar conectado nuevamente. c) las actualizaciones son mas rapidas d) las actualizaciones pueden ser hechas desde cualquier servidor. Laboratorio 5. Replicación de MySQL Duración: 45 min. Objetivo: El participante describirá las características de replicación proporcionadas por MySQL. Conocerá los conceptos de replicación y preparará servidores de replicación. Prerequisitos: Para el siguiente laboratorio trabajará con dos instalaciones del servidor de base de datos MySQL, la de usted y la de su compañero. Se asume que quiere replicar todas las bases de datos en el maestro y no tiene una replicación préviamente configurarda. Instrucciones: Realizar las siguiente actividades. 1. Asegúrese que la sección [mysqld] del archivo my.cnf en el servidor maestro incluye una opción log-bin. Esta sección debe también tener la opción server-id=master_id, donde master_id debe ser un entero positivo de 1 a 2 32-1. [mysqld] log-bin=mysql-bin server-id=1 2. Reiniciar el servidor maestro y esclavo. Hasta este punto aún no van a replicar porque no les hemos indicado que empiecen a replicar. 3. Preparar una cuenta en el servidor maestro que pueda usar el esclavo para conectarse. Esta cuenta debe tener el privilegio REPLICATION SLAVE. mysql> GRANT REPLICATION SLAVE ON *.* -> TO repl @ %.mydomain.com IDENTIFIED BY slavepass ; mysql> flush privileges; 4. Bloquear las tablas para evitar actualizaciones. mysql> LOCK ALL TABLES READ ONLY 5. Detener el servidor que se vaya a usar como esclavo y añada lo siguiente a su archivo my.cnf : [mysqld] server-id=slave_id 6. Hacer un respaldo completo del servidor maestro con el comando mysqldump 6
shell> mysqldump > dump_file.sql 7. Una vez terminado el respaldo, tenemos que recordar la situación del log binario en el servidor maestro: mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ File Position Binlog_Do_DB Binlog_Ignore_DB +------------------+----------+--------------+------------------+ mysql-bin.000005 98 +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) 8. Transferir el respaldo al servidor esclavo y realizar la recuperación. shell> mysql -u root -p < dump_file.sql 9. Ejecute los siguientes comandos en el esclavo, reemplazando los valores de opciones con los valores adecuados para su sistema: mysql> CHANGE MASTER TO -> MASTER_HOST= master_host_name, -> MASTER_USER= replication_user_name, -> MASTER_PASSWORD= replication_password, -> MASTER_LOG_FILE= recorded_log_file_name, -> MASTER_LOG_POS=recorded_log_position; 10. Arranque el flujo esclavo: mysql> START SLAVE; 11. Para comprobar que realmente está replicando, tendremos que ejecutar el siguiente comando en la consola de MySQL: mysql> show slave status \G Una vez realizado este procedimiento, el esclavo debe conectar con el maestro y realizar cualquier actualización que haya ocurrido desde que se obtuvieron los datos. 7