Mysql 数据库复制设置

来源:互联网 发布:aniplex手办 知乎 编辑:程序博客网 时间:2024/06/15 14:26

       【背景】

            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;(从库)




0 0
原创粉丝点击