| MySQL Replication |
|
|
|
MySQL Replication
MASTER Create MySQL Replication User GRANT REPLICATION SLAVE ON *.* TO 'replication'@'slavehost’ IDENTIFIED BY 'slavesecret';
Configure server ID and bin log on master vim /etc/my.cnf [mysqld] server-id=1 log-bin=mysql-bin.log
Restart MySQL Server /etc/init.d/mysqld restart
Flush and Lock all Tables to Stop Writes FLUSH TABLES WITH READ LOCK;
Note the Master Bin Log Position Details for later on the Slave SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 98 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
Dump the databases that will be replicated If all will be replicated: mysqldump –uuser –psecret --all-databases > mysql-all.sql If one or a few will be replicated do the following for each: mysqldump –uuser –psecret repdb > mysql-repdb.sql
Unlock all the tables so writes can continue UNLOCK TABLES;
SLAVE Configure server ID and Master Details on the Slave vim /etc/my.cnf [mysqld] server-id=2 master-host=masterhost master-user=replication master-password=slavesecret master-connect-retry=60
Restart MySQL Server /etc/init.d/mysqld restart
Configure the Master Bin Log Details on the Slave CHANGE MASTER TO MASTER_HOST='masterhost', MASTER_USER='replication', MASTER_PASSWORD='slavesecret', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=98;
Start the Slave IO Process START SLAVE;
Check the Slave Status SHOW SLAVE STATUS\G
Additional Replication Options MASTER Rather than all databases set the specific ones you want replicated binlog-do-db=thisdb,anotherdb OR per line binlog-do-db=thisdb binlog-do-db=anotherdb
Replicate all but the following databases binlog-ignore-db=tempdb,testdb OR per line binlog-ignore-db=tempdb binlog-ignore-db=testdb
SLAVE Rather than all databases set the specific ones you want replicated replicate-do-db=repthisdb,repthatdb OR per line replicate-do-db=repthisdb replicate-do-db=repthatdb
Replicate all but the following databases replicate-ignore-db=norepthisdb,norepthatdb OR per line replicate-ignore-db=norepthisdb replicate-ignore-db=norepthatdb
Replication of specific tables replicate-do-table=dbname.tablename
Preventing replication of specific tables replicate-do-ignore=dbname.tablename
Rewrite the database name replicate-rewrite-db=olddbname->newdbname Incrementing the slave bin log position after fixing a replication problem SET SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START;
|




