mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能,该功能可将一个数据库的工作量分摊于多个Mysql服务器之上,但考虑到种种因素,不要使用过多的同步服务器。最好的方案是根据网站的性质和结构,设置“一写多读”或“一读多写"的服务器模式。
数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(一般是my.cnf)在/etc/mysql/my.cnf
或者在mysql用户的home目录下面的my.cnf。
设置方法:
设置范例环境:
mysql:mysql-5.0.27.tar.gz
A ip:192.168.1.30 B ip:192.168.1.31
A设置:
1.增加一个用户最为同步的用户帐号:
grant all on *.* to
identified by 'backup';
2.增加一个数据库作为同步数据库:
create database backup
B:设置
1.增加一个用户最为同步的用户帐号:
grant all on *.* to
identified by 'backup';
2.增加一个数据库作为同步数据库:
create database backup
主从模式:A->B
A为master
修改A mysql的my.ini文件。在mysqld配置项中加入下面配置:
server-id=1
log-bin
#设置需要记录log 可以设置log-bin=c:mysqlbakmysqllog
设置日志文件的目录,
#其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件。
binlog-do-db=backup #指定需要日志的数据库
重启数据库服务。
用show master status 命令看日志情况。
B为slave
修改B mysql的my.ini文件。在mysqld配置项中加入下面配置:
server-id=2
master-host=192.168.1.30
master-user=backup #同步用户帐号
master-password=backup
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=192.168.1.31
master-user=backup
master-password=backup
replicate-do-db=backup
master-connect-retry=10
在B的配置文件中 mysqld 配置项加入以下设置:
log-bin=//var/log/mysqllogmysqllog
binlog-do-db=backup
注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave
start
重起AB机器,即可实现双向的热备。
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志:
-log-update
二进制日志: -log-bin
==================================================================================
windows下两个mysql数据库同步
A:192.168.1.30
grant all on *.* to identified by 'backup';
my.ini
[mysqld]
server-id=1
master-host=192.168.1.31
master-user=backup
master-password=backup
master-port=3306
log-bin="C:/Program
Files/MySQL/MySQL Server 5.0/bin.log"
log-error="C:/Program Files/MySQL/MySQL
Server 5.0/error.log"
log="C:/Program Files/MySQL/MySQL Server
5.0/mysql.log"
log-update="C:/Program Files/MySQL/MySQL Server
5.0/update.log"
B:192.168.1.31
grant all on *.* to identified by 'backup';
my.ini
[mysqld]
server-id=1
master-host=192.168.1.30
master-user=backup
master-password=backup
master-port=3306
log-bin="C:/Program
Files/MySQL/MySQL Server 5.0/bin.log"
log-error="C:/Program Files/MySQL/MySQL
Server 5.0/error.log"
log="C:/Program Files/MySQL/MySQL Server
5.0/mysql.log"
log-update="C:/Program Files/MySQL/MySQL Server
5.0/update.log"
本文出自 “聆听未来” 博客,请务必保留此出处http://blog.chinaunix.net/space.php?uid=9419692&do=blog&id=3182607