一.环境
主机一中有3个mysql实例,Amaster,Bmaster,Cslave
主机二中有1个mysql实例,Dslave
主:Amaster
从:Bmaster、Cslave、Dslave
切换为
主:Bmaster
从:Cslave、Dslave
注:切换之前需要考虑的问题:
1.Amaster出现的故障,能不能修复,有没有切换的必要;
2.根据不同的情况不同处理;
二.切换1
1.如果原主库的binlog日志可以访问
1)先将所有从库sql_thread追平io_thread;
stop slave ;start slave sql_thread;
2) 确定位置
Master_Log_File: masterbinlog.000002
Read_Master_Log_Pos: 496
3)mysqlbinlog -v --base64-output=decode --start-pos= 496 masterbinlog.000002 > upall.sql
mysqlbinlog -v --base64-output=decode masterbinlog.000003>>upall.sql
.....
4) upall.sql更新到从库(需要有supper的权限)
5)确保所有从库上的数据是一样;
2.新主库调整
1)reset slave all;
2)binlog相关的参数
log_bin(静态)=1 binlog_format sync_binlog
3) set global read_only=0;
4) grant replication slave on *.* repluser@'192.168.10.%' identified by 'replpass';
5)是否需要该port;(静态参数需要重启)
3.在所有从服务器上reset slave all;change master to ...
二.切换2
1.如果原先的主库的binlog日志不可以访问;
1)选择获取master日志最多(非应用日志最多的)的成为新的master数据库
stop slave sql_thread;(如果判断不清,停止所有从库的sql_thread)
2) 确定从库统一应用日志点(最好是所有的从库都能应用到那一点);
Relay_Master_Log_File: masterbinlog.000005
Exec_Master_Log_Pos: 2096
2.新master开启binlog日志
log_bin(静态)=1 binlog_format log_slave_updates=1(静态参数)
启动mysql实例时,--skip-slave-start
1)set global read_only=0;
2)grant replication slave on *.* repluser@'192.168.10.%' identified by 'replpass';
3)在新master上show master status确定位置,然后start slave sql_thread;
3.在新从库上执行reset mastar all;change master to ...
1) 新master上执行完所有relay_log后,reset master all;
2)是否更改端口;
注:如果库小的话,直接在新master中使用mysqldump重新构建从库,如果可以关库的话可以直接从新master直接copy构造从库;
注:从库变为主库还有很多影响性能的参数需要调整:
innodb_flush_log_at_trx_commit
sync_binlog
sync_master_info
sync_relay_log
sync_relay_log_info
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29620572/viewspace-1871960/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29620572/viewspace-1871960/