【背景】
1. 最近,维护的环境,因为现网数据量越来越大,另外除现网的report业务外,MOC team也在查询同一份数据用于进一步分析。这样,一旦两种的查询压力叠加在一起就会导致mysql数据压力过大,进而影响业务
2. 手头上现有一套升级淘汰下来的DB sever
【方案】
为了解决现网DB压力过大的问题,决定将MOC team的查询压力从现网迁移到read only DB sever(淘汰DB sever,下面简称RODB)。另外,Moc team 只对新产生的数据感兴趣(一些比较小的用户表,设备表除外)。
因此,只要将现网的新产生的数据利用Msyql的复制特性来实时同步到read only DB sever即可。
【复制原理】
下面截图从《高性能mysql》中截取
【操作步骤】
1. 将RODB上所有的数据truncate掉,optimize tables 来释放磁盘容量
2. 从现网DB中,将Moc需要的一些历史表记录手工同步到RODB(通过SQLyog客户端,导出导入csv文件特性来完成)
3. 修改DB操作
主库(现网DB)
建账号:供从库连接到主库使用
GRANT REPLICATION SLAVE , REPLICATION CLIENT ON *.*
TO repl@'10.80.68.%' IDENTIFIED BY 'P4ssW0rdrep';
编辑my.cnf (添加)
#vi /etc/my.cnf
log-bin=/DB/binlog/inc
server_id=14
注:sever_id要全网唯一,不同冲突,可以用数据ip地址的最后几位
从库(RODB)
在DB所在目录下建relaylog目录
#mkdir relaylog
#chown mysql.mysql relaylog/
编辑my.cnf (添加)
cp /etc/my.cnf /etc/my.cnf.20140505.bak
#vi /etc/my.cnf
log-bin=/DB/binlog/inc
server_id=34
relay_log=/DB/relaylog/mysql-relay-bin
log_slave_update=1
read_only=1
从库SQL操作
STOP SLAVE;
RESET SLAVE ;
CHANGE MASTER TO MASTER_HOST='10.80.68.14',
MASTER_USER='repl',
MASTER_PASSWORD='P4ssW0rdrep',
MASTER_LOG_FILE='inc.004691',
MASTER_LOG_POS=0;
START SLAVE;
复制状态查看
SHOW MASTER STATUS; (主库)
SHOW SLAVE STATUS;(从库)