Replicar Bases de Datos

Mysql permite replicar bases de datos, dentro de un mismo servidor mysql (en la misma máquina), o entre B.D. localizadas en diferentes servidores en red local o remota. Para poder conseguir replicar uno de los servidores (Servidor M)  tiene que ser el maestro y el otro servidor el esclavo (Servidor E).

  • Servidor M (Servidor principal, sería el maestro)
  • Servidor E  (Servidor secundario, sería el servidor esclavo).

Cuando indiquemos en el manual Mysql> es porque tenemos que introducir los comandos dentro de la consola de Mysql.

Para entrar en la consola introducir el comando :  mysql -u root -p

Ejemplo del comando en un servidor linux :

# /usr/local/mysql/bin/mysql -u root -p (Puede ser diferente la ruta en tu PC)

En ese momento el servidor mysql pide el password de root , lo introducimos y se accede a la consola.

La replicación de Base de Datos en mysql tiene varias características a considerar y son:

  • Podemos replicar Bases de Datos en el mismo servidor (Diferentes servicios MySql), en Servidores diferentes en LAN (Red Local) o WAN (Servidores Remotos).
  • Se puede configurar (etc/my.cnf), la replicación parcial o total de las tablas de la Base de Datos a replicar del Servidor Maestro al Servidor Esclavo/s.
  • La replicación es UNIDIRECCIONAL, los datos se copian de una base de datos a otra en un solo sentido, eso quiere decir que solo en una base de datos se deben actualizar los datos (sentencias INSERT, UPDATE, DELETE),  que es la base de datos maestra, y la base de datos esclava nunca debe recibir sentencias de actualización de las tablas que se replican, solo consultas (SELECT).
  • De las tablas de la Base de Datos que no se replican, entre el Servidor Maestro y el Esclavo, se pueden realizar las sentencias (INSERT, UPDATE y DELETE), en la base de datos del Servidor Esclavo.
  • Podemos tener sendos servidores esclavos para cada maestro, pero no varios maestros para un esclavo.
  • La replicación copia exactamente todos los cambios que se van haciendo desde que se activa el sistema de replicación, es decir, antes de replicar hay que hacer un backup definitivo de la base de datos principal a la esclava, para que las 2 bases de datos tengan exactamente la misma información.
  • Cada servidor esclavo debe tener permiso para conectar con el maestro y solicitar las actualizaciones.
  • El servidor esclavo necesita una cuenta en el servidor maestro para que pueda conectarse. En el servidor maestro, configure una cuenta como ésta :
  • Mysql> GRANT REPLICATION SLAVE ON *.* TO ‘usuario_esclavo’@’host_esclavo’ IDENTIFIED BY ‘contraseña_esclavo’;
  • El servidor maestro crea un hilo de proceso para manejar cada esclavo. En el lado del servidor esclavo se crean 2 hilos para manejar las tareas de réplica. El primer hilo es de Entrada/Salida recibe los eventos para procesar del servidor maestro y los escribe en los registros de reenvío del esclavo. El segundo hilo el SQL lee los eventos de los registros de reenvío y los ejecuta.
  • Es aconsejable que las réplicas de las Bases de Datos MySql sean de la misma versión y si es posible de la 5.x y activos los mismos motores en las 2 B.D.

La actualización de la información de la Base de datos Mysql Master (total o parcial de sus tablas),  automáticamente Mysql actualiza unos ficheros de datos “mysql-bin.XXXXXX”. Una vez actualizados estos ficheros se envía un evento al servidor con la base de datos Esclava y ésta se comunica con el Servidor Esclavo para recibir la porción del fichero de “mysql-bin.XXXXXX” que le falta; no todo el fichero sino la porción que le falta por tratar solamente (esto se sabe por posiciones tratadas dentro del fichero, nº linea).

COMANDOS IMPORTANTES PARA VER Y CONTROLAR LA REPLICACIÓN

1.- Utilidades del Servidor Maestro

Estando dentro del servidor Maestro (M) :

Mysql>SHOW MASTER STATUS;

El master por cada cambio realizado en la Mysql principal (insert, update, delete) trabaja creando líneas de cambios en un fichero bin.

La sentencia SHOW MASTER STATUS :  Indica  el fichero .bin que está utilizando el master para guardar los cambios actualmente y por que posición va actualmente (línea dentro del fichero).

Ejemplo de resultado de SHOW MASTER STATUS/

  • File = mysql-bin.000122       [Fichero bin actual ]
  • Position = 269                        [Última posición insertada]
  • BinLog_Do_DB = empresa [Base de datos que trata únicamente]
  • BinLog_Ignore_Db =  “”   [BD ignoradas, si BinLog_Do_Db <> “” el resto]

Estando dentro del servidor Maestro (M) :

Mysql> SHOW PROCESSLISTG;

Muestra el estado del flujo del servidor que se encarga de enviar al esclavo los ficheros de “mensajes” actualizaciones en la base de datos del maestro.

*************************** 10. row ***************************

  • Id: 97
  • User: replica
  • Host: 192.168.5.130:48647
  • db: NULL
  • Command: Binlog Dump
  • Time: 1262
  • State: Has sent all binlog to slave; waiting for binlog to be updated
  • Info: NULL

2.- Utilidades del Servidor Esclavo

Estando dentro del servidor Esclavo (E) :

Mysql> SHOW SLAVE STATUS;

Slave_IO_State: Waiting for master to send event

  • Master_Host: 192.168.5.130 [Ip master]
  • Master_User: replica [Usuario master para conectarse]
  • Master_Port: 3306 [Puerto mysql]
  • Connect_Retry: 60 [60” Timeout para conectar los 2 servers]
  • Master_Log_File: mysql-bin.000122 [Último Fichero master]
  • Read_Master_Log_Pos: 269 [Última posición en el fichero master]
  • Relay_Log_File: server-relay-bin.000011 [Último log en el esclavo]
  • Relay_Log_Pos: 406 [Última posición en el log del esclavo]
  • Relay_Master_Log_File: mysql-bin.000122 [Último fichero master]
  • Slave_IO_Running: Yes            [Muy importante, debe ser yes]
  • Slave_SQL_Running: Yes         [Muy importante, debe ser yes]
  • Replicate_Do_DB: empresa [B.D se replica únicamente]
  • Replicate_Ignore_DB:

Si los campos Slave_IO_Running : No y Slave_SQL_Running : No.

Por estar el servicio parado en el Servidor Esclavo (E), activar con el mandato :

Mysql> START SLAVE;

Estando aún dentro del Servidor Esclavo (E) :

Mysql> SHOW PROCESSLISTG;

El comando enseña para el esclavo los 2 flujos que hay trabajando, en concreto siempre habrá 2, el primero que lee del servidor master (flujo entre máquinas), y el segundo, que coge los datos recibidos y actualiza la base de datos (flujo interno de actualización).

El master guarda los cambios en la base de datos en un fichero log, en ciertas posiciones.  Cuando hace esto manda un evento al proceso del esclavo.  El esclavo recibe el evento y se conecta con el flujo 1 al servidor para recibir el log, una vez recibido el flujo 2 mete la información nueva al mysql propio.

*************************** 1. row ***************************

  • Id: 1
  • User: system user
  • Host:
  • db: NULL
  • Command: Connect
  • Time: 2752  (tiempo desde la última lectura del master, en segundos)
  • State: Waiting for master to send event
  • Info: NULL

*************************** 2. row ***************************

  • Id: 2
  • User: system user
  • Host:
  • db: NULL
  • Command: Connect
  • Time: 12
  • State: Has read all relay log; waiting for the slave I/O thread to update it
  • Info: NULL

RESETEAR o PURGAR LOS LOG’S EN EN SERVIDOR MAESTRO

Para inicializa los contadores y borra todos los “mysql-bin” temporales, el mandato es :

Mysql> RESET MASTER;

Para expirar los registros binarios. Podemos utilizar dicha sentencia después de ejecutar la sentecia :

Mysql> PURGE MASTER;

En cada uno de los esclavos para determinar qué registros binarios ya  no son necesarios.

Mysql> SHOW SLAVE STATUS;

 

Anuncios

Pastie – Handy Clipboard

Pastie is a small clipboard manager that uses an indicator-applet to display and give access to you clipboard history.

It boasts a modest set of configurable preferences including history size, options to set keyboard shortcuts and minor interface tweaks to the applet itself.

Download

It has its own PPA

sudo add-apt-repository ppa:hel-sheep/pastie

sudo apt-get update && sudo apt-get install pastie

Mono-Icon

By default Pastie uses a stock GNOME icon for its indicator. FOr users of Ambiance or Radiance this looks less than ideal but is easily remedied by replacing the stock icon with mono-style equivalents created by DeviantArt user ~Ramzea.

Download, extract and pop your required icon in

  • /usr/share/icons/Humanity/actions/22

 

Full Name in the MeMenu

Full name in the MeMenu

A small but useful tweak. By default, Ubuntu displays your username in the panel. With this command, you can change that to your full name:

gconftool -s --type int /system/indicator/me/display 2

Pro Tip: For more consistency fun, install the package ‘indicator-datetime’ to get a sweet as indicator clock and calender.

Global Menu

Application Menus in the panel

Many will argue that this is very OS X-like, and of course it is, but for myself and a lot of people having the application menus located outside of the window minimizes clutter nicely. To install it, just follow these instructions:

sudo apt-get install appmenu-gtk indicator-appmenu indicator-applet-appmenu

Add it to your panel by right clicking on the panel, choosing Add to Panel and then select Indicator Applet Appmenu

Log out and back in, and you should have global menus!

Reduce el cansancio de la vista con Redshift 4

Cuando pasamos mucho tiempo enfrente de la computadora puede que la vista empiece a cansarse y no vamos a poder seguir trabajando bien, pero esta claro que siempre es bueno darse un descanso de unos 15 minutos o depende de cada quien y eso aveces no sirve de mucho, por eso la siguiente aplicación nos puede ayudar a reducir el cansancio para que podamos trabajar mas tranquilamente.

Redshift nos ayuda con esto gracias a que de forma automática cambia la temperatura de los colores de nuestra pantalla dependiendo de la luz a tu alrededor, esto gracias a las coordenadas geográficas.

En el sitio del proyecto podemos ver una mejor definición:

La temperatura de los colores en pantalla se determinan en base a la posición del sol. De ese modo, la temperatura de los colores será diferente durante el día y la noche. Durante el crepúsculo y la primera mañana la temperatura de los colores se van corrigiendo muy lentamente para que tus ojos se vayan adaptando sin darse cuenta del cambio. A la noche la temperatura de los colores debe igualar a las lámparas que se encuentren en tu habitación. Esto es, típicamente, una temperatura de colores baja, que oscila entre los 3000K y los 4000K (siendo la más común 3700K). Durante el día, la temperatura de los colores debe igualar la luz que proviene de afuera (básicamente, del sol) y oscila entre los 5500K y los 6500K (siendo la más común 5500K). La luz tiene una temperatura más alta en los días nublados.

Lo mejor de esta aplicación es que se puede instalar en varias distribuciones GNU/Linux y también en Windows, yo lo instale en Debian Squeeze y trabaja sin problemas, para los que tenga ubuntu lo pueden instalar con los siguiente pasos utilizando el PPA oficial:

sudo add-apt-repository ppa:jonls/redshift-ppa

sudo apt-get update && sudo apt-get install redshift

En Debian Squeeze:

# apt-get install redshift gtk-redshift

Si quieres probar la version para windows que es experimental puedes descargar la versión para 32 bits y 64 bits.

Ahora para empezar a utilizar la aplicación tenemos que entrar a Get Lat Lon y buscar nuestras coordenadas con el nombre de nuestra ciudad y podemos empezar a utilizarlo de la siguiente forma:

$ gtk-redshift -l 19.430657880694895:-99.17152404785156

$ redshift -l 19.430657880694895:-99.17152404785156

Si queremos que inicie cuando prendamos la computadora tenemos que agregarlo en Sistema > Preferencias > Aplicaciones al Inicio y listo vamos a poder cuidar nuestra vista siempre que estemos utilizando la computadora.

Faenza style icons for JDownloader

Users of the Faenza icon set longing for Java one-click hosting download manager Jdownloader to integrate with some subtly into their desktops may wish to use the following Faenza-style replacement icons.

The handy work of a user by the handle  ~rockrknight on DeviantArt, the icon set comprises of replacement icons for the tray, menus, splashscreen, mime and even for toolbars within Faenza itself.

Download

Grab the archive with all you need @ rockrknight.deviantart.com/#/d2y3teq

Installation

Extract the downloaded archive

Move the extracted folder to the folder named ‘img’ located in

  • /home/your_username/.jdownloader/jd/img/

Don’t forget to restart Jdownloader to see the changes take effect.

Not a Faenza user?

You can find replacement icons for Elementary here or Ubuntu-mono here.

icons ubuntu for pidgin

Ubuntu design team member Otto Greenslade blogged about a set of new Ubuntu-style emoticons for use on the Canonical design blog at the weekend – and you can now use them in Pidgin.

And you know what? They’re really quite awesome: –

emoticons

We made a similar set of emoticons based on the OMG! speech bubble icon for use in the OMG! Ubuntu! forum earlier last month: –

image

We intended to package these emoticons up for use in Empathy, Pidgin, etc however since Otto’s icons are much more Ubuntu-y – and the fact an ace person by the name of Robbie has already packaged them up for Pidgin – we no longer need to.

icon_biggrin

Install the Ubuntu-style emoticons in Pidgin

  1. Download:
    1. http://people.canonical.com/~robbiew/smileys/Pidgin_Ubuntu_smileys.tgz
  2. Open Pidgin > Tools > Preferences and select the ‘Themes’ tab
  3. Drag and drop the downloaded smileys.tgz on to this window
  4. Ta da!

BugZilla

Lo bajamos y lo descomprimimos en una carpeta de nombre bugzilla:

  >> cd /var/www/html
  >> wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-3.0.6.tar.gz
  >> gzip -d bugzilla-3.0.6.tar.gz
  >> tar -xvf bugzilla-3.0.6.tar
  >> mv bugzilla-3.0.6 bugzilla

Con el siguiente comando comprobamos si tenemos todo lo necesario instalado:

  >> ./checksetup.pl –check-modules

    * NOTE: You must run any commands listed below as root.

    ***********************************************************************
    * REQUIRED MODULES                                                    *
    ***********************************************************************
    * Bugzilla requires you to install some Perl modules which are either *
    * missing from your system, or the version on your system is too old. *
    *                                                                     *
    * The latest versions of each module can be installed by running the  *
    * commands below.                                                     *
    ***********************************************************************
    COMMANDS:

        /usr/bin/perl -MCPAN -e 'install "Email::Send"' 
        /usr/bin/perl -MCPAN -e 'install "Email::MIME"' 
        /usr/bin/perl -MCPAN -e 'install "Template"' 
        /usr/bin/perl -MCPAN -e 'install "Email::MIME::Modifier"' 
        /usr/bin/perl -MCPAN -e 'install "Date::Format"' 

    ***********************************************************************
    * DATABASE ACCESS                                                     *
    ***********************************************************************
    * In order to access your database, Bugzilla requires that the        *
    * correct "DBD" module be installed for the database that you are     *
    * running.                                                            *
    *                                                                     *
    * Pick and run the correct command below for the database that you    *
    * plan to use with Bugzilla.                                          *
    ***********************************************************************
    COMMANDS:

         PostgreSQL: /usr/bin/perl -MCPAN -e 'install "DBD::Pg"'
                Minimum version required: 1.45
         MySQL: /usr/bin/perl -MCPAN -e 'install "DBD::mysql"' 
                Minimum version required: 2.9003

Ahora instalamos lo que nos ha indicado el script que hemos ejecutado:

  >> /usr/bin/perl -MCPAN -e 'install "Email::Send"'
  >> /usr/bin/perl -MCPAN -e 'install "Email::MIME"'
  >> /usr/bin/perl -MCPAN -e 'install "Template"'
  >> /usr/bin/perl -MCPAN -e 'install "Email::MIME::Modifier"'
  >> /usr/bin/perl -MCPAN -e 'install "Date::Format"'
  >> /usr/bin/perl -MCPAN -e 'install "DBD::mysql"'

Creamos un fichero de nombre localconfig y escribimos lo siguiente (cambiando la negrita por tus datos):

  $create_htaccess = 1;
  $webservergroup = 'apache';
  $db_driver = 'mysql';
  $db_host = 'HOST_SERVIDOR';
  $db_name = 'NOMBRE_BASE_DATOS';
  $db_user = 'USUARIO_BASE_DATOS';
  $db_pass = 'CLAVE_USUARIO_BASE_DATOS';
  $db_port = 3306;
  $db_sock = ;
  $db_check = 1;
  $index_html = 0;
  $cvsbin = ;
  $interdiffbin = ;
  $diffpath = '/usr/bin';

Ahora instalamos bugzilla con el siguiente comando (Puede que nos de algún error si no se ha instalado bien alguna dependencia) y rellenamos los datos para crear la cuenta de administrador del bugzilla:

  >> ./checksetup.pl
    ...
    Enter the e-mail address of the administrator: EMAIL_DE_LA_CUENTA_DEL_ADMINISTRADOR
    Enter the real name of the administrator: NOMBRE_DEL_ADMINISTRADOR
    Enter a password for the administrator account: CONTRASEÑA_DEL_ADMINISTRADOR
    Please retype the password to verify: CONTRASEÑA_DEL_ADMINISTRADOR
    ...

Ahora vamos al fichero de configuración del apache (/etc/httpd/conf/httpd.conf) y añadimos las siguientes líneas al final:

  <Directory "/var/www/bugzilla">
     Options +ExecCGI
     AllowOverride Limit
      DirectoryIndex index.cgi
      AddHandler cgi-script .cgi
  </Directory>

Ahora para que tenga efecto esta modificación reiniciamos el apache:

  >> sudo service apache2 restart

Y ya lo tenemos instalado. Para acceder a él iremos a la url http://TU_SERVIDOR/bugzilla/

Actualización

La actualización es muy sencilla. Solo tenemos que bajarnos y descomprimirnos la última versión y copiar el archivo localconfig y la carpeta data de los archivos antiguos de nuestro bugzilla. Por último ejecutaremos el programa de actualización. A continuación podemos ver las ordenes:

 >> cd /var/www/html
 >> sudo tar xzvf bugzilla-2.22.1.tar.gz
 >> cd bugzilla-2.22.1
 >> sudo cp ../bugzilla/localconfig* .
 >> sudo cp -r ../bugzilla/data .
 >> cd ..
 >> sudo mv bugzilla bugzilla.old
 >> sudo mv bugzilla-2.22.1 bugzilla
 >> sudo ./checksetup.pl

Puede que nos falte algún modulo de perl y nos pida instalarlo. Por ejemplo nos podría dar estas líneas:

 ...
 COMMANDS TO INSTALL OPTIONAL MODULES:

              GD: /usr/bin/perl install-module.pl GD
           Chart: /usr/bin/perl install-module.pl Chart::Base
     Template-GD: /usr/bin/perl install-module.pl Template::Plugin::GD::Image
      GDTextUtil: /usr/bin/perl install-module.pl GD::Text
         GDGraph: /usr/bin/perl install-module.pl GD::Graph
        XML-Twig: /usr/bin/perl install-module.pl XML::Twig
      MIME-tools: /usr/bin/perl install-module.pl MIME::Parser
     PatchReader: /usr/bin/perl install-module.pl PatchReader
      PerlMagick: /usr/bin/perl install-module.pl Image::Magick
     Authen-SASL: /usr/bin/perl install-module.pl Authen::SASL
      RadiusPerl: /usr/bin/perl install-module.pl Authen::Radius
       SOAP-Lite: /usr/bin/perl install-module.pl SOAP::Lite
   HTML-Scrubber: /usr/bin/perl install-module.pl HTML::Scrubber
 Email-MIME-Attachment-Stripper: /usr/bin/perl install-module.pl Email::MIME::Attachment::Stripper
     Email-Reply: /usr/bin/perl install-module.pl Email::Reply
     TheSchwartz: /usr/bin/perl install-module.pl TheSchwartz
  Daemon-Generic: /usr/bin/perl install-module.pl Daemon::Generic

 COMMANDS TO INSTALL REQUIRED MODULES (You *must* run all these commands
 and then re-run checksetup.pl):

     /usr/bin/perl install-module.pl CGI
     /usr/bin/perl install-module.pl Digest::SHA
     /usr/bin/perl install-module.pl DateTime
     /usr/bin/perl install-module.pl DateTime::TimeZone
     /usr/bin/perl install-module.pl Template
     /usr/bin/perl install-module.pl Email::MIME::Encodings

 To attempt an automatic install of every required and optional module
 with one command, do:

   /usr/bin/perl install-module.pl --all

Como podemos ver hay 6 módulos que requiere y 17 opcionales. Si queremos instalar solo los obligatorios tendríamos que ejecutar las siguientes ordenes (Si nos hubiera salido esta misma salida, sino tendrás que ejecutar las ordenes que os dirá):

 >> /usr/bin/perl install-module.pl CGI
 >> /usr/bin/perl install-module.pl Digest::SHA
 >> /usr/bin/perl install-module.pl DateTime
 >> /usr/bin/perl install-module.pl DateTime::TimeZone
 >> /usr/bin/perl install-module.pl Template
 >> /usr/bin/perl install-module.pl Email::MIME::Encodings

Si quisieramos instalar todo (módulos opcionales y obligatorios), tendriamos que ejecutar la orden:

 >> /usr/bin/perl install-module.pl --all

Y despues de instalar los módulos qeu nos faltaran volveriamos a ejecutar el comando de actualización:

 >> ./checksetup.pl

Problemas

  • PROBLEMA:
  >> /usr/bin/perl -MCPAN -e 'install "DBD::mysql"'
    ...
      all skipped: ERROR: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) Can't continue test
    ...
    make: *** [test_dynamic] Error 255
      /usr/bin/make test -- NOT OK
    Running make install
      make test had returned bad status, won't install without force

SOLUCIÓN:

  >> sudo yum install perl-DBD-MySQL

<<Sin solucion>>

  • PROBELMA:
  >> /usr/bin/perl -MCPAN -e 'install "DBD::mysql"'
    ...
    dbdimp.h:22:49: error: mysql.h: No such file or directory
    ...
    make: *** [dbdimp.o] Error 1
     CAPTTOFU/DBD-mysql-4.004.tar.gz
     /usr/bin/make -- NOT OK
    Running make test
     Can't test without successful make
    Running make install
     Make had returned bad status, install seems impossible

SOLUCIÓN:

  >> sudo yum install mysql-devel
  • PROBLEMA:
  >> /usr/bin/perl -MCPAN -e 'install "Template"'
    ...
    /bin/sh: gcc: command not found
    make[1]: *** [Stash.o] Error 127
    make[1]: se sale del directorio `/root/.cpan/build/Template-Toolkit-2.20/xs'
    make: *** [subdirs] Error 2
      /usr/bin/make  -- NOT OK
    Running make test
      Can't test without successful make
    Running make install
      make had returned bad status, install seems impossible

SOLUCIÓN:

  >> yum install gcc.i386
PROBLEMA
At some point during the installation, I ran ./checksetup.pl 
It said 'There is no such group: apache. Check your $webservergroup setting in ./localconfig."

According to the Bugzilla configuration notes: 
"You may need to change the value of webservergroup if your web server does not run in the "apache" group. On Debian, for example, Apache runs in the "www-data" group. If you are going to run Bugzilla on a machine where you do not have root access (such as on a shared web hosting account), you will need to leave webservergroup empty, ignoring the warnings that checksetup.pl will subsequently display every time it is run."

Scroll Acer Apire 5740

Si no funciona el scroll lateral de vuestro touchpad podeis seguir la siguiente guia :

  1. Abrimos una terminal (Aplicaciones > Accesorios > Terminal)
  2. Tecleamos estos dos comandos:
  3. sudo modprobe -r psmouse
  4. sudo modprobe psmouse proto=imps
  5. Ya debería funcionar el desplazamiento del touchpad, pruébalo!. Para que no tengamos que hacer estos pasos siempre que encendamos el ordenador, vamos a hacerlo permanente. En el mismo terminal en el que estáis, cambiamos de directorio:
  6. cd /etc/modprobe.d/
  7. Creamos un archivo nuevo:
  8. sudo gedit options
  9. En el editor de textos que se abre, escribimos esto:
  10. options psmouse proto=imps
  11. Guardamos los cambios en el archivo y lo cerramos.

Fuente: https://bugs.launchpad.net