首页 > 学技术 > 技术网文 > MySQL > 正文

[精华] MYSQL的master/slave数据同步配置


来源 chinaunix.net 酷勤网整理

原文:http://www.5ilinux.com/mysql01.html

转载请注明出处哦:)


我的测试环境.基本上数据是瞬间同步,希望对大家有帮助

redhat 9.0 
mysql3.23.57


mysql数据同步备份

A服务器: 192.168.1.2 主服务器master
B服务器: 192.168.1.3 副服务器slave


A服务器设置

#mysql –u root –p 
mysql>;GRANT FILE ON *.* TO backup@192.168.1.3 IDENTIFIED BY ‘1234’; 
mysql>;\exit

上面是Master开放一个账号backup密码1234给IP:192.168.1.3有档案处理的权限 


mysqladmin –u root –p shutdown 

备份Master所有数据库..通常都用tar指令. 
#tar –cvf /tmp/mysql.tar /var/lib/mysql 
注意:tar的时候,MySQL是要在stop情况下 

在A机器上修改/etc/my.cnf 
在[mysqld]区段内加入参数 
log-bin 
server-id=1 
sql-bin-update-same 
binlog-do-db=vbb 

重启A服务器mysql

此时因为有加入log-bin参数,因此开始有index产生了,在/var/lib/mysql目录下有.index档案纪录数据库的异动log. 


B服务器设置

设定/etc/my.cnf 
在[mysqld]区段加入 

master-host=192.168.1.2 
master-user=backup 
master-password=1234 
master-port=3306 
server-id=2 
master-connect-retry=60 预设重试间隔60秒 
replicate-do-db=vbb 告诉slave只做vbb数据库的更新 
log-slave-updates


将A上的mysql.tar copy到B上 
用ftp传B的/tmp 
9.解压缩 
#cd /var/lib/ 


状况测试 
1.A跟B网络及服务都正常情况下,由A端变化数据后,到B端浏览数据,检视是否有进行replication?! 
2.模拟B当机,或是B不一定需要一直跟A有连接.
将由A端变化数据后,到B端浏览数据,B点应该是没有数据变化的


#tar xvf /tmp/mysql-snapshot.tar 
#chown –R mysql:mysql mysql 

1重启B服务器的mysql

这时在/var/lib/mysql目录会出现master.info,此档案纪录了Master MySQL server的信息. 



状况测试 
1.A跟B网络及服务都正常情况下,由A端变化数据后,到B端浏览数据,检视是否有进行replication?! 
2.模拟B当机,或是B不一定需要一直跟A有连接.
将由A端变化数据后,到B端浏览数据,B点应该是没有数据变化的



 无花果 回复于:2003-08-29 13:02:52

这么好的文章,为什么不加精呢?

帮了我大忙了. 谢谢...


 redfox 回复于:2003-08-29 20:36:00

3.23.33 以上都支持了M-S模式了来Replication了。


 platinum 回复于:2005-06-06 14:19:29

这样的方式,是不是只能 M ->; S
当 M 坏掉,S 就是 M 的数据
但是如果 M 修好了呢? S 的数据会不会被 M 的错误数据覆盖?还是 M <- S ?


 Qiang 回复于:2005-06-06 20:28:02

M-S 只是提供一个实时备份(不是那么实时)功能,具体怎么做 failover 还是要自己动手。

只按现在的这个设, M 坏了,你要手工的把数据库指向 S 。S 可以设为只读,或设为读写。如果 S 设为可读写,M 修好后,你还要把 M 和 S 在同步。然后你可以把数据库指向 M (假设做 S 的机器没有 M 好)

目前mysql 不带自动的 failover 功能,所以你要手工或写 script 来完成上面的步骤。  还有其他一些好方法以前在论坛里讨论过,搜一下。


 lingy 回复于:2005-08-19 14:01:07

奇怪,我按照楼上的操作,为什么实现不了同步,我一台LINUX,一台windows


 chifeng 回复于:2005-08-19 23:36:58

我希望能做到M <->; M的同步。


 peng1000cn 回复于:2005-08-20 17:41:48

试试!!


 windychan 回复于:2005-08-21 20:04:04

我有两台服务都安装了相同版本的Mysql 4.0.17,一本做成Master,另一做成slave,好让Slave可以自动的Replication 数据库,我经常在slave上用show slave status 时,显示如下。

| ma-db1.wx.beltongrp.com | repl | 3306 | 30 | ma-db1-bin.051 | 106834794 | ma-db2-relay-bin.002 | 1058337 | ma-db1-bin.002 | Yes | No | | | 1062 | Error 'Duplicate entry '2014' for key 1' on query 'INSERT INTO `spc_solder_Paste_C1` (`pn`, `line`, `date`, `time`, `en`, `fixture`, `solder_ht1`, `solder_ht2`, `solder_ht3`, `solder_ht4`, `avg`, `range`, `action`) VALUES ('C1', 'LINE1-1', {d '2005-07-01'}, {t '23:10:13'}, 'L01346', 'C1 NO.2', .0042, .0035, .0038, .004, .00388, .0007, 'N02001')'. Default database: 'spc' | 0 | 1058180 | 11461514133 |

就算把这条记录从表中删除,又会有N多这样的数据重复的提示。让数据库自动复制停下来。请教各位大侠,我应该如何解决这个问题啊?
就算在slave执stop slave,再slave,一样错,
就算Slave reset,再slave start还是一样。
所以成天担主Master坏,因为一旦的话。就麻烦了。


 redor 回复于:2005-09-20 11:27:18

我也是这样的问题


 chlinux 回复于:2005-09-20 21:35:59

权楼主所示文档很难把master/slave调教好,尤其是在sql语句出错的时候
相关的几条语句可能会很有帮助:
slave stop;
reset slave;
reset master;
slave start;
show status slave\G;
SHOW MASTER STATUS;
FLUSH MASTER;
FLUSH SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;


 jy_nim 回复于:2005-11-17 09:31:52

我也不行啊,而且我要同时同步多个数据库,不知道什么问题


 lovered 回复于:2005-11-17 10:56:26

hello :)


 phpcool 回复于:2005-11-20 17:55:52

我在MySQL 5.0.15调试不通过。不支持sql-bin-update-same、log-slave-updates参数。添加就启动不了。


 yueliangdao0608 回复于:2006-11-17 17:12:36

引用:原帖由 phpcool 于 2005-11-20 17:55 发表
我在MySQL 5.0.15调试不通过。不支持sql-bin-update-same、log-slave-updates参数。添加就启动不了。 




我的MYSQL版本是:
5.0.24a-community-nt-log也不支持这两个参数。
每次master数据库更新了数据后,slave数据库一定得手工输入命令:load data from master 才能更新数据。


 yejr 回复于:2006-11-17 21:56:49

引用:原帖由 yueliangdao0608 于 2006-11-17 17:12 发表



我的MYSQL版本是:
5.0.24a-community-nt-log也不支持这两个参数。
每次master数据库更新了数据后,slave数据库一定得手工输入命令:load data from master 才能更新数据。 



贴上报错信息


 cakkootree 回复于:2007-05-15 18:02:09

报错信息
070515 14:43:54  mysqld started
/usr/local/libexec/mysqld: ERROR: Option 'sql-bin-update-same' used, but is disabled
070515 14:43:54  mysqld ended




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=132623

收藏到: