Analizado los campos y tipos de datos en MariaDB

CON SELECT PROCEDURE ANALYSE  podemos obtener la respuesta de un query con los datos optimos en base a la consulta que hicimos y los datos presentes en la tabla, aca a un ejemplo:

MariaDB [training] select * from soccer_teams procedure analyse ();
+-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
----------+
| Field_name                        | Min_value    | Max_value  | Min_length | Max_length | Empties_or_zeros | Nulls | Avg_value_or_avg_length | Std    | Optimal_fieldtype
|
+-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
----------+
| training.soccer_teams.id          | 1            | 2          |          1 |          1 |                0 |     0 | 1.5000                  | 0.5000 | ENUM('1','2') NOT NULL
|
| training.soccer_teams.countryid   | 1            | 2          |          1 |          1 |                0 |     0 | 1.5000                  | 0.5000 | ENUM('1','2') NOT NULL
|
| training.soccer_teams.soccer_team | Boca Juniors | Flamengo   |          8 |         12 |                0 |     0 | 10.0000                 | NULL   | ENUM('Boca Juniors','Flamengo')
NOT NULL |
| training.soccer_teams.founded     | 1895-11-17   | 1905-04-03 |         10 |         10 |                0 |     0 | 10.0000                 | NULL   | ENUM('1895-11-17','1905-04-03')
NOT NULL |
+-----------------------------------+--------------+------------+------------+------------+------------------+-------+-------------------------+--------+--------------------------------
----------+
4 rows in set (0.04 sec)

Aca les dejo na breve y sencilla solucion para poder calcular los tamaños de las DB en MySQL /MariaDB y forks con Information Schema

Realmente es muy sencillo:

MariaDB [information_schema]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 = "training";
+--------------+------------+-------------+--------------+------------+
| table_name   | table_rows | data_length | index_length | Size in MB |
+--------------+------------+-------------+--------------+------------+
| by_year      |          4 |       65536 |            0 |       0.06 |
| country      |          0 |           0 |         1024 |       0.00 |
| part         |          0 |       16384 |            0 |       0.02 |
| soccer_teams |          2 |       16384 |            0 |       0.02 |
| table1       |          0 |           0 |         1024 |       0.00 |
| test_aria    |          0 |        8192 |         8192 |       0.02 |
+--------------+------------+-------------+--------------+------------+
6 rows in set (0.22 sec)

Conociendo Drizzle

Para comenzar drizzle es una proyecto open source y fork de MySQL. Al codigo se le hizo una re ingenieria y se removio el codigo que no se consideraba primordial y mejorando el codigo de base en C++.

Es una base de datos orientada a:

  • Arquitectura de Cloud computing y aplicaciones web.
  • Diseñada para concurrencia masiva en arquitecturas de varios cpu.
  • Memoria optimizada para gran performance y paralelismo.
  • Diseño abierto, comunidad abierta y software abierto.
  • Transaccional por ACID.
  • Facil uso y administracion.
  • APIS para instalar plugins.

Descargar Drizzle:https://launchpad.net/drizzle

Quienes intenten instalar MariaDB windows vista o seven pueden encontrar algunos problemas o el error 1067 a la hora de iniciar el servicio por eso aca van algunas recomendaciones para que no tengan ese problema.

Se descomprimer el zip de la version de mariadb-noinstall-5.2.4-win32.zip
Lo descomprimimos a c:\mariadb por ejemplo  y luego entramos al directorio \bin

C:\>cd mariadb524
C:\mariadb524>
cd bin   C:\mariadb524\bin>mysqld.exe –install MariaDB –defaults-file=C:\mariadb524\myconfig.ini

Cuando querramos iniciar el servicio si cuentan con una version mas vieja de MariaDB es necesario entrar a Panel de Control /Herramientas Administrativas / Servicios y buscar MariaDB , luego vemos las propiedades y PARAMETROS DE INICIO ES NECESARIO PONER –CONSOLE y luego Iniciar el servicio.

Eso es todo


MySQL es de Oracle!!! Y ahora que hago…?

Supongo que mucho ya han escuchado esta historia y no es nada nuevo que Oracle adquirio a Sun y por consiguiente a MySQL, ya que venia en el combo.
Esto quiere decir que  Oracle es el dueño de MySQL y para muchos este tema asusta mas despues de las noticias sobre Solaris. Entonces aqui muchos tienen algunos temores sobre que pasara con MySQL.

Por el momento Oracle va viento en popa con el MySQL Release Candidate 5.5 que nos incluye InnoDB 1.1 como esta en uno de los posts anteriores con varias mejoras asi que quienes quieran continuar de la mano de Oracle por ahora lo pueden hacer tranquilamente.

Igualmente cabe aclarar algo importante Oracle apunta a seguir ofreciendo MySQL con el doble licenciamiento y quienes tengan versiones anteriores open source tampoco tienen problemas al respecto.

Al margen de todo esto hay varias alternativas muy interesantes que vienen perfilando.
Una de ellas es MariaDB. MariaDB es la version gratuita de MySQL creada por el mismo fundador de MySQL años atras (Monty Widenius) que nos ofrece varios cambios en esta version con Storage Engines nuevos como Aria, XtraDB, QGraph, PBXT donde Aria es el sustito de MyISAM y XtraDB es el InnoDB plugin mejorado por Percona.

Desde ya hay libertad en el Mundo de MySQL ya que lo mas importante es poder acceder a soporte confiable y hay sobradas empresas que lo pueden brindar y nuevos binarios de diferentes empresas por lo tanto hay un sin fin de posibilidades en este gran momento de cambio para los usuarios de MySQL. Zend incluso esta recomendando instalar MariaDB y DRUPAL hace lo mismo demostrando que esta mas que probado que MariaDB cumple con todos los requerimientos.

Instalando MariaDB 5.1.49 en Fedora 13

En este post voy a explicar como instalar rapidamente MariaDB en Fedora 13
Primero vamos a descargar el ultimo release desde http://askmonty.org/wiki/MariaDB:Download#Binaries
En este caso yo descargue el binario para 64 bits (mariadb-5.1.49-Linux-x86_64.tar.gz)

Cuando lo descargamos  realizamos lo siguiente:

[root@host ~]#groupadd mysql
[root@host ~]# useradd -g mysql mysql
[root@host ~]#  cd /usr/local
[root@host ~]# gunzip < /home/usuario-test/Downloads/mariadb-5.1.49-Linux-x86_64.tar.gz | tar xvf -
[root@host ~]# ln -s la-ruta-a-mariadb-5.1.49-Linux-x86_64 mysql
[root@host ~]# cd mysql
[root@host ~]# chown -R mysql .
[root@host ~]# chgrp -R mysql .
[root@host ~]# scripts/mysql_install_db --user=mysql
[root@host ~]# chown -R root .
[root@host ~]# chown -R mysql data
[root@host ~]#  bin/mysqld_safe --user=mysql &


La instalacion es igual que instalar MySQL, RECUERDEN QUE DEBEREMOS
PONER UNA CONTRASENA A NUESTRO SERVIDOR DE MARIADB
Luego de ingresar por primera vez

MySQL 5.5 con InnoDB 1.1

Del brazo de Oracle llego la tan esperada version 5.5 de MySQL con InnoDB 1.1 que se muestra como la Default Storage Engine desplazando a MyISAM.

Dentro de los principales cambios tenemos

  • Bloqueo de Metadata con las transacciones
  • Particion por columnas (Antes solo lo teniamos por filas)
  • PERFORMANCE_SCHEMA para el analisis de la performance  y asi obtener mayor control a un bajo nivel.
  • Replicacion semi-sincronica.

Bloqueo de Metadata con las transacciones:

Supongamos que estamos realizando una transaccion, y alguien quisiera hacer algun DDL como un Drop de la tabla t1 donde nosotros estamos realizando una transaccion y otra de las sesiones quiere  realizar un drop. ¿Que pasaria? Bueno con  metadata locking evitariamos un problema de esta indole.

PERFORMANCE_SCHEMA

[mysql] show tables;
 +----------------------------------------------+
 | Tables_in_performance_schema                 |
 +----------------------------------------------+
 | COND_INSTANCES                               |
 | EVENTS_WAITS_CURRENT                         |
 | EVENTS_WAITS_HISTORY                         |
 | EVENTS_WAITS_HISTORY_LONG                    |
 | EVENTS_WAITS_SUMMARY_BY_EVENT_NAME           |
 | EVENTS_WAITS_SUMMARY_BY_INSTANCE             |
 | EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME |
 | FILE_INSTANCES                               |
 | FILE_SUMMARY_BY_EVENT_NAME                   |
 | FILE_SUMMARY_BY_INSTANCE                     |
 | MUTEX_INSTANCES                              |
 | PERFORMANCE_TIMERS                           |
 | PROCESSLIST                                  |
 | RWLOCK_INSTANCES                             |
 | SETUP_CONSUMERS                              |
 | SETUP_INSTRUMENTS                            |
 | SETUP_OBJECTS                                |
 | SETUP_TIMERS                                 |
 +----------------------------------------------+
 18 rows in set (0.00 sec)

Data Types Comparacion MySQL-Oracle-PostgreSQL-MSQL

Herramientas de Monitoreo para MySQL

Vamos a ir repasando algunas herramientas utiles para el trabajo del DBA de MySQL que nos ayudan a administrar nuestros servidores  para poder ver de otra forma la performance de los mismos.

Las herramientas que vamos a ver son:

  • MySQL Enterprise Monitor http://www.mysql.com/products/enterprise/monitor.html
  • Monyog http://www.sqlyog.com
  • dim_Stat http://dimitrik.free.fr/
  • Cacti http://www.cacti.net
  • HoneyMonitor
  • Nagios
  • Munin

Replicacion en MySQL

En este post vamos a hacer muy sencilla la replicacion con mysql y vamos a dar una intro a como podemos realizar esto para luego tratar de abordar casos un poco mas avanzados.

En el servidor Master
Debemos dejar parte de nuestro my.cnf asi:

[mysqld]
# The TCP/IP Puerto en el que escuchara nuestro MySQL
port=3306
server-id=1
binlog-do-db=BASEAREPLICAR
log-bin = /var/log/mysql/masterserver-bin.log

Luego desde el shell creamos el usuario

GRANT  REPLICATION SLAVE ON *.* TO 'usuario_slave'@'%' IDENTIFIED BY  'password';
+-----------------------+----------+--------------+------------------+
| File                  | Position | Binlog_do_db | Binlog_ignore_db |
+-----------------------+----------+--------------+------------------+
| masterserver-bin.004  | 206      | baseareplicar|                  |
+-----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

en el Slave

Como primer medida debemos volcar el dump original del master sobre nuestro SLAVE para no hacer un LOAD DATA FROM MASTER (otra opcion) y evitar lockear el servidor master. Entonces hacemos una importancion de la base del master y luego en nuestro my.cnf vamos a agregar o siguiente:
server-id=2
master-host=192.168.0.18
master-user=usuario_slave
master-password=contraseña
master-connect-retry=60
replicate-do-db=baseareplicar

Luego el siguiente paso es START SLAVE en nuestro SLAVE y si tuvieramos algun inconveniente simplemente desde consola hacemos lo siguiente:

STOP SLAVE;

CHANGE MASTER TO MASTER_HOST='192.168.0.18', MASTER_USER='usuario_slave', MASTER_PASSWORD='contraseña', MASTER_LOG_FILE='masterserver-bin.004', MASTER_LOG_POS=206;

START SLAVE;

Y listo tenemos la replicacion funcionando perfectamente.

  

Calendar

May 2013
M T W T F S S
« Feb    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Recent Entries

    Recent Comments

      Most Commented