Mysql互为主从问题--日志同步数据不同步

我搭建的是mysql互为主从 复制

两台机器的mysql环境完全相同

第一部分测试:

B为master A为slave的同步测试

在B上创建表lian,并插入数据

mysql> create table lian (a int,b char(10));

mysql> insert into lian (a,b)values(22,'hahah');

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| lian |

+----------------+

mysql> select * from lian;

+------+-------+

| a | b |

+------+-------+

| 22 | hahah |

+------+-------+

查看一下master-B的binlog日志,查看以上操作是否记录了日志:

cat mysql-bin.000002

.?Nh?@stdtestcreate table lian (a int,b char(10))??Nl>@stdtestinsert into lian (a,b)values(22,'hahah')

现在查看slave-A的relay日志,发现日志已经同步了

[root@XKWB5510 var]# cat XKWB5510-relay-bin.000003

.?Nh?@stdtestcreate table lian (a int,b char(10))??Nl>@stdtestinsert into lian (a,b)values(22,'hahah')

再在slave-A上看一下数据库是不是存在lian这个表:

mysql> use test;

Database changed

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| aniya |

|lian |

+----------------+

2 rows in set (0.00 sec)

现在说明数据B A 主 从 同步成功

---------------------------------------------------------------------------

第二部分测试:

A为master B为slave的同步测试

在A上创建表From246,并插入数据

mysql> use test;

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| A246 |

| aniya |

| lian |

+----------------+

3 rows in set (0.00 sec)

mysql> create table From246(Name varchar(255),Sex varchar(255),Age int(10));

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| A246 |

| From246 |

| aniya |

| lian |

+----------------+

4 rows in set (0.00 sec)

mysql> insert into From246 (Name,Sex,Age)values('Zhaoyj','Girl',24);

mysql> select * from From246;

+--------+------+------+

| Name | Sex | Age |

+--------+------+------+

| Zhaoyj | Girl | 24 |

+--------+------+------+

1 row in set (0.00 sec)

查看master-A的binlog日志,证明上述操作成功

[root@XKWB5510 var]# tail -1 mysql-bin.000002

testcreate table From246(Name varchar(255),Sex varchar(255),Age int(10))?N?R@stdtestinsert into From246 (Name,Sex,Age)values('Zhaoyj','Girl',24)

查看master-A的日志状态

[root@XKWB5510 var]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000003 |tail -15

/*!*/;

# at 702

#110926 14:01:51 server id 1 end_log_pos 838 Querythread_id=5exec_time=0error_code=0

SET TIMESTAMP=1317016911/*!*/;

create table From246(Name varchar(255),Sex varchar(255),Age int(10))

/*!*/;

# at 838

#110926 14:02:05 server id 1 end_log_pos 966 Querythread_id=5exec_time=0error_code=0

SET TIMESTAMP=1317016925/*!*/;

insert into From246 (Name,Sex,Age)values('Zhaoyj','Girl',24)

/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

查看relay-B的日志,同步日志成功

testcreate table From246(Name varchar(255),Sex varchar(255),Age int(10))?N?R@stdtestinsert into From246 (Name,Sex,Age)values('Zhaoyj','Girl',24)[root@XKWB5705 var]

查看relay-B日志状态,可以看到日志已经同步

[root@XKWB5705 var]# /usr/local/mysql/bin/mysqlbinlog XKWB5705-relay-bin.000005|tail -13

/usr/local/mysql/bin/mysqlbinlog: Character set '#28' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index.xml' file

#110926 14:01:51 server id 1 end_log_pos 838 Querythread_id=5exec_time=0error_code=0

SET TIMESTAMP=1317016911/*!*/;

create table From246(Name varchar(255),Sex varchar(255),Age int(10))

/*!*/;

# at 853

#110926 14:02:05 server id 1 end_log_pos 966 Querythread_id=5exec_time=0error_code=0

SET TIMESTAMP=1317016925/*!*/;

insert into From246 (Name,Sex,Age)values('Zhaoyj','Girl',24)

/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

但是数据却没有插入到relay-B的数据库

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| lian |

+----------------+

1 row in set (0.00 sec)

当我删除master-A上的表时,relay-B日志也同步了

[root@XKWB5705 var]# tail -4 XKWB5705-relay-bin.000005

??NS?@stdtestdrop table A246??NT@stdtestdrop table aniya??NSd@stdtestdrop table lian??NV?@stdtestdrop table From246

这是什么奇怪问题 ??

------------------------------------------------------------------------------

问题排查:

首先在Master-A上用

show processlist; 查看下进程是否Sleep太多。发现很正常

show master status; 也正常

再跑到Slave上查看 show slave status; 也正常

当我手动从A导入B数据时,发现一个问题:

mysql> load table From246 from master;

ERROR 1115 (42000): Unknown character set: 'gbk'

怀疑:难道是因为字符串的问题导致AB主从复制失败 ?

通过show character set 命令查看到

master-A有gbk字符集而slave-B没有

mysql> show character set;

+----------+-----------------------------+---------------------+--------+

| Charset | Description | Default collation | Maxlen |

+----------+-----------------------------+---------------------+--------+

| dec8 | DEC West European | dec8_swedish_ci | 1 |

| cp850 | DOS West European | cp850_general_ci | 1 |

| hp8 | HP West European | hp8_english_ci | 1 |

| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |

| latin1 | cp1252 West European | latin1_swedish_ci | 1 |

| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |

| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |

| ascii | US ASCII | ascii_general_ci | 1 |

| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |

| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |

| greek | ISO 8859-7 Greek | greek_general_ci | 1 |

| cp1250 | Windows Central European | cp1250_general_ci | 1 |

| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |

| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |

| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |

| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |

| cp866 | DOS Russian | cp866_general_ci | 1 |

| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |

| macce | Mac Central European | macce_general_ci | 1 |

| macroman | Mac West European | macroman_general_ci | 1 |

| cp852 | DOS Central European | cp852_general_ci | 1 |

| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |

| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |

| cp1256 | Windows Arabic | cp1256_general_ci | 1 |

| cp1257 | Windows Baltic | cp1257_general_ci | 1 |

| binary | Binary pseudo charset | binary | 1 |

| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |

+----------+-----------------------------+---------------------+--------+

27 rows in set (0.00 sec)

那现在应该是在启动mysql的时候统一他们的字符集

master-A: [root@XKWB5510 var]# /usr/local/mysql/bin/mysqld_safe --default-character-set=latin1 &

slave-B : [root@XKWB5705 var]# /usr/local/mysql/bin/mysqld_safe --default-character-set=latin1 &

再次在B上从A导入数据:

mysql> show tables;

Empty set (0.00 sec)

mysql> load table From246 from master;

Query OK, 0 rows affected (0.01 sec)

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| From246 |

+----------------+

1 row in set (0.00 sec)

现在字符集的问题解决了

---------------------------------------------------------------

现在手动启动一下“将日志应用于数据库”的线程:SLAVE start SQL_THREAD

和“把master段的日志写到本地”的线程:SLAVE start IO_THREAD

发现同步数据还是失败,那说明不是线程的问题

如果发现 Seconds_Behind_Master 为 (null)

解决:

stop slave;

set global sql_slave_skip_counter =1 ;

start slave;

之后Slave会和Master去同步 主要看Seconds_Behind_Master是否为0,直到为0时就已经同步了。。

-----------------------------------

slave B机器上master.info信息,与master A上的信息是否是同步的

mater A:

mysql> show master status\G;

*************************** 1. row ***************************

File: mysql-bin.000004

Position: 808

Binlog_Do_DB: test

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

slave B:

[root@XKWB5705 var]# cat master.info

15

mysql-bin.000004

808

211.100.97.246

repl2

123456

3306

60

0

从以上可以看到是同步的

到目前为止我都没发现到底是什么问题导致“日志同步数据不同步” 很是纳闷

向高手们请教!!!!

分享到:

2011-09-26 17:40

浏览 316

评论

mysql 日志同步 数据不同步_Mysql互为主从问题--日志同步数据不同步相关推荐

  1. mysql删除的表格怎么还原_mysql删除的表格怎么恢复数据

    2017-03-08 回答 有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用mysql提供的多个myisamchk, isamchk ...

  2. mysql查询一周内数据并分组_mysql 统计本周7天的数据并分组

    今天写到项目的一个数据展示模块,最终要呈现的效果是用柱状图显示本周七天的访客数量,所以要给前端本周7天的数据 比如今天是周二(实际上也是),我们要给前端周一周二的数据,后面周三到周日因为还没到,数据置 ...

  3. mysql 中函数如何转存_MySQL函数转储存(当前月数据同步)

    1 BEGIN2 declare a1 int default 0;#第一次循环的循环变量3 declare a2 int default 0;4 declare b1 int default 0;5 ...

  4. mysql主备在同一台_MySQL高可用(一)主备同步:MySQL是如何保证主备一致的

    主备同步,也叫主从复制,是MySQL提供的一种高可用的解决方案,保证主备数据一致性的解决方案. 在生产环境中,会有很多不可控因素,例如数据库服务挂了.为了保证应用的高可用,数据库也必须要是高可用的. ...

  5. linux mysql互为主从_mysql互为主从配置(双主模型)

    一.A.B双主模型的实现条件: 1. 开启二进制日志 2. 开启中继日志 3. 解决自动增长列的问题 如果A服务器上自动增长的列编号有一个35,此时还没有同步到B服务器上,在B服务器上插入一条数据,编 ...

  6. MySQL与优化有关的命令_MySQL优化全攻略-相关数据库命令

    MySQL优化全攻略-相关数据库命令 更新时间:2006年11月25日 00:00:00   作者: 接下来我们要讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化. ▲ ...

  7. mysql当数据改变时_MySQL中,当update修改数据与原数据相同时会再次执行吗?

    一.背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 二.测试环境 MySQL5.7.25 Centos 7.4 三.b ...

  8. mysql命令导出表结构文件夹_mysql,命令导入\导出表结构或数据

    1.导出整个数据库 mysqldump -u用户名 -p密码  数据库名 > 导出的文件名 C:\Users\jack> mysqldump -uroot -pmysql db1  > ...

  9. mysql导入表结构命令是_mysql,命令导入\导出表结构或数据

    1.导出整个数据库 mysqldump -u用户名 -p密码  数据库名 > 导出的文件名 C:\Users\jack> mysqldump -uroot -pmysql db1  > ...

最新文章

  1. Pow(x, n)Python解法
  2. Windows 10下,anaconda (conda) 虚拟环境的创建,jupyter notebook如何使用虚拟环境
  3. 【51Nod - 1279】 扔盘子(思维)(on-p会超时)
  4. vue-cli 脚手架移除、安装(最新版安装)、检测安装结果 - npm篇
  5. html(+css)/02/html标记语义应用,html列表与图片的应用
  6. 如何系统的自学python-如何系统地自学Python?
  7. D02-R语言基础学习
  8. html网页做一个打字小游戏,原生js实现的金山打字小游戏(实例代码详解)
  9. 基于Spring Boot的健身房管理系统设计与实现
  10. 微信涨粉加人100种方法完整版
  11. AUTOCAD——遮罩命令、如何使用CAD对图纸进行局部放大
  12. SaaS是什么?是订阅吗?还是web应用?
  13. 2022 ICM-D
  14. awk、ruby计算总分排名,相同总分显示同一名次
  15. java-net-php-python-jsp网上拍卖系统计算机毕业设计程序
  16. 安兔兔排行榜提取和搜索
  17. OLAP有哪些实现方法?
  18. 事件监听 ActionListener
  19. Bootstrap框架个人总结
  20. linux veket安装教程,【重写】在U盘上安装使用Veket(Linux)系统

热门文章

  1. python实例 97,98
  2. java正则表达式 分词_[Java]使用正则表达式实现分词
  3. vue可以直接进行运算么_Vue实现计算器功能
  4. dsp实现快速傅里叶的C语言程序,DSP-快速傅立叶变换(FFT)算法实验
  5. linux 文件mtime,linux 文件的atime,ctime,mtime查看與修改
  6. python解析sql文件_如何从Python中解析sql文件?
  7. 抖音2020研究报告_抖音音乐发布2020抖音音乐生态数据报告
  8. C++基础13-类和对象之继承2
  9. 零基础学习Java-素数和
  10. HDU 3861 The King’s Problem (强连通缩点+DAG最小路径覆盖)