由于资源问题,我是用2台windows系统的机器进行操作的,如果是linux内核环境的话,除了修改的配置文件需要变成my.cnf,其他操作不变。
准备2台机器,master服务器的IP为:192.168.18.228,slave的IP为:192.168.18.218
对master进行配置:
找到my.ini文件进行配置(这里需要注意,修改window下的mysql安装根目录下的my-default.ini文件是不会有效果的,mysql服务启动的时候读取的不是他,所以需要找到mysql服务真正启动的指定文件:通过 控制面板>管理工具>服务 打开
可以看到,是在C:\ProgramData\MySQL\MySQL Server 5.6\my.ini路径)在文件的[mysqld]底下,加入以下配置:server-id=1 # 文件底下有默认的id,注意修改
log-bin=log
binlog-do-db=mstest1 # 监控的数据库,可以配置多条
binlog-do-db=mstest2
binlog-ignore-db=mysql # 忽略的库
加完保存之后,重启数据库服务,windows可以直接通过服务重启,
重启完之后,打开mysql客户端,输入:SHOW MASTER STATUS;(不要忘记分号)查看主库开启状态,如果显示如下,则说明主库配置成功,否则请检查my.ini文件中的配置,看看是否在下面有参数被重复配置了。
对slave进行配置:
以同样的方式,找到slave的my.ini,打开文件之后,在[mysqld]配置如下参数:server-id=2
replicate-do-db=mstest
replicate-ignore-db=mysql
这里要注意下,在文件下方,文件自己默认配置了一个server-id=1,会导致我们自己的配置无效,最后报主从server_ids一致的错,所以得把下面的id进行注销:
然后重启slave的mysql服务,打开mysql客户端,暂停slave:stop slave;,然后输入:change master to master_host='192.168.18.228',master_port=3306,master_user='root',master_password='123456', master_log_file='master-bin.000001',master_log_pos=0;(注意是一行命令,不要把回车符都复制了),解释下几个参数:master_log_file是上面配置master之后,输入SHOW MASTER STATUS; 命令后,得到的File内容;master_log_pos从监控日志的0行开始监控;其他几个参数看字面意思应该就能理解。输入完成,并得到ok反馈之后,输入:start slave; 启动slave服务。最后输入:show slave status\G,查看slave的连接状态:
其中包括了一些主机连接的信息,主要看Slave_IO_Running和Slave_SQL_Running是否为Yes状态,否则的话,就需要查看mysql的错误日志,一般的路劲在:C:\ProgramData\MySQL\MySQL Server 5.6\data\日志名称.err,日志名称是配置在my.ini中的:,默认是机器名。日志记录很详细,一般能解决80%以上的问题,下面是我当时配置时,没有发现slave配置文件的server-id下面有默认配置导致的,可以用:show variables like 'server_id'; 命令查询server_id
完成上面所有配置之后,就可以开始同步测试了,因为上面我们配置的监控库是mstest,所以在主库新建mstest,然后再新建一个test表,再往里面写点数据,完成后,打开slave的mysql,看mstest库是否已经新建了,表是否也存在了,数据是否同步了(注意下,主库在新建库的时候,得保证slave里面没有对应的库,否则会报库已存在不能新建的错误)