Arreglar la replicación en MySQL saltando queries

En un entorno master-slave de MySQL es posible que nos encontremos que se han ejecutado en el master comandos que no se pueden trasladar al slave por algún motivo. Vamos a ver como saltarnos las queries mediante sql_slave_skip_counter Vamos a ver un caso concreto, supongamos que en el slave nos encontramos el siguiente error en [...]

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 …
[Lea más]
MySQL: error: redeclaration of C++ built-in type ‘bool’

Al compilar el MySQL puede ser que tengamos el siguiente error: error: redeclaration of C++ built-in type 'bool' Vamos a ver como solucionarlo. Este error sale cuando hemos hecho el ./configure sin tener instalado el compilador g++, luego cuando se ha quejado con el siguiente error: source='my_new.cc' object='my_new.o' libtool=no \ DEPDIR=.deps depmode=none /bin/sh ../depcomp \ [...]

Una vez que conocemos la teoría, vamos a poner en marcha nuestro...

Una vez que conocemos la teoría, vamos a poner en marcha nuestro primer Cluster. Estará compuesto únicamente por 3 ordenadores.

Nodo 1 (192.168.1.106):

  • ndb_mgmd
  • mysqld

Nodo 2 (192.168.1.104):

  • ndbd

Nodo 3 (192.168.1.105):

  • ndbd

Esto es, el nodo 1 será un Management Node + API Node y los dos restantes Data Nodes.

Lo primero de todo es descargarnos MySQL Cluster de http://dev.mysql.com/downloads/cluster/

La instalación es tan sencilla como descomprimir el fichero y copiar a nuestro PATH los ejecutables que necesitemos. Por lo tanto, llevaremos a /usr/bin/ los ejecutables ndbd, ndb_mgmd, ndb_mgm, mysqld, mysqld_safe.

Para tener un poco ordenadas las cosas, creamos la carpeta /etc/mysql-cluster/ donde alojaremos el fichero de …

[Lea más]
Introducción a MySQL Cluster

MySQL Cluster es una base de datos que como su nombre indica funciona en un Cluster de servidores. Mucha gente confunde terminos y define un conjunto de servidores con replicación como un MySQL Cluster, pero hay que tener en cuenta que son dos conceptos totalmente distintos. MySQL Cluster nos ofrece:

  • Alta disponibilidad
  • Escalabilidad
  • Failover automático
  • Redundancia
  • Alto throughput

La versión actual es la 7.1 y puede descargarse de http://www.mysql.com/products/database/cluster/

Componentes

Un Cluster MySQL está compuesto por los siguientes componentes:

Manager (ndb_mgmd): es un servicio encargado de poner en marcha el cluster, conectar nuevos servidores y ejecutar distintos comandos de administración mediante el CLI ndb_mgm. Una vez que …

[Lea más]
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 …
[Lea más]
Data Types Comparacion MySQL-Oracle-PostgreSQL-MSQL

MySQL PostgreSQL SQLite

TINYINT SMALLINT INTEGER
SMALLINT SMALLINT
MEDIUMINT INTEGER
BIGINT BIGINT
BIT BIT INTEGER
_______________________________________________________

TINYINT UNSIGNED SMALLINT INTEGER
SMALLINT UNSIGNED INTEGER
MEDIUMINT UNSIGNED INTEGER
INT UNSIGNED BIGINT
BIGINT UNSIGNED NUMERIC(20)
_______________________________________________________

DOUBLE DOUBLE PRECISION REAL
FLOAT REAL REAL
DECIMAL DECIMAL REAL
NUMERIC NUMERIC REAL
_______________________________________________________

BOOLEAN BOOLEAN INTEGER
_______________________________________________________

DATE DATE TEXT
TIME TIME
DATETIME TIMESTAMP
_______________________________________________________

TIMESTAMP DEFAULT TIMESTAMP DEFAULT TEXT
NOW() NOW()

[Lea más]
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)

[Lea más]
Denegación de servicio en MySQL

Mediante un ALTER DATABASE es posible mover todos los datos del datadir a un nuevo punto, haciendo desaparecer todas las bases de datos. Vamos a suponer las siguientes base de datos: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cacti | | jordi | | mysql | | nagios | | [...]