mysql
数据库的同步问题
(
双机热备
)
网上有不少关于
mysql
数据库服务器的数据同步文章,其实只有二位朋友发表的文章,其他都是转抄。
而这些文章中,仅对数据同步过程的操作作了一个记录,而没有把操作方法,原理与一些过程中出现的问题说明清楚。
因为工作需要,
我公司需要对美国服务器上的
mysql
数据库同步到香港服务器上,仅对部分业务相关表进行同步,而同时又需要把香港服务器上的产品数据同
步到美国服务器上,这是同一个数据库,不同表
table
的双向同步,我在设置过程中,参考了网上的中文文章与
msql.com
网站上的在线文档,多次成败,
也算是把
mysql
的这样同步搞个明白。
下面就是一些记录文章,希望可以说明一些内在原理,一些出错现象与处理方法。
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 =
这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。
下面,我们来讲解最核心的过程
上面同步的单词是
synchronization
,呵呵简写
sync
,也是
linux
下一个重要操作
下面的官方文档,说明如何安装与设置
mysql
同步操作,当然,英文版
http://dev.mysql.com/doc/mysql/en/Replication_HOWTO.html
现在,我们用中文复述一下过程
1.
首先,你应该有两个或两个以上的
mysql
数据库服务器,版本最好是在
3.3
以上
(
当然啦,两个服务器不一定是两台机器,一台机器上安装两个
mysql
服务是可以的,同时,如果你对
mysql replication
原理十分精通的话,你甚至可以在一个
mysql
服务的两个不同数据库
database
之间作同步,看有没有
需要了
)
说明:
这两个服务器一般设置一个为
主服务器,或叫源服务器,
master mysql server,
另一台或其他多台就是
replication slave
同步从服务器了。一
台
slave
与多台
slave
设置方法是一样的,这样你就可以作类似数据库集群了
2.
设置可访问
mysql
帐号,操作以英文为准
说明:
2.1 mysql
帐号一般设置为限定
ip
访问,以保障安全性