miércoles, 16 de octubre de 2013

Respaldar procedimientos MySQL.

#Respaldar procedimientos MySQL.

Si lo que ocupan es unicamente respaldar los procedimientos almancenados de alguna base de datos, les dejo el siguiente query:


mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt nombre_basededatos > dump_procedures.sql


Deberan tener cuidado con el usuario que generan dicho respaldo, dado que si no tiene los suficientes derechos el usuario, solo respaldara los que le sean permitidos.

Seguimos en contacto.

martes, 15 de octubre de 2013

Modificar muchas tablas.

Generar un script que nos ayude a modificar muchas tablas.

Si requieren ejecutar alguna modificacion en las tablas de cierta base de datos como por ejemplo el cambio del collate, lo pueden realizar con una consulta algo asi:

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`,
'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode;') as FRST
FROM `information_schema`.`TABLES` t WHERE t.`TABLE_SCHEMA` = 'nombre_basedatos';

Esta les regresara la salida de los alter de todas las tablas, se copia a la consola de ejecución y listo.

Con un poco de imaginación, detalles como estos se pueden generar para realizar muchas mas operaciones.

Saludos a todos.

viernes, 11 de octubre de 2013

Variables del Sistema MySQL

Les recomiendo ENORMEMENTE revisar este tema y analizarlo, es increiblemente lo que puede ayudar a nuestro servicio al realizar una correcta configuración de estas variables.

Les recomiendo ponerle atención a algunas como:

datadir =  Donde se localizan los archivos de las base de datos (y tablas)
tmpdir = Donde se localiza el directorio para tablas temporales
tmp_table_size = El tamaño de las tablas tempoarles permitido antes de que use disco físico.
max_heap_table_size = Máximo tamaño permitido para las tablas de memoria (Memory)
query_cache_limit = El limite de cache utilizado para las consultas
query_cache_size = El tamaño del cache utilizado por consulta
query_cache_type = La forma en que se usara el cache, 0 = no usa el cache, 1 = para todo lo que no traiga SELECT y 2 para puros SELECT.
max_user_connections = Máximo de usuarios simultaneos que se pueden conectar.
interactive_timeout =  El tiempo que espera el servidor para actividad interactiva, antes de cerrar una conexion.
wait_timeout = El tiempo que espera el servidor para recibir una conexion, antes de cerrarla.
connect_timeout = Numero de segundos antes de que el servidor responda con el mensaje de error.
thread_cache_size = Es la cantidad threads (hilos), que pueden estar en cache.
key_buffer = Los bloques de indices se guardan en buffer y se comparten con los threads.
join_buffer = El tamaño de buffer que se usa para joins que no usan indices.
max_connect_errors = Numero de conexiones interrumpidas de un equipo, ese equipo se bloqueara.
max_allowed_packet = Tamaño máximo de los paquete so cadenas generados, si se usan campos BLOB grandes se debe incrementar, lo optimo que este del tamaño del BLOB mas grande.
table_cache = Numero de las tablas abiertas simultaneamente por los thread dados.
sort_buffer_size = Acerlera las operaciones que contengan order by y group by, ya que reserva buffer segun su tamaño.
read_buffer_size = Cada que se hace un escaneo de registros se guardan en buffer, esta variable permite una mayor velocidad entre mas grande sea el numero.
read_rnd_buffer_size = Al leer los registros ordenados (tras una ordenación), los registros se leen de su buffer para evitar volver a buscar en disco, al agregarle mayor valor a esta variable, mejora mucho el rendimiento,pero es por cliente, por lo tanto s tiene que tener cuidado.
thread_concurrency = Cantidad de thread que se pueden ejecutar simultaneos desde una aplicación dada.
myisam_sort_buffer_size = Bufer resarvado para la ordenación de indices MyISAM
log-slow-queries = Archivo donde se guardan esas consultas consideradas por nosotros como lentas.
long_query_time = Numero de segundos en que tarda un query, si pasa de este tiempo, lo mete al log de queries lentos.
open_files_limit = Numero de archivos que se pueden abrir simultaneamente, cabe mencionar que el leer una tabla es como abrir archivos.
max_allowed_packet = Maximo del tamaño del paquete que viaja por la red autorizado.
no-auto-rehash = Configuración que nos ayuda a que al abrir por consola el MySQL sea mas rapido, no levanta todas las configuraciones.

Para ondar mas en el tema pues aquí

martes, 24 de septiembre de 2013

Comando "date", Linux

Si requerimos extraer una fecha tal, que restandole otra lo mandemos a una variable y entonces poder jugar con esas fecha para realizar una acción.

El comando date, a través del parámetro -d, --date=STRING permite mostrar y calcular la fecha distinta a la actual a partir de la suma o resta de X años, meses, días, minutos o segundos. Esto es útil cuando queremos por ejemplo añadir o restar 7 días a la fecha actual. Vamos a ver unos cuantos ejemplos:

Sumar 7 días a la fecha actual y mostrarlo en formato estándar:
$ date --date='+7 day'
vie may 13 17:40:47 CEST 2011

Restar 7 días a la fecha actual y mostrarlo en formato timestamp:
$ date +%s --date='-7 day'
1304091656

Sumar un año a la fecha actual con formato de fecha y hora:
$ date +%c --date='+1 year'
dom 06 may 2012 17:41:53 CEST

Restar dos meses a la fecha actual:
$ date --date='-2 month'
dom mar  6 16:42:48 CET 2011


Y así muchos más ejemplos. Seguro que os resulta muy útil dentro de scripts en bash por ejemplo.

viernes, 30 de agosto de 2013

Derechos a nivel campo #MySQL

Para #dar derechos a un usuario a nivel campo en una tabla dada:

SINTAXIS:
GRANT <UPDATE, SELECT...> (nombre_campo) ON nombre_tabla TO usuario@'localhost';


Ejemplo:
GRANT UPDATE, SELECT (email) ON agen TO clicw_coppel@'localhost';


Saludos

lunes, 19 de agosto de 2013

Herramienta para revisar replicación:

Las replicaciónes pueden ser un problema, ya que si no las estamos monitoreando, cuando las ocupemos realmente  y nos demos cuenta que no tenemos sincronizados al 100% los datos.

Ya que la replicación de MySQL no contiene una herramienta incluida para que nos ayude a confirmar que la información que se esta replicando, este aplicada al 100%, les recomiendo la siguiente  herramienta, la cual cuenta con algunos comandos interesantes, de mucha utilidad.

#maatkit

Para instalar en ubuntus:
apt-get install maatkit

Comandos:
 mk-table-checksum ó mk-table-sync 

 Altamente recomendados solo tendran que revisar los parametros que mas les convenga, si quieren algun ejemplo practico me lo hacen saber.

lunes, 5 de agosto de 2013

Agregar un valor consecutivo

En ocasiones requerimos agregar un valor #consecutivo a una tabla (ó consulta), les dejo el siguiente query que lo vi hace unos días bastante interesante, para este tipo de requrimientos.


SELECT  @numero_consecutivo:=@numero_consecutivo+1  consecutivo ,
tabla.campo 
FROM  nombre_tabla tabla,
(SELECT @numero_consecutivo:=0) r


Obviamente  tendremos que cambiar los valores, como nombre_tabla, por la tabla nuestra y el campo por el nombre del campo de la tabla que hicimos referencia.

Saludos.