martes, 3 de diciembre de 2013

#Remplazar strings en editores Linux

Los que han utilizado editores de texto atraves de consolas sabran de lo que hablo cuando no tenemos experiencia y requerimos de remplazar un string por otro (palabra por otra).

Aquí les dejo un comando que me ha funcionado a mi y puede ser usado de dos maneras, con el archivo abierto o con el archivo no abierto.

Si el archivo es muy grande no abria necesidad de abrirlo entonces usamos:

sed -i 's/\string_viejo//string_nuevo' nombre_archivo

Ejemplo:
Cambiar el signo $ por un  ? del archivo holamundo.sql

sed -i 's/\$/?/g' holamundo.sql


Remplazar string dentro del editor, en este caso el editor "vim":
le ponemos : y

Aqui remplazamos el signo $ con un ?
 :%s/\$/?/g

Casi igualito..

Saludos y esperemos que de algo les sirva, a mi me a ahorrado tiempo.

lunes, 2 de diciembre de 2013

No olvides poner el #WHERE, en el delete from

En esta ocasión les dejare el siguiente link de un video-cancion de un error, que espero no sea comun ni mucho menos les suceda por que puede ser algo extramadamente trágico:


Link -> No te olvides de Poner WHERE (8)


De igual manera para su autor, mi reconocimiento y gratitud...

Todo lo parecido a la realidad es mera coincidencia

martes, 26 de noviembre de 2013

Ejecución de consulta Repetidas veces. #MySQL

Si queremos ejecutar una consulta repetidas veces y nos pinte el resultado en consola lo podemos realizar asi:

watch 'echo "select count(*) from nombre_tabla;" | mysql -A nombre_basedatos'

Nos evitamos estar ejecutando a pie la consulta, solo es comodidad, igual manera abra que tener cuidado de no realizar una consulta que consuma muchos recursos, para no afectar los demas servicios.

Todo es cuestión de ingenio es que seguramente ustedes podran encontrarle otros usos.


jueves, 21 de noviembre de 2013

Sincronizar carpetas. #Linux

#Sincronizar carpetas.

Si requerimos sincronizar carpetas entre dos servidores, o en el mismo servidor, les ultra recomiendo el comando, rsync, es un comando linuxs, y trabaja con ssh, les dejo un ejemplo, pero si se animan a usarlo pueden buscar mas sobre sus parametros:


rsync -avl --stats --progress  --exclude '/carpeta/*' --exclude '/carpeta2/subcarpeta/*' --exclude 'carpeta3/*' usuario@dominioservidor:/home/user/public_html/carpeta_origen/ /home/user/public_html/carpeta_destino/


De lo que me a salvado...


Saludos.

miércoles, 20 de noviembre de 2013

Extraer información de base de datos, mandar a archivo.


#Extraer información de la base de datos y mandarla a un archivo:

echo "show create table nombre_tabla" | mysql -A nomre_basedatos > nomre_basedatos.sql

De igual forma podemos concatenar varios scripts en un mismo archivo, algo asi:

echo "show create table nombre_tabla" | mysql -A nomre_basedatos > nomre_basedatos.sql
echo "show create table nombre_tabla2" | mysql -A nomre_basedatos >> nomre_basedatos.sql

Como podemos observar en este ultimo, solo agregamos otro signo ">"  a ">>" lo que le refiere a que concatenara la salida de lo ejecutado.

#Comparación de carpetas Linux

#Comparación de carpetas Linux

Si requirieramos comparar dos carpetas y obtener cuales son las diferencias de archivos entre estas, podemos hacerlo con el siguiente script:

diff -q carpeta_uno/ carpeta_dos/ | grep -Pi "^only"

Esto nos regresa en consola, las diferencias,

Un saludo a todos.

viernes, 8 de noviembre de 2013

Respaldar #estructura de base de datos MySQL

Si lo que requieres, es respaldar unicamente la estructura de tus objetos de base de datos, les dejo el siguiente script, 


miércoles, 23 de octubre de 2013

Tips al diseñar tablas

Al momento de #diseñar las tablas es importante tomar en cuenta los siguientes tips.

  • Nombres de tablas y campos en menos de 64 caracteres, a su vez recordemos que al crear un indice, se tiene que dar un nombre al indice, que tambien NO puede ser de mas de 64 caracteres.
  • Utilizar el guión bajo (_) para separar palabras. Aunque deben tomar en cuenta que en consultas, muy probablemente se tenga que escapar este simbolo, es decir,
no es lo mismo
show tables like 'res_%' 
que
show tables like 'res\_%';
  • Utilizar palabras en minúsculas, sobre todo si trabajas en linuxs.
  • Los nombres de las tablas deberían ir en plural y los nombres de los campos en singular
  • Utilizar el prefijo "id" en las columnas de clave primaria y foránea.
Si tenemos la tabla empresa y el campo id, como su identificador, y vamos a la tabla venta, el campo que haga referencia ala empresa debiera quedar como empresa_id
  • En una tabla, colocar primero la clave primaria seguida de las claves foráneas, despues sus atributos.
  • Los nombres de los campos deben ser descriptivos de su contenido.

Todo esto para tener una estructura mas entendible y ahorrar dolores de cabesa. Y si esto lo hicieramos en un comienzo del diseño super excelente, ya que luego llega lo correctivo y es mas engorroso.

Saludos.

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.

miércoles, 24 de julio de 2013

Buscar archivos con cierta palabra o frase


Desde la consola de linux, queremos encontrar las lineas que hacen referencia a una palabra en específico.

Por lo general es muy util para consultar archivos de log de nuestros programas o de nuestro sistema operativo:


sintaxis:
cat nombrearchivo | grep -i palabraabuscar | less

Ejemplo:
cat /var/log/messages | grep -i pacoadmin | less

Saludos.

martes, 9 de julio de 2013

Tamaño tablas y arbol de directorios por consola

Para consultar el tamaño de las tablas de una base de datos MySQL tenemos el siguiente query que nos ayuda:

SELECT table_name, table_rows, data_length, index_length,
 round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
 FROM information_schema.TABLES WHERE table_schema = "nombre_basedatos"
ORDER BY 5;

Obviamente hay que cambiar el nombre de la base de datos y hay que tener derechos para consultar la base de datos information_schema.


viernes, 28 de junio de 2013

Delay en nuestra replicación a espejo #MySQL

Delay en replicación de datos a otro servidor "espejo".

Hace unos días se me presento, por descuido, un problema. A mas de alguno
le abra pasado que sin querer elimina una tabla (drop table nombretabla) y se da cuenta que la necesita en el mismo instante, para colmo esta tabla contiene información en linea, es decir el respaldo de la noche, te sirve pero no tanto.

Corremos al respaldo espejo y encontramos que la sentencia drop table ya fue ejecutada, la información se a perdido.

Bueno, pues existen diferentes maneras de intentar recuperar la información, tratar de recuperarla de los registros del disco duro, revisar algun log y reconstruir los datos ó un delay en el espejo?, hay varias opciones, cual sera la mejor y/o mas sencilla?.

Revisando un poco este ultimo concepto,(delay al espejo) en MySQL apartir de la versión 5.6, ya te permiten replicar la información y programarle un delay de tiempo, que les parese 5min, para revisar rapido el espejo, ante un problema de este tipo, se detiene la replicación al espejo y se comienza a recuperar la tabla, y esto es solo con un parametro de configuración dentro del archivo my.cnf.

CHANGE MASTER TO MASTER_DELAY = N;

donde N es el numero de segundos a esperar.

Aquí dejo el link por si quieren ondar en ello, yo apenas comenzare a provarlo, pero queria compartirlo por que parese interesante, en cuanto termine, hago mis observaciones.


Gracias y saludos.

lunes, 24 de junio de 2013

Recomendación de organización.

Cuando entren a una organización y se encuentren con la sorpresa de falta de control en procesos(procesos me refiero hasta de reglas para progarmar), recomiendo que almenos por lo que les respecta a ustedes, busquen automatizar o implementar ciertas reglas  de desarrollo. Esto ahorrara muchisimo tiempo de re-analisis y re-programación.

Pueden comenzar con cosas básicas como en vez de cortar y pegar codigo, para ejecutar un query(php, mysql o lo que gusten) en diferentes lugares de la aplicación(diferentes opciones), pues mejor creen una funcion (ó procedimiento) que por si algun motivo de cambio de reglas de la organización se tiene que modificar esa logica, pues que nomas lo tengan que hacer en un solo lugar y no tengan que andar buscando por todo el sistema, donde se encuentra un código que mueva lo mismo.

Igual de importante es tener documentadas estas funciones, que pudieramos llamar genericas, y que esten a la mano de los programadores para que cuando requieran utilizarlas puedan tener a la mano documentación de su uso y el resultado que obtendran con ella.

Algunos sabran a lo que me refiero y les hara sentido de primera instancia, otros aprendemos a la maña.

"Planear lo que se va a realizar, nos ahorrar mucho tiempo"
Parese una frase muy repetida, pero cada letra esta llena de verdad y hasta se queda corta. Aveces el planear hasta nos ayuda a entretenernos más en el trabajo. Resultado: Mayor producción, mas rapido se va el día, mejor hacemos nuestro trabajo, mayor satisfacción con uno mismo y con la organización, y sumale que si lo aplicas a tu vida personal.. produciras en todos los ambitos.

Suerte y a hecharle ganas.

miércoles, 19 de junio de 2013

Cargar archivo de texto a tabla #MySQL:

Subir archivo plano a tabla.

1. Creamos la tabla (si no existe), con la estructura de nuestro archivo a cargar, o la tabla existente debe contener al menos los campos y tipos de campos del archivo a cargar.

2. Creamos el archivo y/o lo copiamos al Servidor o PC a una ruta donde nuestro usuario de base de datos tenga acceso a consultarlo.

3. Cargamos el archivo con el siguiente comando:
LOAD DATA LOCAL INFILE '/direccion donde esta el archivo/nombre archivo'   INTO TABLE nombrebd.nombretabla FIELDS TERMINATED BY '|';

  3.1 Si la tabla donde cargaremos los datos, ademas contiene otros campos, tendremos que especificar los campos, en orden a como viene el archivo de texto.
    LOAD DATA LOCAL INFILE '/direccion donde esta el archivo/nombre archivo' INTO TABLE nombrebd.nombretabla FIELDS TERMINATED BY '|' (campo1, campo2, campo3, campo"n");

  3.2 Si nuestro archivo contiene una primer linea con el nombre de campos debemos ignorar esa linea
    del archivo:
    LOAD DATA LOCAL INFILE '/direccion donde esta el archivo/nombre archivo'  INTO TABLE nombrebd.nombretabla FIELDS TERMINATED BY '|' IGNORE 1 LINES;
De igual manera pudiermos crear el insert directamente si no fueran muchos registros.

Nota: El cargado de datos de esta manera es muchisimo mas rapido que un insert.

viernes, 14 de junio de 2013

#Extraer una sola tabla de respaldo MySQL

Esta sentencia es muy util para ahorrar tiempo, supongamos que tenemos un respaldo de una base de datos, y queremos extrar unicamente una tabla , con su información (inserts), para no tener que subir toda la base de datos. Ya sabemos que subir toda una base de datos y esta es muy grande, pues nos puede llevar horas, tengo una base de datos de 23GB y me a durado hasta 5horas haciendo el restore.

En este caso con el comando sed vamos a extraer el script y lo mandamos a otro archivo. Por terminal.

sed -n -e '/CREATE TABLE.*catalogo_tienda/,/CREATE TABLE/p' backup_basedatos.sql > catalogo_tienda.dump

Explicandolo poquito:
Busca en el respaldo(backup_basedatos.sql), la coincidencia "CREATE TABLE " y pues el nombre de la tabla es lo quese cambiara, "catalogo_tienda".

Luego ponemos el nombre del archivo del respaldo "backup_basedatos.sql"

Y por ultimo mandamos la salida a otro archivo que en el ejemplo es: catalogo_tienda.dump

El trabajo no termina aquí, tenemos que editar el archivo de salida (en mi caso con el editor vim).

vim catalogo_tienda.dump

Quitamos lo que este de mas, dado que puede encontrar otras coincidencias, como alguna otra tabla que se llame catalogo_tienda_foranea, quizas. Eliminas esos datos de mas del archivo y gravas y ya tienes el archivo final, para subirlo.

Paresen muchos pasos,pero ya que lo haces, te das cuenta que es sencillo y rapido. Claro que se puede  optimizar un poco mas el proceso, haciendo un script donde mandes de parametros, el nombre de la tabla  a buscar, el nombre del archivo del respaldo.

PD: En una chancita genero el script y dejo el codigo. 


jueves, 13 de junio de 2013

Proceso a segundo plano en consola Linux

Este proceso me ha salvado de salir tarde en algunas ocasiones.

Ponemose a correr algun proceso, generar un respaldo, comprimir algun archivo, ó copiar un archivo de servidor a servidor, y se llega la hora de irse(por poner un ejemplo, jeje), y no queremos tumbar el proceso, aclarando,  son procesos ejecutados desde una Terminal y en Linux, tendria que revisar si se puede hacer algo similar en la Ventanita(Windows), en Mac si se puede, y bueno quieres que se quede en segundo plano, dentro del servidor... para poder apagar la PC.. eh ahi el tip.

Bueno comienzo con la breve y facil explicación:

Nos posicionamos en donde mandamos a ejecutar el proceso digamos que es una compresion de archivo

bzip2 nombrearchivohola

Esto provocara que la terminal espere a que nuestro proceso termine, para regresarnos el control de la terminal.

Entonces nosotros pulsamos [ctrl + Z], lo que detiene el proceso (no lo tumba, es como un pause)
Despues escribimos: bg

Y nuestro proceso continuara en segundo plano. Si existiera mas de un solo proceso ejecutandose al mismo tiempo, al momento de dar el [ctrl + Z], entonces apareceran varias tareas, para que continue el que tenemos en nuestra pantalla, lo buscamos en la lista y al darle el bg#2 le agregamos el #2 donde el 2 significa el numero del proceso al que pertenece.

Por ultimo si queremos mandar el proceso de nueva cuenta a primer plano, le damos: fg

Nota: Con el comando jobs podemos revisar cuantas tareas existen ejecutandose.

Podemos evitar todo esto, mandando desde primera instancia el proceso a segundo plano(background), y es mucho mas facil,

nohoup bzip2 nombrearchivohola &

realmente es con el puro & al final pero agreamos el nohoup por si existe alguna salida ó mensajes, que nos regrese el comando lo manda al archivo nohoup, que queda en la misma ruta.

miércoles, 12 de junio de 2013

Cambiar contraseña o recuperar contraseña root - mysql

Si surge la necesidad de cambiar la contraseña de algun usuario de MySQL los siguientes scripts te   pueden servir.

1. La primera opcion es obtener los privilegios y despues ejecutar el  comando GRANT con la nueva contraseña.

SHOW GRANT FOR 'usuario'@'localhost'

obtienes:

GRANT usage ON *.* TO 'usuario'@'localhost' IDENTIFIED BY PASSWORD 'contrasenia';

GRANT ALL privileges ON  basedatos.* TO 'usuario'@'localhost';

GRANT ALL privileges ON basedatos.* TO 'usuario'@'localhost' IDENTIFIED BY PASSWORD 'contrasenia';

2. Otra manera es entrar al mysql y ejecutar:

SET password FOR usuario@'localhost' = password('contrasenia');

3. Y por ultimo podemos actualizar en la tabla mysql.user:

UPDATE mysql.user SET password = PASSWORD('contraseña') WHERE user = 'nombreusuario';

Y refrescamos los privilegios:

FLUSH PRIVILEGES;

lunes, 10 de junio de 2013

Migrar usuarios y permisos de un servidor a otro #MySQL

Bueno, no siempre llevare un órden con los blogs que les vaya dejando, dado que algunos se me van presentando en la vida diaria, entonces los voy a venir postiando a como se presenten, abra post sencillos y otros mas extraños, no en orden.

En estos días se me presento el hecho de migrar unos usuarios desde un servidor a otro, y apesar de que existen varias formas yo les voy a presentar una:

Primero que nada vamos a requerir obtener los usuarios del servidor ORIGEN y a las base de datos que tienen acceso, para esto ejecutamos lo siguiente y nos genera un archivo de salida (usuarios_bds.sql)

mysql "SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS query FROM mysql.user;" > usuarios_bds.sql

ó internamente, consultando la base de datos mysql:

SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS query FROM mysql.user;

El resultado se ejecuta, y se manda a otro nuevo archivo(privilegios_usuarios.sql), que ya vendrian siendo los privilegios que se estan migrando:

mysql -u root -p -Bse "SOURCE usuarios_bds.sql" > privilegios_usuarios.sql

Por ultimo en el servidor donde se migran los usuarios(DESTINO) se ejecuta el archivo de algunas de las siguientes dos formas:

Forma 1:
mysql -u root -p -Bse "SOURCE privilegios_usuarios.sql"

Forma 2:
mysql -u root -p -Bse < privilegios_usuarios.sql;


jueves, 6 de junio de 2013

Comparación de estructuras de base de datos

El día de hoy me di a la tarea de buscar alguna herramienta que me permitiera comparar dos estructuras de base de datos, me eh encontrado con el conflicto del S.O. para poder ser instaladas, que aun cuando se puede virtualizar otro S.O. en un Linux por ejemplo (virtualizar windows),  no es tan comodo como paresiera, aquí les dejo algunas de las herramientas que eh encontrado divididas por S.O.


miércoles, 5 de junio de 2013

Herramientas generales utiles

Les recomiendo las siguientes #herramientas para facilitar su estadia tras de una computadora, ya que los programadores, sysadmins, webmaster, todo informatico y hasta publico en general pasamos  muchisimo tiempo tras una computadora. En su mayoria son herramientas de Linuxs, pero algunos  pueden ser usados en Windows y Mac tambien.

Tablas del Sistema Manejador de Base de Datos

Los administradores de base de datos tienen que dedicarle tiempo a conocer las tablas de sistema de base de datos, ya que de estas se puede obtener información(valiosa) que ayudan a una mejor administración de los datos y sus estructuras, así como de conocimiento general del funcionamiento de los objetos.

Se pueden programar utilerias consultando estas tablas para identificar datos como indices de las tablas, campos de las tablas, cantidad de tablas por base de datos, etc.

En MySQL contamos con 2 base de datos muy importantes:

miércoles, 8 de mayo de 2013

Bienvenidos

Loading..

De vez en cuando hablare un poco de MySQL, SQL, Django, Python, entre otras cosas que nada que ver...

Actividades de un DBA - Prioritarias

ADMINISTRACIÓN DE BASE DE DATOS

En general la administración de base de datos, en cualquiera de sus manejadores, Oracle, MySQL, SQL, NoSQL, MongoDB, PostgreSQL, etc. conlleva a realizar ciertas actividades genericas para un administrador de base de datos, les comentare sobre algunos pasos generales y otros especificos con base a lo que me a tocado vivir.

Lo mas importante para un DBA, en cuanto llega a una empresa debiera ser:

  1. Revisar que existan respaldos de las base de datos:
    1. En donde se encuentran.
      • Fisicamente donde se encuentran guardados estos respaldos.
    2. Con que frecuencia.
      • Con que cierto tiempo se realizan los respaldos.
    3. Checklist de chequeo que se generen.
      • Revisar que se generen y que situaciones se han presentado.
    4. Integridad de los mismos.
      • Revisar que esten generados correctamente, que en caso de necesitarlos, realmente sean funcionales.
    5. Esten completos.
      • Estar seguros que tenemos respaldo de todo lo que nos competa.
  2. Si no existieran, crearlos.
    • Llevar a cabo todos los pasos anteriores.

Una vez realizado esto, comenzar a analizar TODO. Se preguntaran "¿Qué es todo?". Yo lo enlisto en las siguientes actividades.
  1. Cuantas base de datos hay.
    1. En que servidores
    2. Productivas o No productivas
  2. Cuantos servidores.
    1. Con base de datos o sin base de datos
    2. Base de datos productivas o no.
  3. Que usuarios existen.
    1. Quienes usan estos usuarios.
    2. Como los usan, por aplicación o manualmente.
    3. Que tipos de derechos tienen y a que base de datos.
  4. Aplicaciones que accesan a las base de datos.
    1. Identificar los usuarios de estas aplicaciones, son clientes externos o internos, etc.
Es como llevar un inventario de la seguridad de nuestras base de datos, todo esto para controlar lo que esta modificando a nuestros datos (si, ya son nuestros datos, somos los administrador y esa sera nuestra tarea).

Obviamente, existen otras tareas que tendremos que ir llevando, analizar y optimizar como es que se estan consultando los datos, crear mantenimientos y estadísticas.

Saludos.
"Cuando todo esta bien... PUEDE ESTAR MEJOR."