1. 2. 3. Administración básica Copias de seguridad de bases de datos Duplicación de base de datos M. C. Gustavo Alfonso Gutiérrez Carreón El administrador de base de datos (DBA) es la persona responsable de los aspectos ambientales de una base de datos. En general esto incluye: Respaldo y Recuperación de datos Crear y probar Respaldos Integridad - Verificar o ayudar a la verificación en la integridad de datos M.C. Gustavo A. Gutiérrez Carreón abr-10 Seguridad - Definir o implementar controles de acceso a los datos Disponibilidad - Asegurarse del mayor tiempo de encendido Desempeño - Asegurarse del máximo desempeño incluso con las limitaciones Desarrollo y soporte a pruebas - Ayudar a los programadores e ingenieros a utilizar eficientemente la base de datos M.C. Gustavo A. Gutiérrez Carreón abr-10 MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C. M.C. Gustavo A. Gutiérrez Carreón abr-10 Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es propietario y está patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius. M.C. Gustavo A. Gutiérrez Carreón abr-10 Como administrador, necesitara saber mucho mas sobre el funcionamiento de MySQL que como un simple ejecutor de consultas . Deberá familiarizarse con las utilidades que incorpora la distribución de MySQL, así como con su forma de configurar el servidor. A continuación se describen las principales utilidades dirigidas a 10s administradores: M.C. Gustavo A. Gutiérrez Carreón abr-10 mysqladmin: Se trata probablemente de la utilidad administrativa mas util. Permite crear y eliminar bases de datos, detener el servidor, visualizar variables de servidor, visualizar y anular procesos de MySQL, establecer contraseñas y vaciar archivos de registros, entre otras cosas. mysqld: No se trata de una utilidad en realidad, ya que es el servidor de MySQL. Es probable que se tope con terminos como las variables de mysqld, que no son otra cosa que variables de servidor. mysqldump. Permite hacer respaldos de la estrucura y datos de nuestra base de datos. mysqlimport: Importa archivos de texto a tablas de base de datos. mysqlcheck: Comprueba, analiza y repara bases de datos. mysqlhotcopy: Una secuencia de comandos de Per1 que hace volcados de tablas de base de datos rapidamente. myisampack: Comprime tablas MyIS AM. M.C. Gustavo A. Gutiérrez Carreón abr-10 mysqladmin Mysqladmin es una utilidad para realizar tareas de mantenimiento de nuestras bases de datos, que viene incluida en la distribución de mysql. Su sintaxis es: prompt> mysqladmin [OPCIONES] comando [opciones de comando] comando2 ... Puedes obtener una lista de las opciones disponibles en tu versión de mysql tecleando mysqladmin --help|more A continuación una lista de las opciones mas corrientes. Primero vemos su denominación abreviada, y separado con una barra vertical | su nombre completo: -p|--password [=pwd] La contraseña para conectar con el server. Si usamos --p sin proporcionar la contraseña, mysql nos la preguntará antes de ejecutar el comando. -u|--user [=nombre de usuario] El nombre de usuario. Es necesario especificarlo si no hemos hecho aun log en el server -h|--host=hostname Conecta al servidor. Si no lo especificamos, intentará localhost M.C. Gustavo A. Gutiérrez Carreón abr-10 -P|--port=pnum Especifica el puerto por el que conectara al server. Si no se especifica usará el puerto por defecto -f|--force Mediante esta opción podemos hacer drop en una base de datos (eliminarla) sin que pida confirmación. Si usamos esta opción en una orden que incluya varios comandos, obligamos a la ejecución de todos ellos incluso aunque haya algun error. -?|--help muestra la ayuda y sale de la ejecución -s|--silent Cierra la ejecución si no puede conectar con el server -v|--verbose Especifica que el server debe contestar con toda la información disponible a cada comando que ejecutemos -V|--version Muestra la versión y sale -w|--wait [=num de intentos] Reintenta la conexión si el server esta caído M.C. Gustavo A. Gutiérrez Carreón abr-10 create nombre_base_datos Crea una nueva base de datos con el nombre proporcionado. drop nombre_base_datos Elimina la base de datos especificada (y todas sus tablas). status proporciona un mensaje con el status del server. extended-status Mensaje con información extendida sobre el server. version Ofrece la version del servidor. flush-hosts Vacía los servidores almacenados en cache. M.C. Gustavo A. Gutiérrez Carreón abr-10 flush-logs Vacia los archivos de registro flush-tables Vacía todas las tablas. flush-privileges Recarga las tablas con los permisos de usuario (igual que reload). kill id,id,... Elimina los subrprocesos especificados. password Especifica una nueva contraseña ping Comprueba si mysqld se está ejecutando. processlist Muestra los subprocesos abiertos en el server. reload Recarga los permisos de usuario. refresh Vacía las tablas de permisos, cierra y abre los archivos de registro. shutdown Apaga el server. variables Muestra las variables disponibles. M.C. Gustavo A. Gutiérrez Carreón abr-10 Con mysqldump puedes obtener copias de la estructura y datos de las tablas. Con la copia de la estructura podrás recrear tus tablas (vacías de datos) mientras que con la copia completa de estructura y datos obtendrás una copia espejo de tu base de datos. Este es también el método lógico si lo que quieres es pasar tu base de datos de un servidor a otro, por ejemplo de tu servidor local de pruebas al servidor en la red. M.C. Gustavo A. Gutiérrez Carreón abr-10 Veamos algunos ejemplos: Copia de estructura y datos: c:\mysql\bin>mysqldump -u root -p --opt nombre_de_mi_db_a_copiar > nombre_copia.sql Copia solo datos: c:\mysql\bin>mysqldump -u root -p --no-create-info nombre_de_mi_db_a_copiar > nombre_copia.sql Copia solo estructura: c:\mysql\bin>mysqldump -u root -p --no-data nombre_de_mi_db_a_copiar > nombre_copia.sql M.C. Gustavo A. Gutiérrez Carreón abr-10 Como no hemos indicado ruta ninguna, los archivos resultantes aparecerán en bin. Para cargar el respaldo de nuevo en el server, simplemente: el proceso a la inversa: c:\mysql\bin>mysql -u root -pcontraseña base_a_cargar < copia_respaldo.sql. M.C. Gustavo A. Gutiérrez Carreón abr-10 M.C. Gustavo A. Gutiérrez Carreón abr-10