IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links
wiki:MySqlReplication

Version 8 (modified by Serge CHASTEL, 15 years ago) ( diff )

--

This page describes the replication of a MySql server database.

Objectives

The database named ps1sc is present on the host neverland. We want to replicate it on the host named biglefts. neverland will be the master, biglefts its slave.

Preliminary

It is necessary to have root access on both configurations (master and slave).

The master MySql version is 5.1.41-3ubuntu12.6.

The slave one is 5.1.37-1ubuntu5.4-log.

Warning: two mysql installations have been deployed on biglefts. Use the one in /usr/bin, not the one in /usr/local/bin (the latter happens to be the default one).

Dump and copy

shell prompt> mysqldump ps1sc > ps1sc.sql
shell prompt> mysql
  mysql prompt> create database ps1sc_copy;
  mysql prompt> exit
shell prompt> cat ps1sc.sql | mysql ps1sc_copy

Set up the master configuration for replication

All commands are executed on the master (neverland) Documentation is at http://dev.mysql.com/doc/refman/5.1/en/replication-howto-masterbaseconfig.html

  • Stop the mysql server: sudo service mysql stop
  • Note: ps waux | grep mysqld should not show anything (except the grep part maybe)
  • Edit the mysql configuration and add (or uncomment+modify) the [mysqld] section so that it contains:
    log-bin=/var/log/mysql/mysql-bin.log
    server-id=2010101301
    
  • Since we are going to use InnoDB, I followed the advice in documentation and added:
    innodb_flush_log_at_trx_commit=1
    sync_binlog=1
    
  • Start the mysql server: sudo service mysql start

Set up the slave configuration for replication

All commands are executed on the slave (biglefts) Documentation is at http://dev.mysql.com/doc/refman/5.1/en/replication-howto-slavebaseconfig.html

  • Stop the mysql server: sudo service mysql stop
  • Note: ps waux | grep mysqld should not show anything (except the grep part maybe)
  • Edit the mysql configuration and add (or uncomment+modify) the [mysqld] section so that it contains:
    server-id=2010101302
    
  • I also activated binary logging (see the last paragraph in the documentation)
    log-bin=/var/log/mysql/mysql-bin.log
    
  • Start the mysql server: sudo service mysql start

Create a User for Replication

Documentation is at http://dev.mysql.com/doc/refman/5.1/en/replication-howto-repuser.html On the master:

  mysql prompt> CREATE USER 'repl'@'biglefts.ifa.hawaii.edu' IDENTIFIED BY 'biglefts_repl';
  mysql prompt> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'biglefts.ifa.hawaii.edu';
  mysql prompt> FLUSH PRIVILEGES;
  mysql prompt> exit

+ Obtaining the Replication Master Binary Log Coordinates Documentation is at http://dev.mysql.com/doc/refman/5.1/en/replication-howto-masterstatus.html

On the master:

  mysql prompt> FLUSH TABLES WITH READ LOCK;
  mysql prompt> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |    83959 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

In a different shell (do not disconnect from mysql client), make a dump of the database:

shell prompt> mysqldump --master-data ps1sc > ps1sc.db

Then, release the lock:

  mysql prompt> UNLOCK TABLES;

Set up the slave

Copy the dump to the slave (with scp, rsync...). Create the database on the slave and ingest the dump:

mysql prompt> CREATE DATABASE ps1sc;
shell prompt> cat ps1sc.db | mysql ps1sc

Set up the master configuration (on the slave):

CHANGE MASTER TO MASTER_HOST='neverland.ifa.hawaii.edu', 
                 MASTER_USER='repl', 
                 MASTER_PASSWORD='biglefts_repl', 
                 MASTER_LOG_FILE='mysql-bin.000001', 
                 MASTER_LOG_POS=83959;

Enjoy…

It might be necessary to tell the slave to ignore some updates: /usr/sbin/mysqld --replicate-ignore-table=mysql.user

MySQL Servers Replications

Database Master Slave Replication User Name
nebulous ippdb00 ippdb02 repl_neb
gpc1 ippdb01 ipp0012 slave
ippRequestServer ippc17 ippc19 repl_pstamp
  • nebulous replicated on 20110315T121800 Parameters:
    mysql> SHOW MASTER STATUS\G
    *************************** 1. row ***************************
                File: mysqld-bin.002221
            Position: 1068308831
        Binlog_Do_DB: 
    Binlog_Ignore_DB: 
    

Dump is on ippdb00:

mysqldump --master-data nebulous -u root > /export/ippdb00.0/ipp/nebulous/nebulous_dump-20110315T121800.sql
Note: See TracWiki for help on using the wiki.