系统集成论坛

标题: MySQL数据库同步的实现 [打印本页]

作者: 梦想家    时间: 2010-6-2 22:36
标题: MySQL数据库同步的实现
以下的文章主要向大家介绍的是MySQL数据库同步的实际操作步骤以及对实现MySQL数据库同步的实际应用代码与其在实际操作过程中值得我们大家注意的相关事项的描述,希望会给你带来一些帮助在此方面。


在网上我找了一下,大家都说的是这样:“ MySQL从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。



MySQL数据库同步复制功能的设置都在MySQL的设置文件中体现。MySQL的配置文件(一般是my.cnf)


在unix环境下在/etc/MySQL/my.cnf 或者在MySQL用户的home目录下面的my.cnf.


window环境中,如果c:根目录下有my.cnf文件则取该配置文件。当运行MySQL\bin\winMySQLadmin.exe工具时候,该工具会把c:根目录下的my.cnf 命名为mycnf.bak。并在winnt目录下创建my.ini。MySQL服务器启动时候会读该配置文件。所以可以把my.cnf中的内容拷贝到my.ini文件中,用my.ini文件作为MySQL


服务器的配置文件。



设置方法:


设置范例环境:


操作系统:window2000 professional


MySQL:4.0.4-beta-max-nt-log


A ip:10.10.10.22


B ip:10.10.10.53


A:设置


1.增加一个用户最为同步的用户帐号:


GRANT FILE ON *.* TO backup@'10.10.10.53' IDENTIFIED BY ‘1234’


2.增加一个数据库作为同步数据库:


create database backup


B:设置


1.增加一个用户最为同步的用户帐号:


GRANT FILE ON *.* TO backup@'10.10.10.22' IDENTIFIED BY ‘1234’


2.增加一个数据库作为MySQL数据库同步:



create database backup

主从模式:A->B


A为master


修改A MySQL的my.ini文件。在MySQLd配置项中加入下面配置:



server-id=1 log-bin #设置需要记录log 可以设置log-bin=c:\MySQLbak\MySQLlog 设置日志文件的目录,

#其中MySQLlog是日志文件的名称,MySQL将建立不同扩展名,文件名为MySQLlog的几个日志文件。


binlog-do-db=backup #指定需要日志的数据库



重起数据库服务 


用show master status 命令看日志情况。



B为slave


修改B MySQL的my.ini文件。在MySQLd配置项中加入下面配置:


server-id=2


master-host=10.10.10.22


master-user=backup #MySQL数据库同步用户帐号


master-password=1234


master-port=3306


master-connect-retry=60 预设重试间隔60秒


replicate-do-db=backup 告诉slave只做backup数据库的更新



重起数据库 


用show slave status看同步配置情况。



注意:由于设置了slave的配置信息,MySQL在数据库目录下生成master.info


所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。



双机互备模式


如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。


在A的配置文件中 MySQLd 配置项加入以下设置:


master-host=10.10.10.53  master-user=backup master-password=1234 replicate-do-db=backup master-connect-retry=10
在B的配置文件中 MySQLd 配置项加入以下设置:


log-bin=c:\MySQLlog\MySQLlog  binlog-do-db=backup

注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让MySQL数据库同步机制进行工作,运行slave start



重起AB机器,则可以实现双向的热备。



测试:


向B批量插入大数据量表AA(1872000)条


A数据库每秒钟可以更新2500条数据。”


但是我的MySQL是5.1.30-win32的,安装后在C:\Program Files\MySQL\MySQL Server 5.1这个文件夹里根本就没有my.cnf,只有my.ini,有些说要用winMySQLadmin.exe压运行这个文件后就会在c盘的根目录下有一个mycnf.bak文件,同时在C:\WINDOWS文件夹里生成一个my.ini文件。但是我安装了并运行了winMySQLadmin.exe之后,在c盘的根目录下根本就没有一个mycnf.bak文件,我在整个电脑里都没有找到这个文件。不知道我哪里没有做对,忘高手们指点一二。帮助后给高分。


来源:西下 cnblogs




欢迎光临 系统集成论坛 (http://bbs.xtjc.com/) Powered by Discuz! X3.1