简明现代魔法 -> 数据库技术 -> MySQL 数据库同步
MySQL 数据库同步
2010-01-15
MySQL 的数据同步,在 MySQL 官方网站文档上,叫 Replication 字面是重作的意思,意译就是同步了。其实,MySQL 的同步,并不是使用同步 sync 这个单词而是用重作 replication,很准确表明了 MySQL 数据库操作的实质,是作同样的操作,或叫重作同样的操作,以保持主数据库服务器 master 与 从属服务器 slave 之样的数据保持一致。replication 就是有重复,重作的意思。
MySQL 为了实现 replication 必须打开 bin-log 项,也是打开二进制的 MySQL 日志记录选项。
MySQL 的 bin log 二进制日志,可以记录所有影响到数据库表中存储记录内容的 sql 操作,如 insert / update / delete 操作,而不记录 select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日志中记录的日志项,包涵数据库表中所有数据,那么,就可以恢复本地数据库的全部数据了)。 而这个二进制日志,如果用作远程数据库恢复,那就是 replication 了。这就是使用 replication 而不用 sync 的原因。这也是为什么要设置 bin-log = 这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。
下面,我们来讲解最核心的过程:
首先,你应该有两个或两个以上的 MySQL 数据库服务器,版本最好是在 3.3 以上 (当然,两个服务器不一定是两台机器,一台机器上安装两个 MySQL 服务是可以的,同时,如果你对 MySQL replication 原理十分精通的话,你甚至可以在一个 MySQL 服务的两个不同数据库 database 之间作同步,看有没有需要了)说明: 这两个服务器一般设置一个为主服务器,或叫源服务器, master mysql server, 另一台或其他多台就是 replication slave 同步从服务器了。一台 slave 与多台 slave 设置方法是一样的,这样你就可以作类似数据库集群了。
设置可访问 MySQL 帐号,操作以英文为准。MySQL 帐号一般设置为限定 IP 访问,以保障安全性
MySQL 帐号一般在 master 与 slave 设置为相同帐号,同时是远程可访问
特别注意,如果你用