Bug #49969 Can not reimport a full dump after changing engines to "ndbcluster"
Submitted: 29 Dec 2009 1:24 Modified: 8 Feb 2010 10:19
Reporter: Greg Chandler Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:mysql-5.1-telco-7.0 OS:Linux (RH/AS 5.3, x86_64)
Assigned to: CPU Architecture:Any
Tags: 7.0.9-0, ERROR 1005 (HY000) at line 750: Can't create table (errno: 708)

[29 Dec 2009 1:24] Greg Chandler
Description:
I did a full dump of my DB(s) and exchanged MyISAM with ndbcluster as the engine types.  The drop statements, delete the DB(s)/Table(s) and I can see replication across other nodes on import.

The import always dies at this line:
ERROR 1005 (HY000) at line 750: Can't create table 'Requests.EmailTexts' (errno: 708)

Generally I would think that setting "MaxNoOfAttributes" to 2^33 would have fixed it if it was a problem with that parameter.

The full dump of the DB is 2.5 Meg.  I'm assuming I should not be running into this problem.

[root@ancho mysql-cluster]# cat /mysql-cluster/config.ini
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2
MaxNoOfAttributes=8589934592
IndexMemory=4096M
DataMemory=4096M

[MYSQLD DEFAULT]

[TCP DEFAULT]

[NDB_MGMD]
hostname=ebstsf-26      # Hostname or IP address of MGM node

[NDBD]
HostName=ebstsf-26
DataDir=/mysql-cluster
[NDBD]
HostName=ancho
DataDir=/mysql-cluster

[MYSQLD]
[MYSQLD]

[root@ancho mysql-cluster]# cat /etc/my.cnf
[client]
port    = 3306
socket          = /ebssa/forms/mysql/mysql.sock

[mysqld]
port    = 3306
socket          = /ebssa/forms/mysql/mysql.sock
datadir       = /mysql
ndbcluster                      # run NDB storage engine
ndb-connectstring=10.26.86.99  # location of management server
skip-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8

[mysql_cluster]
ndb-connectstring=10.26.86.99  # location of management server

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[root@ancho mysql-cluster]# ls -alh /tmp/full
-rw-r--r-- 1 root root 2.5M Dec 28 14:08 /tmp/full

How to repeat:
Two node cluster:

Add RPMs {from mysql.org/cluster server}

Setup Managment config from config.ini above.

create /mysql-cluster on both nodes

Setup blank DB(s) in /mysql on both nodes

attempt import on one node.  {I have the full dump if needed, will have to screen for data}

Suggested fix:
Would like to know the fix myself ;)
[29 Dec 2009 1:34] Greg Chandler
I removed the insert statements from the import, and it died in the same place.

--------------
CREATE TABLE `EmailTexts` (
  `Full_Name` text,
  `EMail` text,
  `Work_Phone` text,
  `UNIX_ID` text,
  `Work_Status` text,
  `Employee_ID` text,
  `Expiration` text,
  `AU` text,
  `MAC` text,
  `Servers` text,
  `Primary_Group` text,
  `Other_Groups` text,
  `Sudo` text,
  `Managers_Name` text,
  `Managers_Email` text,
  `Notes` text,
  `Req_Commands` text,
  `Software_Request` text,
  `Modules` text,
  `Home_Dir` text,
  `Shell` text,
  `GID` text,
  `Requestor_Name` text,
  `Reason` text,
  `ECR_UNIX_ID` text,
  `ECR_Managers_Name` text,
  `Environment` text,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=ndbcluster AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
--------------

ERROR 1005 (HY000) at line 736: Can't create table 'Requests.EmailTexts' (errno: 708)
[29 Dec 2009 8:39] Sveta Smirnova
Thank you for the report.

Please send us your cluster error logs.
[2 Jan 2010 7:14] Hartmut Holzgraefe
2^33 is out of the valid range of MaxNoOfAttributes values, the maximum value is slightly less than 2^32 

Looks as if you have not done a cluster restart (either complete or rolling) as this would have lead to the management node failing to start with

  [MgmtSrvr] ERROR    -- at line 23: Illegal value 8589934592 for parameter MaxNoOfAttributes.
  Legal values are between 32 and 4294967039
  [MgmtSrvr] ERROR    -- at line 23: Could not parse name-value pair in config file.

and so your cluster seems to still running with the old setting

That things already fail on CREATE TABLE is expected behavior as MaxNoOfAttributes determines the max. number of columns, not rows ...
[2 Jan 2010 7:36] Greg Chandler
When I saw this problem first, I set it to 100,000, that didn't work, then 1,000,000, then 2^31, then where I have it now.

I completely shut the cluster down each time I changed the setting, and restarted it one component at a time. {shutdown the mysql nodes as well}

I even did a full reboot of all the machines on one of those attempts.
[4 Jan 2010 13:59] Hartmut Holzgraefe
Looks as if you are editing the wrong file then?

You can check whether your configuration changes were picked up using e.g. 

  ndb_config --type=ndbd --query=id,MaxNoOfAttributes
[4 Jan 2010 18:21] Greg Chandler
I've set the MaxNoOfAttributes back to 100,000 and restarted the cluster.
I'm seeing this:
-bash-3.2$ ndb_config --type=ndbd --query=id,MaxNoOfAttributes
2,1000 3,1000

I killed the ndb_mgmd, and the ndbd on both nodes of the cluster.  I then restarted the ndb_mgmd with: /usr/sbin/ndb_mgmd -f /mysql-cluster/config.ini

Then I restarted the ndbd with: /usr/sbin/ndbd --initial on each of the nodes.
Both said this {time is different}:
-bash-3.2$ /usr/sbin/ndbd --initial
2010-01-04 12:17:53 [ndbd] INFO     -- Configuration fetched from '10.26.86.99:1186', generation: 1

-bash-3.2$ cat /mysql-cluster/config.ini
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2
MaxNoOfAttributes=100000
IndexMemory=4096M
DataMemory=4096M

[MYSQLD DEFAULT]

[TCP DEFAULT]

[NDB_MGMD]
hostname=ebstsf-26      # Hostname or IP address of MGM node

[NDBD]
HostName=ebstsf-26
DataDir=/mysql-cluster
[NDBD]
HostName=ancho
DataDir=/mysql-cluster

[MYSQLD]
[MYSQLD]
[4 Jan 2010 18:25] Greg Chandler
Cluster log, after restart, with 100,000 set

Attachment: ndb_1_cluster.log (application/octet-stream, text), 14.02 KiB.

[8 Jan 2010 10:19] Hartmut Holzgraefe
As you are using a 7.0 version of cluster you need to add the --reload option when starting ndb_mgmd after a configuration change, else it will continue to use the cached settings ...

So instead of starting the management node(s) with:

   /usr/sbin/ndb_mgmd -f /mysql-cluster/config.ini

using 

  /usr/sbin/ndb_mgmd -f /mysql-cluster/config.ini --reload

should fix the problem ...
[9 Feb 2010 0:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".