Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL主从同步设置中主服务器二进制日志无法开启

MySQL主从同步设置中主服务器二进制日志无法开启的问题

作者:xzsfg6825

这篇文章主要介绍了MySQL主从同步设置中主服务器二进制日志无法开启的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

最近正在学习使用MySQL数据库,欲实现数据库数据的同步,在设置主服务器和从服务器的过程中出现很多问题。

看了网上很多教程,发现大多教程里面有一个问题,也不知道是我的数据库版本导致的问题还是使用mysql5.6的人都有这个问题。

以下是我的操作:

1、操作条件配置

主服务器:

(1)系统:windows 7

(2)数据库:mysql 5.6

从服务器(虚拟机):

(1)windows 7

(2)数据库:mysql 5.6

2、具体操作(如果有navicat会很简单)

(1)在主服务器上建立需同步的数据库

create database test; 

(2)在该数据库下建立两张表:

CREATE TABLE `backup_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 NOT NULL,
  `sex` varchar(2) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
CREATE TABLE `user` (
  `User_ID` int(50) NOT NULL,
  `User_Name` char(100) DEFAULT NULL,
  PRIMARY KEY (`User_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(3)在从服务器上建立相同的数据库和表;

(4)由于同步是基于日志的,所以要确保主服务器二进制日志已开启。

在主服务器mysql执行查询:show variables like '%log_bin%'; 可以看到log-bin是关闭的

(5)问题就出在这一步,大多数教程都是提示“在主服务器上mysql安装目录下有个配置文件my.ini,在[mysqld]下更改log-bin=mysql-bin”,但我的mysql5.6的安装根目录下只有my-default.ini,于是我误以为就是在这个文件里面更改,但是更改之后,无论如何重启服务,查询log-bin始终是OFF,于是在找了很多教程之后,发现了mysql的另一个数据存储的路径,我尝试的找到了mysql的另一个保存数据的目录C:\ProgramData\MySQL,找到了my.ini,于是在这个文件里进行了更改:

(6)修改之后,重启服务器,在进行查询show variables like '%log_bin%'; 终于解决了这个烦了我一天的问题:

(7)同理,从服务器的server-id设置成2,且同样要在目录 C:\ProgramData\MySQL中找到my.ini文件打开进行设置 (ProgramData文件夹可能是隐藏的,直接输入地址栏就能找到),后面的设置可直接写在server-id后面,同样是在该目录下的my.ini中

replicate-do-db=test                                         #要同步的数据库
replicate-do-table=test.bakeup_table           #要同步的表,改成自己的数据库和表

replicate-do-table=test.user                            #要同步的第二个表

(8)然后在主服务器数据库上创建一个用于同步数据的用户,使用navicat很简单,用户名和密码自行设置,主机设置成%,然后执行grant replication slave on *.* to 'testuser'@'%';

(9)设置好后,在navicat的命令行中执行 show master status;显示出正确结果,终于那个之前一直是 “ empty set ” 的问题解决了,至此主机上的都设置好了。

3、从数据库中的设置

(1)配置寻找主服务器如下图,然后启动从服务器,输入start slave;即可

CHANGE MASTER TO
MASTER_HOST='主服务器ip',
MASTER_USER='testuser',              #新建的用户
MASTER_PASSWORD='yanwei',     #我的用户密码
MASTER_LOG_FILE='mysql-bin.000002',             #上图查询出的同步文件
MASTER_LOG_POS=120;                             #上图查询出的同步点(即:position下的值) 

(2)检查配置结果,在从服务器上输入:show slave status;可以看到从服务器的状态,已经开始准备接受数据了。

至此,主从复制的所有设置都已设置完成。接下来就是测试数据的同步效果了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文