You are on page 1of 6

Unidad 2

Configuracin MySQL

[MySQL Avanzado]
De Intecap-TICS
[Seguridad, Backups, configuracin del servidor son algunos de los aspectos ms importantes que le interesan al administrador de bases de datos; los Objetivos de la Unidad son adquirir las competencias de los siguientes contenidos.]

Unidad 2

MySQL Avanzado
+--------------------------------------+ | Seguridad de las bases de datos | +--------------------------------------+
Configuracin Bsica Al arrancar, MySQL lee el fichero my.ini para establecer distintas variables del sistema. Normalmente no es necesario modificar este fichero, pero s conviene saber qu es y para qu se usa. Solo en caso de tener que optimizar el rendimiento de nuestro servidor necesitaremos meternos en este complejo cdigo. Aviso: Si no tiene nociones de programacin avanzada evitar tocar cualquier script de MySQL ya que puede volverlo inestable y en el peor de los casos inseguro a todo el sistema. Variables del Sistema Cada variable del sistema tiene un valor por defecto. Y aunque su valor se establece al arrancar el servidor, muchas de ellas pueden modificarse en tiempo de ejecucin mediante el comando SET. El comando SHOW VARIABLES, muestra el valor de estas. Algunas de las variables son: auto_increment_increment: establece el incremento para columnas autoincrementadas. Por defecto tiene el valor 1. auto_increment_offset: establece el valor inicial para las columnas autoincrementadas. back_log: tamao de la cola de espera de conexiones TCP/IP. basedir: directorio de instalacin del servidor. binlog_cache_size: tamao de la cach binaria para sentencias SQL de transacciones. character_set_client: conjunto de caracteres para sentencias de cliente. character_set_database: conjunto de caracteres por defecto para las bases de datos. character_set_results: conjunto de caracteres para los conjuntos de resultados. character_set_server: conjunto de caracteres por defecto para el servidor. connect_timeout: tiempo de espera en segundos de los paquetes de conexin. data_dir: directorio de datos del servidor. expire_logs_days: Nmero de das para la eliminacin automtica de logs binarios. ft_boolean_syntax: operadores lgicos permitidos en las bsquedas de texto completo. ft_max_word_length: longitud mxima de las palabras indexadas por texto completo. ft_min_word_length: longitud mnima de las palabras indexadas por texto completo. have_bdb: indica si el servidor dispone de soporte para motores de almacenamiento BDB. have_archive: indica si el servidor dispone de soporte para motores de almacenamiento ARCHIVE. have_openssl: indica si el servidor dispone de soporte para conexiones SSL. init_connect: comando a ejecutar en las conexiones de clientes (salvo root). Tambin puede ser un comando o un fichero de comandos SQL. init_file: fichero a ejecutar en el arranque del servidor. innodb_xxx: variables del motor de almacenamiento InnoDB. interactive_tiemout: tiempo de expiracin de las conexiones interactivas. join_buffer_size: tamao del buffer para las operaciones de join que no utilicen ndices. Etc, etc.

MySQL es Software Libre

MySQL Avanzado
Otras Variables y Secciones Las variables anteriores corresponden con la seccin del fichero my.ini (que se encuentra el directorio \mysql\bin) y son las que pueden verse con el comando SHOW VARIABLES. Pero el fichero de configuracin incluye otras secciones e incluso otras variables no accesibles por estos mtodos. Entre las variables de las que no podremos consultar ni acceder mediante SET y SHOW, estn: user: usuario del sistema con el que se ejecutar MySQL. pid-file: fichero del sistema que almacenar el nmero del proceso del servidor. socket: fichero del sistema que almacenar el nmero del socket TCP/IP del servidor. port: puerto TCP/IP en el que escuchar el servidor. bind-address: direccin IP en la que escuchar el servidor. Adems, el fichero incluye las siguientes secciones de configuracin: [client] Seccin para la configuracin de acceso de los clientes. [mysqld_safe] Seccin para la ejecucin del servidor en modo seguro. [mysqldump] Configuracin para el volcado de bases de datos. [isamchk] Configuracin para la comprobacin de tablas MyISAM. [MYSQL_CLUSTER] Configuracin de Clusters de MySQL. Adems, el fichero de configuracin suele hacer referencia a un directorio de configuracin en el que podran encontrarse configuraciones especficas requeridas por otras aplicaciones. La Arquitectura de MySQL Podemos imaginar la arquitectura interna de MySQL dividida en tres capas. Se trata de una divisin lgica, que no coincide necesariamente con la divisin interna del cdigo, pero nos ayudar a entender los conceptos. Las tres capas son: 1. Capa de Conexin: En la que reside la funcionalidad que conecta MySQL con otros sistemas y lenguajes (APIs, sockets, ODBC, etc.) 2. Capa de Lgica: En la que reside la lgica para procesar consultas SQL (sentencias, planificacin, ejecucin, cachs, etc.) 3. Capa de Almacenamiento: En la que reside la lgica para almacenar y acceder a los datos de las tablas. Una caracterstica de MySQL es que puede utilizar distintos motores de almacenamiento1. Es decir, que la capa de almacenamiento dispone de varios subniveles, uno por cada tipo de motor soportado. La siguiente figura nos aclarar un poco ms las cosas:

MySQL es Software Libre

1 Antes, los motores de almacenamiento se denominaban tablas. Pero ahora se cambiado la terminologa para dar ms nfasis a su lgica de almacenamiento y evitar considerarlos como elementos pasivos.
3

MySQL Avanzado

Podemos ver que MySQL soporta cuatro motores de almacenamiento bsicos. Hay que destacar que una base de datos puede almacenar sus datos utilizando una combinacin de distintos motores. Es decir, parte de los datos pueden estar en una tabla MyISAM y otra parte en una tabla InnoDB. Enseguida veremos las diferencias entre los distintos motores, pero antes tenemos que repasar algunos conceptos bsicos. Motores de Almacenamiento Al disear una base de datos con MySQL ser necesario decidir qu motores de almacenamiento vamos a utilizar. MySQL dispone, actualmente, de los siguientes motores de almacenamiento: 1. MyISAM: Es el motor por defecto. Es muy rpido pero no transaccional. 2. InnoDB: Es transaccional, incluyendo integridad referencial. 3. Memory (Heap): Es una tabla MyISAM, pero almacenada en memoria, no en disco. Es todava ms rpida. 4. Archive: Es una tabla MyISAM, pero comprimida y de slo lectura. 5. MRG_MyISAM: Es una agregacin de tablas MyISAM. Las tablas agregadas deben ser exactamente iguales. REALIZAR Y RESTAURAR COPIAS DE SEGURIDAD Existen varios mtodos para respaldar toda la informacin tanto del servidor como las bases de datos en el servidor, trataremos aqu las bases de datos del sistema, y vamos a dar a conocer un mtodo bastante til que soporta todo tipo de tablas y formatos de respaldo. * Lo primero que debemos saber es donde estn los ficheros de datos. Para obtener dicho directorio: SHOW VARIABLES LIKE 'datadir';

MySQL es Software Libre

MySQL Avanzado
En tablas de tipo MyISAM estos ficheros estn en una carpeta con el nombre de la base de datos, tienen el mismo nombre que las tablas y extensiones '*.frm' (formato), '*.myd' (datos), y '*.myi' (ndices). En tablas de tipo InnoDB se encuentran ficheros con los nombres de las tablas y extensin '*.frm' en la carpeta de la base de datos, y en el directorio principal de datos existen varios ficheros de datos con nombre 'ibdata1', 'ibdata2',... que comparten todas las bases de datos InnoDB del servidor, y tambin los ficheros de "logs" de InnoDB: 'ib_logfile0', 'ib_logfile1',... Aviso: si los ficheros InnoDB vamos a copiarlos de un ordenador a otro, debe cumplirse: (1) que las bases de datos y tablas tengan nombres en minsculas; (2) que ambos ordenadores utilicen aritmtica entera de complemento a dos; y (3) que si hay tablas con columnas de tipo numero real, ambos ordenadores utilicen el formato de nmeros reales especificado por la IEEE.)

MySQL es Software Libre

Ejemplos de realizacin de copias de seguridad son: (1) con tar, (2) con zip, (3) con rsync, (4) con cp, (5) con cp slo bbdd world, (6) con cp slo tabla City. El mtodo para hacer un Backup Mediante el comando 'mysqldump'. Es menos rpido, pero sirve para todo tipo de tablas. El fichero que genera no contiene los datos, sino instrucciones SQL que generan las tablas y les insertan los datos, por lo que tambin nos sirve para migrar las bases de datos de MySQL a otro gestor. Se puede ejecutar de forma local y remota, y los ficheros quedan en el servidor. Sintaxis mysqldump -u user -p base-de-datos > Nuevo-nombre-DB.sql

MySQL Avanzado
Ejemplos de realizacin de copias de seguridad: mysqldump mysqldump mysqldump mysqldump mysqldump Comentario Las sintaxis utilizadas aqu son las mismas que presentaron el curso anterior, cuando se pidi EXPORTAR una base de datos, adicionalmente se comenta que existen un par de mtodos ms para hacer un backup de una base de datos, pero quedan fuera de los objetivos del curso. Restauracin de Backups Ejemplo: mysql world -u root -p < world.sql Comentario Tiene que tener una base de datos seleccionada con USE antes de restaurar una copia de seguridad. BIBLIOGRAFIAS 1. FUNDAMENTOS DE BASES DE DATOS. Abraham S. Henry F. Cuarta edicin. McGrawHill. Mxico. 2008. 2. Beginning Oracle SQL. Oracle Lex de Haan Et.Al Apress. USA. 2009. 3. http://dev.mysql.com/doc/refman/5.6/en/ MySQL 5.6 Reference Manual -u -u -u -u -u root root root root root -p -p -p -p -p world > world.sql world Country City > pais.sql --xml world > world.xml --tab=/tmp world --all-databases > backup.sql

MySQL es Software Libre

You might also like