2015年7月1日-------------------
1、mha修复宕机的机器
首先cat /var/log/manager.log|grep -i all other slaves should start确定change master命令,把宕掉的数据库给启动,登陆进去后,slave status为空,使用change master命令设置应用的主节点,启动slave进程
然后设置read_only=1,最后检查复制环境,必须启动mha manager的监控(ps aux|grep perl)并查看状态,删除app1.failover.complete,并把# mysql -e set global relay_log_purge=0
2、主从复制中,使用alter event把事件enable,不会影响从库的事件状态slaveside_disabled,进行切换后,现在的主库事件状态slaveside_disabled,需要手动进行enable,可以使用如下方式:
select concat('alter event ',event_schema,'.',event_name,' disable;') from information_schema.events;
2015年7月2日------------------
表结构:
create table `question_2` (`qid` int(11) not null default '0',`questionid` varchar(50) not null comment '只做数据冗余,不做查询条件,不添加索引',`userid` int(11) default null,`questiontitle` varchar(500) not null,`age` int(11) not null,`month` int(11) not null,`catalogid` int(11) not null,`sex` int(11) not null,`questiondesc` longtext not null,`questiontag` varchar(400) default null,`score` int(11) default null,`anonym` int(11) default '0',`commentcount` int(11) not null default '0',`source` int(11) default null,`isautoadd` int(11) default '0',`questionstatus` int(11) default null,`operatestatus` int(11) default '0',`operatetime` datetime default null,`createtime` datetime not null default current_timestamp comment '展示时间',`updatetime` datetime not null default current_timestamp,primary key (`qid`),key `idx_2_uid_ctime_qstatus` (`userid`,`createtime`,`questionstatus`,`operatestatus`),key `idx_2_qstatus_opstatus_sc_so` (`questionstatus`,`operatestatus`,`age`,`score`,`source`),key `idx_2_ctime_qstatus_opstatus` (`createtime`,`questionstatus`,`operatestatus`,`catalogid`,`age`)) engine=innodb default charset=utf8;select count(*) from question_2;-- 4086112explain select * from `question_2` where `questionstatus` >= 0 and `operatestatus` =2 and `age` in ('1','2') order by qid desc limit 60000,20;explain select qid from `question_2` where `questionstatus` >= 0 and `operatestatus` =2 and `age` in ('1','2') order by qid desc limit 60000,20;select count(*) from `question_2` where `questionstatus` >= 0;-- 4064825/4086112select count(*) from `question_2` where `questionstatus` >= 0 and `operatestatus` =2;-- 3649271/4086112---------------优化后的sqlexplain select * from question_2 inner join(select qid from `question_2` where `questionstatus` >= 0 and `operatestatus` =2 and `age` in ('1','2') order by qid desc limit 60000,20) a using (qid);