免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3648 | 回复: 5
打印 上一主题 下一主题

MySQL5.1.23 Cluster ---> INNODB 插入数据出错!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-22 16:59 |只看该作者 |倒序浏览
5可用积分
大家好,

在  5.1.23-ndb-6.2.15-log  版本中搭建 Cluster ---->Innodb 的主从环境时,遇到问题,
请大家看看:

1,
   主服务器(Master)的配置:

[MYSQLD]
ndbcluster
ndb-connectstring=192.4.6.224
default-storage-engine=ndbcluster
max_connections=1024
default-character-set=cp932
#log
server-id = 1
log-bin=mfx227-bin
#binlog_format="STATEMENT"
binlog_format="ROW"
#binlog_format="MIXED"

# BASE config.....
skip-name-resolve  
back_log = 200
log-slow-queries = slow.log
long_query_time = 1
table_cache =128
sort_buffer_size = 1M
query_cache_size=0M
query_cache_limit=2M

engine_condition_pushdown=1
ndb_use_exact_count=0

transaction-isolation = READ-COMMITTED


2,从服务器能正常启动,在 Cluster内任何节点上创建 NDB表能同步过去(过去了就是MyISAM表,这个OK。。)
   create table itest (Code varchar(10),Name varchar(5) ,  primary key(Code) ) engine=innodb ;
    这个表的创建也没有问题,在从服务器上能及时的看到。

但是:insert into itest values ('1234567890','Name2') ;
后,在从服务器上报错:
                   Last_Errno: 1535
                   Last_Error: Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, MAINC.itest on slave has size 10. Master's column size should be <= the slave's column size.




看了 Cluster Replication的手册中也没有提到搭建方法之类的,
希望各位高手指点指点。。。
谢谢。。

最佳答案

查看完整内容

文不对题上面说的是innodb,下面怎么成了myisam了你的问题应该是字符集的问题导致的如果可以的话,都用utf8 或者干脆都用latin1也行

论坛徽章:
0
2 [报告]
发表于 2008-09-22 16:59 |只看该作者
文不对题
上面说的是innodb,下面怎么成了myisam了

你的问题应该是字符集的问题导致的
如果可以的话,都用utf8 或者干脆都用latin1也行

论坛徽章:
0
3 [报告]
发表于 2008-09-22 17:03 |只看该作者
字段长度定义的不一致。
Last_Error: Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, MAINC.itest on slave has size 10. Master's column size should be <= the slave's column size.

一个是20,一个是10,修改一下就OK了。

[ 本帖最后由 ziggler 于 2008-9-22 17:04 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-09-23 09:30 |只看该作者
过去了就是MyISAM表


楼主你到底是想做 Replication 还是 Cluster 还是两个一起做?

论坛徽章:
0
5 [报告]
发表于 2008-09-23 10:48 |只看该作者

是我没描述清楚,不过现在弄好了。。

是 Replication ...

是 Cluster  (NDB) ---> INNODB (或者MYISAM)。。。

过去了表定义还一样。。
但是实际上不一样。。 和字符集有关,
mysql> select * From COLUMNS where TABLE_NAME='t4' \G ;
*************************** 1. row ***************************
           TABLE_CATALOG: NULL
            TABLE_SCHEMA: MAINC
              TABLE_NAME: t4
             COLUMN_NAME: Code
        ORDINAL_POSITION: 1
          COLUMN_DEFAULT:
             IS_NULLABLE: NO
               DATA_TYPE: varchar
CHARACTER_MAXIMUM_LENGTH: 10
  CHARACTER_OCTET_LENGTH: 20
       NUMERIC_PRECISION: NULL
           NUMERIC_SCALE: NULL
      CHARACTER_SET_NAME: cp932
          COLLATION_NAME: cp932_japanese_ci
             COLUMN_TYPE: varchar(10)
              COLUMN_KEY: PRI
                   EXTRA:
              PRIVILEGES: select,insert,update,references
          COLUMN_COMMENT:
                 STORAGE: Default
                  FORMAT: Default
1 row in set (0.00 sec)

ERROR:
No query specified


没有特别指定字符集,结果两边的字符集不一样, 一边 CHARACTER_OCTET_LENGTH: 20,另一边 是 10 。
所以报这个错误。


现在已经解决了,谢谢大家。


这么配置想把 Cluster插入节点分散 和 MyISAM(INNODB)复杂检索能力好 的特点都利用上。

另外, MYISAM, INNODB 的话,哪个检索能力更好?在 1000万数据以上的时候 ?

[ 本帖最后由 jb96_xlwang 于 2008-9-23 10:51 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-09-24 18:48 |只看该作者
用上了 ndb 估计对可用性和更新都有要求

那么就选用innodb吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP