我主要体验了下几个关于REPLICATION的工具。 其他的可以参见手册。
先说下我的环境:
MASTER: 192.168.1.131
SLAVE: 192.168.1.132, 192.168.1.133
三台DB都有对外的ALL权限用户。
各个配置文件如下,
[root@mysql56-master home]# cat /etc/my.cnf[mysqld]user = yttskip-name-resolveinnodb_buffer_pool_size = 128Mbasedir = /usr/local/mysqldatadir = /usr/local/mysql/dataport = 3306server_id = 131socket = /tmp/mysql.sockexplicit_defaults_for_timestamplog-bin=mysql56-master-binbinlog-ignore-db=mysqlgtid-mode=onenforce-gtid-consistencylog-slave-updatesbinlog-format=ROWsync-master-info=1report-host=192.168.1.131report-port=3306master_info_repository=tablerelay_log_info_repository=table
其他两台SERVER,除了SERVER-ID,都基本相同,我就不贴了。
1. MYSQLREPLICATE 搭建主从的脚本,这里我搭建了两台从机。
mysqlreplicate --master=root:root@192.168.1.131:3306 --slave=root:root@192.168.1.132:3306;...[root@mysql56-master home]# ./replicate_create# master on 192.168.1.131: ... connected.# slave on 192.168.1.132: ... connected.# Checking for binary logging on master...# Setting up replication...# ...done.# master on 192.168.1.131: ... connected.# slave on 192.168.1.133: ... connected.# Checking for binary logging on master...# Setting up replication...# ...done.
2. mysqlrplcheck 检查主从的运行情况。
[root@mysql56-master home]# mysqlrplcheck --master=root:root@192.168.1.131:3306 --slave=root:root@192.168.1.132:3306 -s# master on 192.168.1.131: ... connected.# slave on 192.168.1.132: ... connected.Test Description Status---------------------------------------------------------------------------Checking for binary logging on master [pass]Are there binlog exceptions? [WARN]+---------+--------+------------+| server | do_db | ignore_db |+---------+--------+------------+| master | | mysql || slave | | mysql |+---------+--------+------------+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]## Slave status:# Slave_IO_State : Waiting for master to send event Master_Host : 192.168.1.131 Master_User : rpl Master_Port : 3306 Connect_Retry : 60 Master_Log_File : mysql56-master-bin.000002 Read_Master_Log_Pos : 151 Relay_Log_File : mysql56-slave-relay-bin.000003 Relay_Log_Pos : 379 Relay_Master_Log_File : mysql56-master-bin.000002 Slave_IO_Running : Yes Slave_SQL_Running : Yes Replicate_Do_DB : Replicate_Ignore_DB : mysql Replicate_Do_Table : Replicate_Ignore_Table : Replicate_Wild_Do_Table : Replicate_Wild_Ignore_Table : Last_Errno : 0 Last_Error : Skip_Counter : 0 Exec_Master_Log_Pos : 151 Relay_Log_Space : 819 Until_Condition : None Until_Log_File : Until_Log_Pos : 0 Master_SSL_Allowed : No Master_SSL_CA_File : Master_SSL_CA_Path : Master_SSL_Cert : Master_SSL_Cipher : Master_SSL_Key : Seconds_Behind_Master : 0 Master_SSL_Verify_Server_Cert : No Last_IO_Errno : 0 Last_IO_Error : Last_SQL_Errno : 0 Last_SQL_Error : Replicate_Ignore_Server_Ids : Master_Server_Id : 131 Master_UUID : 4d89ad1d-bc12-11e2-87e9-080027338857 Master_Info_File : mysql.slave_master_info SQL_Delay : 0 SQL_Remaining_Delay : None Slave_SQL_Running_State : Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count : 86400 Master_Bind : Last_IO_Error_Timestamp : Last_SQL_Error_Timestamp : Master_SSL_Crl : Master_SSL_Crlpath : Retrieved_Gtid_Set : Executed_Gtid_Set : Auto_Position : 1# ...done.
3. mysqlrplshow. 显示主从的架构。
[root@mysql56-master home]# mysqlrplshow --master=root:root@192.168.1.131:3306 --discover-slaves-login=root:root -v# master on 192.168.1.131: ... connected.# Finding slaves for master: 192.168.1.131:3306# Replication Topology Graph192.168.1.131:3306 (MASTER) | +--- 192.168.1.132:3306 [IO running: Yes] - (SLAVE) | +--- 192.168.1.133:3306 [IO running: Yes] - (SLAVE)[root@mysql56-master home]#
4. mysqlfailover. 监视主从健康状态。
[root@mysql56-master home]# mysqlfailover --master=root:root@192.168.1.131:3306 --discover-slaves-login=root:root# Discovering slaves for master at 192.168.1.131:3306# Discovering slave at 192.168.1.132:3306# Found slave: 192.168.1.132:3306# Discovering slave at 192.168.1.133:3306# Found slave: 192.168.1.133:3306# Checking privileges.MySQL Replication Failover UtilityFailover Mode = auto Next Interval = Tue May 14 12:27:56 2013Master Information------------------Binary Log File Position Binlog_Do_DB Binlog_Ignore_DB mysql56-master-bin.0 151 mysql GTID Executed SetNoneReplication Health Status+----------------+-------+---------+--------+------------+-------------------------------------------+| host | port | role | state | gtid_mode | health |+----------------+-------+---------+--------+------------+-------------------------------------------+| 192.168.1.131 | 3306 | MASTER | UP | ON | OK || 192.168.1.132 | 3306 | SLAVE | UP | ON | OK || 192.168.1.133 | 3306 | SLAVE | UP | ON | Binary log and Relay log filters differ. |+----------------+-------+---------+--------+------------+-------------------------------------------+Q-quit R-refresh H-health G-GTID Lists U-UUIDs[root@mysql56-master home]#
5. mysqlrpladmin. 对主从进行管理。
停止从机服务:
[root@mysql56-master home]# mysqlrpladmin --master=root:root@192.168.1.131:3306 --slaves=root:root@192.168.1.132:3306,root:root@192.168.1.133:3306 stop# Checking privileges.# Performing STOP on all slaves.# Executing stop on slave 192.168.1.132:3306 Ok# Executing stop on slave 192.168.1.133:3306 Ok# ...done.[root@mysql56-master home]#
开启从机服务:
[root@mysql56-master home]# mysqlrpladmin --master=root:root@192.168.1.131:3306 --slaves=root:root@192.168.1.132:3306,root:root@192.168.1.133:3306 stop# Checking privileges.# Performing STOP on all slaves.# Executing stop on slave 192.168.1.132:3306 Ok# Executing stop on slave 192.168.1.133:3306 Ok# ...done.[root@mysql56-master home]#
选择最好的备机准备以后切换用.
[root@mysql56-master home]# mysqlrpladmin --master=root:root@192.168.1.131:3306 --slaves=root:root@192.168.1.132:3306,root:root@192.168.1.133:3306 elect# Checking privileges.# Electing candidate slave from known slaves.# Best slave found is located on 192.168.1.132:3306.# ...done.[root@mysql56-master home]#
进行主从切换。
[root@mysql56-master home]# mysqlrpladmin --master=root:root@192.168.1.131:3306 --slaves=root:root@192.168.1.132:3306,root:root@192.168.1.133:3306 --new-master=root:root@192.168.1.132:3306 --demote-master switchover # Checking privileges.# Performing switchover from master at 192.168.1.131:3306 to slave at 192.168.1.132:3306.# 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 |+----------------+-------+---------+--------+------------+-----------------------------+| 192.168.1.132 | 3306 | MASTER | UP | ON | OK || 192.168.1.131 | 3306 | SLAVE | UP | ON | OK || 192.168.1.133 | 3306 | SLAVE | UP | ON | OK |+----------------+-------+---------+--------+------------+-----------------------------+# ...done.[root@mysql56-master home]#
显示下新的主从架构:
[root@mysql56-master home]# mysqlrplshow --master=root:root@192.168.1.132:3306 --discover-slaves-login=root:root -v# master on 192.168.1.132: ... connected.# Finding slaves for master: 192.168.1.132:3306# Replication Topology Graph192.168.1.132:3306 (MASTER) | +--- 192.168.1.131:3306 [IO running: Yes] - (SLAVE) | +--- 192.168.1.133:3306 [IO running: Yes] - (SLAVE)[root@mysql56-master home]#