背景:目前公司用的天翼云服务器,我在云服务器上安装了一个mysql5.7,服务器申请下来之前用的是公司的实体服务器,现在想把云服务器上的mysql做主数据库,公司实体数据库做从数据库。
参考资料:https://blog.51cto.com/mihuge/1269398
备注说明:这两个服务器用的都是window server 2008 r2,实体服务器用的是花生壳的内网穿透。
ip:云服务器:140.149.12.202(我乱写了一个); 本地实体服务器内网穿透后的路径:2a123445z1.qicp.vip:41023(花生壳自动分配的端口)
一:主数据库配置:
找到my.ini文件,如果找不到,需要查看隐藏文件:
打开文件夹选项:
选中‘显示隐藏的文件、文件夹和驱动器’
配置文件的路径为:C:/programData/MySQL/MySQL/MySQL Server 5.7/my.ini(实在找不到可以在地址栏数据%ProgramData%,然后按回车)
在mysqld节点下面设置:
server-id=1
log-bin=mysql-bin
binlog-do-db=xxxx(这里写你需要同步的数据库的名字)
binlog-ignore-db = mysql(这里写不需要同步的数据库的名字)
保存并重启mysql服务。
创建新用户slave,密码slave,不建议使用root
mysql>grant replication slave,reload,super on *.* to slave@2a123445z1.qicp.vip identified by 'slave';
说明:最后的‘slave’是密码,‘@2a123445z1.qicp.vip’是mysql所在主机的ip,倒数第二个slave是你想创建的用户名
特别说明:因为我这种情况是数据外网访问,所以我又增加了一步,给这个新创建的用户外网访问的权限,这个不会的可以自行百度,后期也会写mysql允许外网访问的博客。
mysql>show master status;
#记录File和Position的数值
二、从数据库配置:
同理找到mysql的配置文件my.ini
#不需要同步的数据库名称,可不写,如果写了就要和Master上配置保持一致
replicate-ignore-db = mysql
保存,重启mysql服务.
登陆数据库
mysql>change master to master_host='140.149.12.202',master_user='slave',master_password='slave',master_log_file='mysql-bin.000002',master_log_pos=855;
mysql> start slave;
mysql> show slave status\G
其中Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 两项都为Yes,说明配置成功.此时改动主库信息,从库会自动同步,可以自己测试下.
这里要注意几点
1.在mysql5.1以上版本中是不支持master设置的,如果添加了master设置,数据库就无法重启了.所以建议主库只需要指定server-id和log-bin即可,这样配置有一个好处就是你在从服务器配置的时候只要添加同步的数据库无需在配置主.
2.一般错误都是都是File和Position的数值不一致.
3.最好在dos下使用命令配置,最好不要使用一些图形的工具,如Navicat之类的工具.
再次感谢:https://blog.51cto.com/mihuge/1269398