原文: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
|