You obviously need Python on your server (python-2.6.6-37.el6_4.x86_64 in mycase) and the Python MySQL library (mysql-connector-python-1.0.8-1.el6.noarch)
Master:db01
Slave: db02
[root@db01 software]# rpm -ivh mysql-connector-python-1.0.12-1.el6.noarch.rpm
Preparing... ########################################### [100%]
1:mysql-connector-python ########################################### [100%]
[root@db01 software]#
[root@db01 software]# rpm -qa python mysql-connector-python
python-2.6.6-37.el6_4.x86_64
mysql-connector-python-1.0.12-1.el6.noarch
installation MySQL Utilities
[root@db01 software]# tar zxvf mysql-utilities-1.3.5.tar.gz
[root@db01 software]# cd mysql-utilities-1.3.5
[root@db01 mysql-utilities-1.3.5]# python setup.py build
[root@db01 mysql-utilities-1.3.5]# python setup.py install
Configuration replication
[root@db01 ~]# mysqlreplicate --master=root:idontcare@db01:30306 --slave=root:idontcare@db02:30306 --rpl-user=rep:rep
# master on db01: ... connected.
# slave on db02: ... connected.
# Checking for binary logging on master...
# Setting up replication...
# ...done.
[root@db01 ~]#
Checks replication prerequisites
[root@db01 ~]# mysqlrplcheck --master=root:idontcare@db01:30306 --slave=root:idontcare@db02:30306
# master on db01: ... connected.
# slave on db02: ... connected.
Test Description Status
---------------------------------------------------------------------------
Checking for binary logging on master [pass]
Are there binlog exceptions? [pass]
Replication user exists? [pass]
Checking server_id values [pass]
Checking server_uuid values [pass]
Is slave connected to master? [pass]
Check master information file [pass]
Checking InnoDB compatibility [pass]
Checking storage engines compatibility [pass]
Checking lower_case_table_names settings [pass]
Checking slave delay (seconds behind master) [pass]
# ...done.
Display replication topology
[root@db01 ~]# mysqlrplshow --master=root:idontcare@db01:30306 --discover-slaves-login=root:idontcare -v
# master on db01: ... connected.
# Finding slaves for master: db01:30306
# Replication Topology Graph
db01:30306 (MASTER)
|
+--- db02:30306 [IO: Yes, SQL: Yes] - (SLAVE)
[root@db01 ~]#
Display replication health of the topology
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db01:30306 --slaves=root:idontcare@db02:30306 health
# Checking privileges.
#
# Replication Topology Health:
+-------+--------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+-------+--------+---------+--------+------------+---------+
| db01 | 30306 | MASTER | UP | ON | OK |
| db02 | 30306 | SLAVE | UP | ON | OK |
+-------+--------+---------+--------+------------+---------+
# ...done.
Stop Slave
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db01:30306 --slaves=root:idontcare@db02:30306 stop
# Checking privileges.
# Performing STOP on all slaves.
# Executing stop on slave db02:30306 Ok
# ...done.
Start Slave
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db01:30306 --slaves=root:idontcare@db02:30306 start
# Checking privileges.
# Performing START on all slaves.
# Executing start on slave db02:30306 Ok
# ...done.
Interactive health monitoring and failover
[root@db01 ~]# mysqlfailover --master=root:idontcare@db01:30306 --discover-slaves-login=root:idontcare --rediscover
# Discovering slaves for master at db01:30306
# Discovering slave at db02:30306
# Found slave: db02:30306
# Checking privileges.
# Discovering slaves for master at db01:30306
MySQL Replication Failover Utility
Failover Mode = auto Next Interval = Wed Nov 6 16:25:07 2013
Master Information
------------------
Binary Log File Position Binlog_Do_DB Binlog_Ignore_DB
binlog-master.000006 231
GTID Executed Set
25d63f15-46b8-11e3-9002-080027e2e935:1-3 [...]
Replication Health Status
+-------+--------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+-------+--------+---------+--------+------------+---------+
| db01 | 30306 | MASTER | UP | ON | OK |
| db02 | 30306 | SLAVE | UP | ON | OK |
+-------+--------+---------+--------+------------+---------+
Switchover select
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db01:30306 --slaves=root:idontcare@db02:30306 elect
# Checking privileges.
# Electing candidate slave from known slaves.
# Best slave found is located on db02:30306.
# ...done.
To perform a switchover
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db01:30306 --slaves=root:idontcare@db02:30306 --new-master=root:idontcare@db02:30306 --demote-master switchover
# Checking privileges.
# Performing switchover from master at db01:30306 to slave at db02:30306.
# Checking candidate slave prerequisites.
# Checking slaves configuration to master.
# Waiting for slaves to catch up to old master.
# Stopping slaves.
# Performing STOP on all slaves.
# Demoting old master to be a slave to the new master.
# Switching slaves to new master.
# Starting all slaves.
# Performing START on all slaves.
# Checking slaves for errors.
# Switchover complete.
#
# Replication Topology Health:
+-------+--------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+-------+--------+---------+--------+------------+---------+
| db02 | 30306 | MASTER | UP | ON | OK |
| db01 | 30306 | SLAVE | UP | ON | OK |
+-------+--------+---------+--------+------------+---------+
# ...done.
Review display replication topology
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db02:30306 --slaves=root:idontcare@db01:30306 health
# Checking privileges.
#
# Replication Topology Health:
+-------+--------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+-------+--------+---------+--------+------------+---------+
| db02 | 30306 | MASTER | UP | ON | OK |
| db01 | 30306 | SLAVE | UP | ON | OK |
+-------+--------+---------+--------+------------+---------+
# ...done.
[root@db01 ~]# mysqlrplshow --master=root:idontcare@db02:30306 --discover-slaves-login=root:idontcare -v
# master on db02: ... connected.
# Finding slaves for master: db02:30306
# Replication Topology Graph
db02:30306 (MASTER)
|
+--- db01:30306 [IO: Yes, SQL: Yes] - (SLAVE)
To perform a switchover to be back to initial configuration use
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db02:30306 --slaves=root:idontcare@db01:30306 --new-master=root:idontcare@db01:30306 --demote-master switchover
# Checking privileges.
# Performing switchover from master at db02:30306 to slave at db01:30306.
# Checking candidate slave prerequisites.
# Checking slaves configuration to master.
# Waiting for slaves to catch up to old master.
# Stopping slaves.
# Performing STOP on all slaves.
# Demoting old master to be a slave to the new master.
# Switching slaves to new master.
# Starting all slaves.
# Performing START on all slaves.
# Checking slaves for errors.
# Switchover complete.
#
# Replication Topology Health:
+-------+--------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+-------+--------+---------+--------+------------+---------+
| db01 | 30306 | MASTER | UP | ON | OK |
| db02 | 30306 | SLAVE | UP | ON | OK |
+-------+--------+---------+--------+------------+---------+
# ...done.
[root@db01 ~]# mysqlrplshow --master=root:idontcare@db01:30306 --discover-slaves-login=root:idontcare -v
# master on db01: ... connected.
# Finding slaves for master: db01:30306
# Replication Topology Graph
db01:30306 (MASTER)
|
+--- db02:30306 [IO: Yes, SQL: Yes] - (SLAVE)
[root@db01 ~]#
[root@db01 ~]#
[root@db01 ~]# mysqlrpladmin --master=root:idontcare@db01:30306 --slaves=root:idontcare@db02:30306 health
# Checking privileges.
#
# Replication Topology Health:
+-------+--------+---------+--------+------------+---------+
| host | port | role | state | gtid_mode | health |
+-------+--------+---------+--------+------------+---------+
| db01 | 30306 | MASTER | UP | ON | OK |
| db02 | 30306 | SLAVE | UP | ON | OK |
+-------+--------+---------+--------+------------+---------+
# ...done.
Note:
The Master-Slave switchover can only be used in MySQL5.6 version.
You need add parameters:
gtid_mode=on
log_slave_updates=on
enforce_gtid_consistency=on
report_host=hostname
master-info-repository=TABLE
relay-log-info-repository=TABLE