>  기사  >  데이터 베이스  >  MySQL数据库处于主流操作系统下的同步实际操作流程

MySQL数据库处于主流操作系统下的同步实际操作流程

WBOY
WBOY원래의
2016-06-07 16:14:091123검색

我们大家都知道当MySQL数据库的相关数据量读写较为频繁的时候,我们就主要考虑把MySQL数据库的实际读写分开,用这种方法来提高数据库的使用效率,(当然还有其他用处比如,备份数据),这个时候我们就要用到MySQL的一个功能,数据库同步。 当数据库的数据量读

我们大家都知道当MySQL数据库的相关数据量读写较为频繁的时候,我们就主要考虑把MySQL数据库的实际读写分开,用这种方法来提高数据库的使用效率,(当然还有其他用处比如,备份数据),这个时候我们就要用到MySQL的一个功能,数据库同步。

当数据库的数据量读写频繁的时候,我们就要考虑把MySQL数据库的读写分开,以提高数据库的使用效率,(当然还有其他用处比如,备份数据),这个时候我们就要用到MySQL的一个功能,数据库同步。下面就具体讲一下实现方法

一、系统环境

主数据库(master):

系统:Windows

数据库:MySQL 5.0.51

IP:192.168.1.156

从数据库(slave):

系统:Linux

MySQL数据库:MySQL 5.0.67

IP:192.168.1.154

二、配置参数:

发现网上说,两个数据库的配置必须一致,还把两个配置文件对拷。看起来挺有道理,因为怕部分功能不一致,也有可能导致同步错误。但是我的两个MySQL的所在系统都不一样,所以就按照默认的安装配置了。

数据库准备:

要同步的数据库叫 account

那就必须把主服务器上的account和数据完整的导一份 到slave服务器上

且在主服务器上开一个帐户,允许从服务器访问。

主MySQL数据库(master)配置:

修改MySQL 的配置文件my.cnf,

找到 server-id 这一行,更改如下

server-id = 1

且增加两行必要信息:

log-bin = d:/log-bin.log #二进制变更日值的存放位置

binlog-do-db = account #要同步的数据库

解释下:Slave上MySQL的Replication工作有两个线程,I/O thread和SQL thread,I/O 的作用是从master 3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本MySQL所能理解的东西,于是同步就这样一步一步的完成.

master数据库的修改仅此一步就OK了

从数据库(slave)配置:

修改 MySQL 下的my.cnf

找到 server-id 这一行,更改如下

server-id = 2 

从MySQL数据库

<ol class="dp-xml">
<li class="alt"><span><span>master-host = 192.168.1.156   </span></span></li>
<li><span>master-user = lzy   </span></li>
<li class="alt"><span>master-password = lzy   </span></li>
<li><span>master-port = 3306   </span></li>
<li class="alt"><span>replicate-do-db = account  </span></li>
</ol>

要同步的数据库

最后,把两个MySQL都重启动一下。

1、看看刚才设置的日志路径下有没有日志生成。

2、在156上添加一条数据,看看从MySQL数据库有没增加。如果没有,看看slave数据库的错误日志,根据错误信息具体调试下。

配置好同步后,我发觉log-bin的日志位置不好,想换一个地方,于是改到其他盘去了。重启MySQL后发现同步不能用了。超级郁闷。于是去看了下MySQL的错误日志,

<ol class="dp-xml"><li class="alt"><span><span>“count not find first log file name in binary log in…” </span></span></li></ol>

找了半天没找到原因,忽然发现错误日志的同目录下有个master.info文件,应该是记录从主服务器取数据的记录吧。打开看了看是的

<ol class="dp-xml">
<li class="alt"><span><span>14   </span></span></li>
<li><span>log-bin.000003   </span></li>
<li class="alt"><span>337   </span></li>
<li><span>192.168.1.156   </span></li>
<li class="alt"><span>lzy   </span></li>
<li><span>lzy   </span></li>
<li class="alt"><span>3306   </span></li>
<li><span>60   </span></li>
<li class="alt"><span>0  </span></li>
</ol>

我把这个文件删除了,重启动MySQL。OK了数据同步过来了。


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.