mysql双向同步设置及基本原理

1        背景介绍

学校内部有一台服务器(3g服务器),上面部署着uvge网站。在上海有一台服务器(上海服务器)。考虑到校外用户访问uvge网站时速度很慢,先决定在上海服务器上也部署个相同的网站,当外网用户想访问uvge网站时就访问上海服务器上的网站。

现在就需要解决一个问题:如何让校外用户浏览校内用户发表的帖子,校内用户也能浏览校外用户发表的帖子?

解决办法就是采用mysql的双向同步技术

 

2        Mysql单向同步配置步骤

mysql的同步机制是基于日志的同步机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。

前期准备:两台服务器上都已将网站部署好,两台服务器上的数据库也是一模一样。这里的数据库一摸一样是指所需要同步的表的内容一样,两个数据库的版本可以不一样。这里所做的是双向同步,所以两台服务器互为主从关系。

为了方便,上海服务器简称ucwise,学校服务器简称3g。

 

2.1      配置主数据库(ucwise)的my.ini文件

server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称。
binlog-do-db=db_name //记录日志的数据库。
binlog-ignore-db=db_name //不记录日志的数据库。
以上的如果有多个数据库用","分割开。

auto-increment-offset=1 //表中第一条数据的编号(id)。

auto-increment-increment=2 //设置自动增量,向表中没添加一条数据,数据的id自动增2。这样就保证了主数据库中数据的id为1,3,5,7…..的形式。

2.2      为主库设置创建同步用户及赋权

先连接到主库中,

mysql> grant all privileges on *.* to'访问该数据库的用户名'@'可以访问该数据库的ip'identified by '访问该数据库用的密码'。;

mysql>flush privileges; 使生效

2.3      锁定数据库

mysql> flush tables with read lock;

这一步很重要,如果不锁定主数据库,那么其他用户还能对数据库里的数据进行写操作。一旦对主数据库进行了写操作,那么主从数据库里的内容就不一致了,在以后的同步过程中可能会出现错误。

2.4      配置从数据库(3g)的my.ini文件

在从数据库的my.ini文件中找到[mysqld]模块下,并添加一下内容:

server-id = 2

master-connect-retry =60    //从服务器发现主服务器断掉,重连时间差(秒)

replicate-do-db = testdb    //同步数据库:多个写多行

auto_increment_offset = 2 //表中第一条数据的id号

auto_increment_increment = 2//向表中每添加一条数据,id好自动增2.这就保证了该表中数据的id格式为:2,4,6,8….

这样主从库同步时就不会出现id号冲突了。

配置完毕保存后,增加了master.info与relay-log.info等文件。
停止MYSQL服务,删除data目录下除数据库外的所有文件, master.info和relay-log.info两文件必须删除。
注意:master修改my.ini时,master.info和relay-log.info必须删除重启服务。

2.5      查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值