Domingo, 09 Junio 2013 10:18

Migrando a MariaDB en Gentoo

Gracias a qué Oracle ,con la adquisición de MySQL, le esta haciendo perder velocidad desde hace algún tiempo, creemos que es para favorecer al hermando mayor “Oracle DB” y tienes otros problemas de cara a la comunidad de  desarrolladores, por eso pensamos que MariaDB tiene un gran futuro.

Es en este pequeño vamos a explicar de forma sencilla los pasos a seguir para migrar una instalación con MySQL a MariaDB en Gentoo, algunos de estos pasos también podríais aplicarse a otras distribuciones, simplemente seria cambiar los comandos de instalación.

  1. Backup de todas las base de datos por si tenemos que ir marcha atrás.
    mysqldump -A >all.sql
  2. Actualmente en Gentoo MariaDB se encuentra en fase de pruebas con lo que tendremos que añadir lo siguiente en los fichero /etc/portage/package.keywords.
    dev-db/mariadb
    virtual/mysql
  3. Igualmente tendremos que copiar nuestra configuración de dev-db/mysql en /etc/portage/package.use para no perder nuestra personalización.
    Recomendamos usar el flag jemalloc para mejorar el rendimiento.
  4. Paramos la el motor MySQL.
    /etc/init.d/mysql stop
  5. Desinstalamos MySQL
    emerge -C mysql
  6. Instalamos MariaDB.
    emerge mariadb
  7. Y por si tenemos alguna dependencia rota o librería.
    emerge @preserved-rebuild
    revdep-rebuild
  8. Arrancamos la base de datos.
    /etc/init.d/mysql start
  9. Por ultimo actualizamos las tablas.
    mysql_upgrade -u root -p
    mysqlcheck --repair --all-databases -u root -p

 

Y a disfrutar de la velocidad de MariaDB.

 

Referencias:

 

Publicado en Blog
Lunes, 07 Enero 2013 23:22

Sincronizar tablas en MySQL

Cuando se realizan paginas web a veces resulta necesario compartir datos entre ellas como puede ser el caso de compartir los usuarios entre varias web diferentes en joomla y para eso MySQL nos proporciona una funcionalidad llamada FEDERATED que permite usar tablas en remoto como si estas estuvieran almacenadas en local, pero para no tener problemas de perdida de datos y velocidad lo mejor es usarlo en el mismo server.

Para ello en Gentoo necesitamos activar:

USE="extraengine" emerge mysql

O añadirlo en el fichero /etc/portage/packages.use

dev-dev/mysql extraengine

Luego reiniciamos el servicio de MySQL

/etc/init.d/mysql restart

Entramos en la consola de MySQL e instalamos el ENGINE con:

INSTALL PLUGIN federated SONAME 'ha_federated.so';

Pasamos a comprobar que lo tenemos activo:

show engines;

Debe de aparecer algo como esto:

+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| FEDERATED | YES | Federated MySQL storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+


Ahora ya solo nos queda crear la tabla que necesitamos duplicar, modificadas con la sintaxis requerida:

DROP TABLE IF EXISTS 'h3241_users';
CREATE TABLE 'h3241_users' (
'id' int(11) NOT NULL,
'name' varchar(255) NOT NULL DEFAULT '',
'username' varchar(150) NOT NULL DEFAULT '',
'email' varchar(100) NOT NULL DEFAULT '',
'password' varchar(100) NOT NULL DEFAULT '',
'usertype' varchar(25) NOT NULL DEFAULT '',
'block' tinyint(4) NOT NULL DEFAULT '0',
'sendEmail' tinyint(4) DEFAULT '0',
'registerDate' datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
'lastvisitDate' datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
'activation' varchar(100) NOT NULL DEFAULT '',
'params' text NOT NULL,
'lastResetTime' datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Date of last password reset',
'resetCount' int(11) NOT NULL DEFAULT '0' COMMENT 'Count of password resets since lastResetTime',
PRIMARY KEY ('id'),
KEY 'usertype' ('usertype'),
KEY 'idx_name' ('name'),
KEY 'idx_block' ('block'),
KEY 'username' ('username'),
KEY 'email' ('email')
) ENGINE=FEDERATED DEFAULT CHARSET=utf8
CONNECTION='mysql://usuario:password@localhost/basededatos/a4821_users';

Hemos quitado del original el AUTO_INCREMENT, cambio el ENGINE y por supuesto la conexión a la otra base de datos.

 

Referencias:

Publicado en Código en Joomla