天天看点

centos6下mysql的主从复制的配置常见错误和solution

2015年9月17日 23:00:36 update

想要好好了解mysql复制,还是去看看《高性能MySQL》(第三版)好了,上面说的比较详细。

===========

在本地用virtualbox安装了两台centos6.7服务器,配置了主从复制。两个服务器都配置了第二块网卡(host-only),master的ip为192.168.56.102

slave的ip为192.168.56.103

centos-6.7-minimal.iso

默认不能上网!因为没开启eth0

我就没见这东西好用过!

接下来,从数据库中导出数据,然后传送给slave服务器,并在slave服务器中导入sql文件。

为了确保没有数据库插入或者修改操作,要设定lock:

重启mysql

注意 master导出的文件可能只是一个数据库的(本例),因此可能sql文件中头部缺少两句:

那么需要slave登陆mysql后手动输入这两句,以指定数据库名。

此处,<code>master_user</code>用户是master上创建的用户,<code>master_password</code>和前面master中的配置的要保持一致;<code>master_log_file</code>的值要和master中查询到的<code>master status</code>结果中的<code>File</code>保持一致,<code>master_log_pos</code>则和<code>Position</code>字段保持一致。

无语了。slave的<code>Slave_IO_Running</code>项一直显示<code>NO</code>

发现是防火墙iptable在作怪。master和slave都关掉好了:

然后重启动mysql服务,终于好了。

===

因为同步出错了。

在slave上执行:

然而,counter设置为1也还是很不靠谱的。

有时候因为mysql发生了回滚操作,因此要避开的insert失败(错误代码1062)项,有非常多。

这时候不妨在my.cnf(windows下是my.ini)中进行配置:

然后重启mysql服务,再看看mysql主从复制的结果。等复制好了,再把上面这条skip的配置项去掉。毕竟一直skip感觉很不安全啊。。