Chinaunix首页 | 论坛 | 博客
  • 博客访问: 386458
  • 博文数量: 43
  • 博客积分: 613
  • 博客等级: 中士
  • 技术积分: 756
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-01 11:25
文章分类

全部博文(43)

文章存档

2016年(1)

2015年(5)

2014年(5)

2013年(14)

2012年(18)

分类: Mysql/postgreSQL

2012-10-24 10:57:39

测试主从同步的问题,主从同步test库。

主:

  1. root@ttt 11:00>use test;
  2. Database changed
  3. root@test 11:00>show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | a |
  8. +----------------+


从:

  1. root@(none) 11:01>use test;
  2. Database changed
  3. root@test 11:01>show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | a |
  8. +----------------+

从现有的情况来看两边一致,现在测试同步。

主:

  1. root@(none) 11:02>use test;
  2. Database changed
  3. root@test 11:02>create table b like a;
  4. Query OK, 0 rows affected (0.00 sec)

  5. root@test 11:02>show tables;
  6. +----------------+
  7. | Tables_in_test |
  8. +----------------+
  9. | a |
  10. | b |
  11. +----------------+

从:

  1. root@(none) 11:06>use test;
  2. Database changed
  3. root@test 11:06>show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | a |
  8. | b |
  9. +----------------+

以上情况主从正常同步。

在别的库操作同步的库,如下:

主:

  1. root@ttt 11:06>use ttt;
  2. Database changed
  3. root@ttt 11:06>create table test.c like test.b;
  4. Query OK, 0 rows affected (0.01 sec)
  5. root@ttt 11:06>use test;
  6. Database changed
  7. root@test 11:06>show tables;
  8. +----------------+
  9. | Tables_in_test |
  10. +----------------+
  11. | a |
  12. | b |
  13. | c |
  14. +----------------+

从:

  1. root@(none) 11:06>use test;
  2. Database changed
  3. root@test 11:06>show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | a |
  8. | b |
  9. +----------------+

WHAT?数据没有正常同步,什么问题。

查看参考手册大致了解了:

--binlog-do-db=db_name

告诉主服务器,如果当前的数据库(USE选定的数据库)db_name,应将更新记录到二进制日志中。其它所有没有明显指定的数据库  被忽略。如果使用该选项,你应确保只对当前的数据库进行更新。

对于CREATE DATABASEALTER DATABASEDROP DATABASE语句,有一个例外,即通过操作的数据库来决定是否应记录语句,而不是用当前的数据库。

一个不能按照期望执行的例子:如果用binlog-do-db=sales启动服务器,并且执行USE prices; UPDATE sales.january SET amount=amount+1000,该语句不写入二进制日志。

·         --binlog-ignore-db=db_name

告诉主服务器,如果当前的数据库(USE选定的数据库)db_name,不应将更新保存到二进制日志中。如果你使用该选项,你应确保只对当前的数据库进行更新。

一个不能按照你期望的执行的例子:如果服务器用binlog-ignore-db=sales启动,并且执行USE prices; UPDATE sales.january SET amount=amount+1000,该语句不写入二进制日志。

类似于--binlog-do-db,对于CREATE DATABASEALTER DATABASEDROP DATABASE语句,有一个例外,即通过操作的数据库来决定是否应记录语句,而不是用当前的数据库。

也就是说更改库内的数据信息得在要修改的数据库内做操作才会记录到binlog文件中,这样从库才会同步。



阅读(1509) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~