配2台机器的双向同步(主--主)失败

lilinew 2009-06-25 03:06:01

只能完成单向 (a--》b是成功的)
但反过来始终不成功的(从b到a 失败), 最终没有完成任务 ,结果搞成了单向。

1a--》b是成功的
2 从b到a 失败
错误提示如下
ysql> slave stop;
Query OK, 0 rows affected (0.00 sec)

mysql> HANGE MASTER TO MASTER_LOG_FILE='log_bin.000005',MASTER_LOG_POS=202;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HANGE MASTER TO MASTER_LOG_FILE='log_bin.000005',MASTER_LOG_POS=202' at line 1
mysql> CHANGE MASTER TO MASTER_LOG_FILE='log_bin.000005',MASTER_LOG_POS=202;
Query OK, 0 rows affected (0.01 sec)

mysql> slave start;
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
mysql>


我的配置手册:
设置MySQL数据同步(单向&双向)由于公司的业务需求,需要网通和电信的数据同步,就做了个MySQL的双向同步,记下过程,以后用得到再翻出来,也贴出来供大家参考。

  一、准备服务器

  由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。

  more.. | less.. | 本文中,我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.27,操作系统是RedHat Linux 9。

  假设同步Master的主机名为:A(IP:192.168.0.1),Slave主机名为:B(IP:192.168.0.2),2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/var/lib/mysql。

  二、设置同步服务器

  1、设置同步Master

  修改 my.cnf 文件,在

# Replication Master Server (default)
  # binary logging is required for replication


  添加如下内容:


log-bin=/var/log/mysql/updatelog
  server-id = 1
  binlog-do-db=test
  binlog-ignore-db=mysql

  重启MySQL,创建一个MySQL帐号为同步专用


GRANT REPLICATION SLAVE,RELOAD,SUPER, ON *.* TO back@192.168.0.2 IDENTIFIED BY 'back' ;
  FLUSH PRIVILEGES ;

  2、设置同步Slave

  修改my.cnf文件,添加


server-id = 2
  master-host = 192.168.0.1
  master-user = back
  master-password = back
  master-port = 3306
  replicate-ignore-db=mysql (我的是Ver 14.14 Distrib 5.1.22-rc版,这个参数好像用不上)
  replicate-do-db=test

   重启MySQL

  3、启动同步

  在主服务器A MySQL命令符下:

  show master status;

  显示(当然这个是我机器的情况,你的不可能跟我一样哈,只是个例子):

+------------------+----------+-------------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+-------------------+------------------+
  | updatelog.000028 | 313361 | test | mysql |
  +------------------+----------+-------------------+------------------+

  在从服务器A MySQL命令符下:


slave stop;
  CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=313361;
  slave start;

  用show slave status\G;看一下从服务器的同步情况


Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

  如果都是yes,那代表已经在同步

  往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是你的RP问题,再检查一下操作步骤!
  4、设置双向同步

  修改B服务器的my.cnf,添加


log-bin=/var/log/mysql/updatelog
  binlog-do-db=test
  binlog-ignore-db=mysql


  重启MySQL,创建一个MySQL帐号为同步专用


GRANT REPLICATION SLAVE,RELOAD,SUPER, ON *.* TO back@192.168.0.1 IDENTIFIED BY 'back' ;
  FLUSH PRIVILEGES ;


  修改A服务器的my.cnf,添加


master-host = 192.168.0.2
  master-user = back
  master-password = back
  master-port = 3306
  replicate-ignore-db=mysql
  replicate-do-db=test


  重启MySQL

  在主服务器B MySQL命令符下:


  show master status;
  +------------------+----------+-------------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+-------------------+------------------+
  | updatelog.000028 | 13753 | test | mysql |
  +------------------+----------+-------------------+------------------+


  在服务器A MySQL命令符下:


slave stop;
  CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=13753;
  slave start;




...全文
1168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lilinew 2009-08-05
  • 打赏
  • 举报
回复
090805 16:31:15 [ERROR] Failed to initialize the master info structure
090805 16:31:15 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.45-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
090805 16:38:11 [Note] Slave SQL thread initialized, starting replication in log 'logbin.000003' at position 216, relay log '/var/run/mysqld/mysqld-relay-bin.000002' position: 98
090805 16:38:11 [Note] Slave I/O thread: connected to master 'back@10.0.4.150:3306', replication started in log 'logbin.000003' at position 216
090805 16:38:11 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file ( server_errno=1236)
090805 16:38:11 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file' from master when reading data from binary log
090805 16:38:11 [Note] Slave I/O thread exiting, read up to log 'logbin.000003', position 216
090805 16:39:41 [Note] Slave I/O thread: connected to master 'back@10.0.4.150:3306', replication started in log 'logbin.000003' at position 216
090805 16:39:41 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file ( server_errno=1236)
090805 16:39:41 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file' from master when reading data from binary log
090805 16:39:41 [Note] Slave I/O thread exiting, read up to log 'logbin.000003', position 216

lilinew 2009-06-25
  • 打赏
  • 举报
回复
我现在不在linux下的os,换了系统。 但我等会打开这个日志 ,贴出来。
感觉哦还是很多收获的哦
现在列下如下新问题:
1 多主 --1主 双向同步
2一次性插入100条记录 这是巨大的操作 很可能mysql不能支持
(中间响应时间过长 无法及时更新)
3 好多高级应用触发器等 没有测试 还有好多业务功能需要检
lilinew 2009-06-25
  • 打赏
  • 举报
回复
ok , I sovle it
in fact, the enviroment is too complex
mysql> change master to master_host='10.0.4.150',master_user='back',master_password='back',master_log_file='log_bin.000007' ,master_log_pos=180;Query OK, 0 rows affected (0.04 sec)

mysql> slave start;
Query OK, 0 rows affected (0.01 sec)

xiaos139 2009-06-25
  • 打赏
  • 举报
回复
不是这个日志,是你start slave后,在 datadir目录产生的hostname.err 日志
lilinew 2009-06-25
  • 打赏
  • 举报
回复
mysql> HANGE MASTER TO MASTER_LOG_FILE='log_bin.000005',MASTER_LOG_POS=202;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HANGE MASTER TO MASTER_LOG_FILE='log_bin.000005',MASTER_LOG_POS=202' at line 1
mysql> CHANGE MASTER TO MASTER_LOG_FILE='log_bin.000005',MASTER_LOG_POS=202;
Query OK, 0 rows affected (0.01 sec)
xiaos139 2009-06-25
  • 打赏
  • 举报
回复
mysql环形复制在技术上是没有问题的,上面的配置信息没有细看,把error log贴出来看看

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧