MySQL Replication/Synchronization (双机热备/同步复制)

数据库同步可分两大类:一是数据库自带的同步功能,如 DB2 DataPropagator/MySQL replication; 一是专门的同步软件,可支持异构数据库的数据同步,如 IBM DataJoiner/Daffodil Replicator,许多 ETL 工具都提供类似功能。

数据库自有的同步复制功能当为首选,充分利用内部的 log 进行同步。



MySQL Replication 
MySQL内部复制功能是建立在两个或两个以上服务器之间,通过设定它们之间的主-从关系来实现的。其中一个作为主服务器,其它的作为从服务器。


将指定两台服务器。A(IP为192.168.0.1)作为主服务器(简称为主机)。B(IP为192.168.0.2)作为从服务器(简称为从机)。 


配置主服务器
1、建立用于备份的帐号
MySQL的复制功能的实现过程为:从机(B)与主机(A)连接,然后读出主机的二进制更新日志,再将发生的变化合并到自已的数据库中。从机需要一个用户帐号来与主机连接,所以在主机上创建一个帐号,并只给它FILE权限,如下操作: 
mysql>GRANT FILE ON *.* TO replicate@192.168.0.2 IDENTIFIED BY 'password'; 
mysql> FLUSH PRIVILEGES;
2、修改选项文件
现在需要主机数据库的一个快照,并且对主机进行配置,允许生成二进制的更新日志。
首先编辑'my.cnf'文件,以便允许二进制更新日志,在[mysqld]部分的下面某个地方增加一行:'log-bin'。在下一次服务器启动时,主机将生成二进制更新日志(名为:<主机名>-bin.<增量序号#>)。
[mysqld]
… …
log-bin
为了让二进制更新日志有效,关闭MySQL服务程序,然后将主机上的所有数据库目录到另一个目录中,接着重新启动mysqld。 
3、得到服务器数据库的一个快照
请确定得到了所有数据库,否则在进行复制时,如果一个表在主机上存在但在从机上不存在,将出错而退出。现在你已经得到了数据的快照,和一个从建立快照以来的二进制日志。
请注意MySQL数据文件(*.MYD,*.MYI和*.frm)是不依赖于文件系统的,但是ISAM表的数据文件是依赖系统的,但是MySQL3.23以上均采用MyISAM表。只有你处于一个异种的服务器环境,并且仅仅复制不能共享数据表文件时,你将不得不使用mysqldump实用程序或其它的定制脚本来得到数据快照,但是这种可能性还是很小的。


配置从服务器
1、迁移主机的数据库目录
停掉从机上的MySQL服务程序,并且把从主机上拷贝来的数据库目录拷贝到从机上的data目录下。请确认将目录的拥有者和属组改变为MySQL用户相应值,并且修改文件模式为660(只对拥有者和属组可读、可写),目录本身为770(只对拥有者和属组可读、可写和可执行)。 
在从机上启动MySQL服务程序,确认MySQL工作正常。看一看得到的数据快照是否成功。接着,在测试成功后关掉MySQL服务程序。 
2、修改选项文件
在从机上配置需要访问的主机,以便接收主机的更改。所以需要编辑务机上的'my.cnf'文件,在[mysqld]部分中增加下面几行: 
master-host=192.168.0.1
master-user=replicate 
master-password=password 
在启动从机服务程序后,从机服务程序将查看指定的主机,检查是否有改变,并且将这些改变合并到自已的数据库中。从机保持了主机的更新记录,这些记录是从主机的'master.info'文件中接收下来的。从机线程的状态可以通过命令'SHOW SLAVE-STATUS'查看。在从机上处理二进制日志中如果发生错误,都将导致从机线程的退出,并且在*.err的日志文件中生成一条信息。然后,错误改正后可用语句'SLAVE START'来重新启动从机线程。线程将从主机二进制日志处理中断的地方继续处理。 

至此,在主机上所发生的数据改变应该已经复制到从机上了,要测试它,你可以在主机上插入或更新一条记录,而在从机上选择这条记录。 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值