mysql的复制设置详解

 

原文链接:http://www.javaarch.net/jiagoushi/870.htm

 

 

mysql的复制设置详解

在mysql的master/slave架构中,需要使用replication机制将master的数据复制到slave中,或者在读写分离情况下,需要把写节点的数据复制到读节点中。

1.安装mysql

从mysql官网http://dev.mysql.com/下载mysql,然后在master和slave机器上分别都安装上mysql;

2.修改master机器上的my.cnf mysql的配置,在[mysqld]区域添加下面的配置,使用binlog日志同步

	server-id=1
	log-bin=sqlserverbin.log
	
3.在master机器上创建一个作为replication的用户

	mysql> CREATE USER 'replicator'@'10.1.1.15';
	mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'10.1.1.15' IDENTIFIED BY 'replicatorpassword';
	mysql> FLUSH PRIVILEGES;
	
4.修改slave机器的my.cnf配置文件,在[mysqld]部分增加下面的配置,这里的serverid跟master必须不一样,都得唯一,如果有多台slave机器,这里每台slave机器也得不一样

	server-id=2
	relay-log-index=relay-bin.index
	relay-log=relay-bin
	
5.重启master和slave的mysql服务,在slave端执行下面命令

	mysql> CHANGE MASTER TO MASTER_HOST='10.1.1.14',
	 -> MASTER_USER='replicator',
	 -> MASTER_PASSWORD='replicatorpassword',
	 -> MASTER_LOG_FILE='',
	 -> MASTER_LOG_POS=4;
	 
如果线上已经数据库中已经有数据,那么可以通过下面的方法来同步已有数据

1.对my.cnf的配置类似上面的步骤
2. 重启两边服务之后,在master端执行

	mysql> GRANT ALL ON *.* TO 'root'@'10.1.1.15';
	mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'10.1.1.15' IDENTIFIED BY 'replicatorpassword';
	mysql> FLUSH PRIVILEGES
	
3.在slave端执行

	mysql -u root-p rootpw -h 10.1.1.14 -e "FLUSH TABLES WITH READ LOCK;SHOW MASTER STATUS" > mastertemp.txt;
	mysqldump -u root -p rootpw -h 10.1.1.14 -A --single-transaction | mysql -u root -p rootpw
	mysql -u root -p rootpw  -h 10.1.1.14 -e "UNLOCK TABLES";
	
这里是通过从master端导出表数据导本地,然后将本地数据再倒入到本地数据库中,通过加读锁实现。

4.最后再slave端执行

	mysql> CHANGE MASTER TO MASTER_HOST='10.1.1.14', 'MASTER_PORT=3306, MASTER_USER='replicator', MASTER_PASSWORD='replicatorpassword', MASTER_LOG_FILE='log_file_you_took_from_text_file', MASTER_LOG_POS='number_you_took_from_text_file';
	START SLAVE;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值