今天给大家介绍一下window系统下mysql如何实现主从同步操作,首先得需要安装两台mysql服务器,我在这里浪费了相当多的时间
因为刚开始我想着是在window系统下面安装两个版本不同的mysql数据库,然后改端口就可以实现了。可是一直只能启动一个mysql服务,另一个一直启动不了,所以到最后就不了了之了。
后来想着在阿里云上面新建一个mysql服务器,本地新建一个服务器,然后通过这两个进行主从同步操作,可是也遇到很多问题。本地访问阿里云上面是可以的,阿里云上面访问本地就不行。因为外网想要访问本地局域网需要一些工具才可以,这些工具很多都是收费的,所以最后没有选择这个方案。
我最后实施的方案是在同一台电脑上面安装虚拟机,在虚拟机上面安装另外的mysql数据库。最后才实现两台数据库的功能。之所以跟大家讲这些过程挫折。。。。是希望大家少走一些弯路或者多一些考虑。
首先说明一下:这种主从同步都是通过mysql数据库本身的机制实现的,完全不需要我们写任何代码来维护这种同步关系。所以本质就是配置一些信息让mysql启动这种主从同步功能。下面看具体操作步骤:
一:安装两台mysql数据库服务器,一台是在本机上面作为
Master数据库,另一台是在虚拟机上面是作为Slave从数据库。本机的端口号是:3306 ip地址是:192.168.88.22
二:.配置主从数据库服务器:MASTER主数据库 ,SLAVE从数据库 具体的配置过程如下:
MASTER主数据库配置(
windows):
(1)在Master MySQL上创建一个用户‘wolzq’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
首先在mysql命令控制台上面创建wolzq用户,具体的sql为:create user wolzq
为这个用户赋予相应的权限,这里我赋值的是最大的权限。也就是该用户可以从任何的ip地址登陆访问数据库,可以操作所有的数据库表。具体的sql为: GRANT ALL PRIVILEGES ON *.* TO wolzq@'%' IDENTIFIED BY '220316'; FLUSH PRIVILEGES;
这里需要注意的几点是:
1.FLUSH PRIVILEGES;这个命令必须填写,否则上面设置的用户权限失效。
2.ip地址是可以设置范围的。例如:
GRANT REPLICATION SLAVE ON *.* TO
'wolzq'
@
'192.168.0.%'
IDENTIFIED BY
'220316'
;
3.操作的数据库也是可以指定的。
4.用户的权限也是可以设置的。具体的命令大家可以自己去学习,我这里就不多说了。
如果不设置用户权限的话,本地可以连接的上mysql服务器,局域网或者外网是连接不上,会显示连接被拒绝或者用户没有这个权限。除此之外权限还可以精确到某个数据库,连接者的IP地址区间,设置是某个数据的操作问题等等都可以进行设置。我这边设置的是wolzq这个用户具备所有用户数据库的权限,所有的ip地址都可以通过
Master这个用户来连接主数据库。
(2)找到MySQL安装文件夹修改my.ini文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。
#开启主从复制,主库的配置
log-bin= mysql3306-bin
#指定主库serverid
server-id=101
#指定同步的数据库,如果不指定则同步全部数据库
#binlog-do-db=(数据库名称)
这里需要注意的几点是:
my.ini文件说明一下:
server-id=101这个ID值需要是唯一的,
binlog-do-db=mybatis_1128这个是表示同步的数据库,如果不指定则同步全部数据库
我刚开始的时候指定了这个数据库,然后新建数据库发现一直没有同步成功,找了半天才发现是因为这个配置的存在导致新建数据库没有同步到其他的
Slave数据库里面去。所以这里也是需要注意的。
(3)查看日志
mysql> SHOW MASTER STATUS;
重启MySQL服务(到这里Master主数据库就配置完毕了)
SLAVE从数据库配置(
windows):
(1)找到MySQL安装文件夹修改my.ini文件,在文件的最下面增加下面几行代码
#指定serverid,只要不重复即可,从库也只有这一个配置,其他都在SQL语句中操作
server-id=102
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重启MySQL服务
(2)连接Master
change master to
master_host='192.168.88.22', //Master 服务器Ip地址,也就是上面写的192.168.88.22
master_port=3306,//Master 端口号
master_user='wolzq',//Master 用户名
master_password='220316', //用户密码
master_log_file='master-bin.000003,//Master服务器产生的日志要和Master服务器所配置的相互对应如下如所示的file对应
master_log_pos=0;//要和Master服务器所配置的相互对应如下如所示的Position对应(经过测试发现如果是一样的只能同步一次,所以这里修正成0,0是可以每次都同步成功的)
(3)启动Slave
start slave;
(4) 查看配置是否成功
如果显示yes就说明配置成功了,已经可以实现主从同步了。
OK所有配置都完成了,这时候大家可以在Master Mysql 中进行测试了,因为我们监视的时Master mysql 所有操作日志,所以,你的任何改变主服务器数据库的操作,都会同步到从服务器上。创建个数据库,表试试吧。。。
实验结果:
Mstaer数据库配置:
SLAVE数据库配置:
主从同步结果:
参考文献:
http://www.cnblogs.com/rwxwsblog/p/4542417.html
http://www.cnblogs.com/yuejin/archive/2013/11/12/3419467.html
http://www.cnblogs.com/alvin_xp/p/4162249.html
如果对上面的内容还有什么疑义或者问题都可以加我QQ:208017534咨询。