Online Operations with ALTER TABLE in NDB Cluster Limitations of NDB online operations Online  DROP COLUMN  operations are not supported. Online  ALTER TABLE ,  CREATE INDEX , or  DROP INDEX  statements that add columns or add or drop indexes are subject to the following limitations: Columns to be added online cannot use the  BLOB  or  TEXT  type, and must meet the following criteria: •A given online  ALTER TABLE  can use only one of  ADD COLUMN ,  ADD INDEX , or  DROP INDEX . One or more columns can be added online in a single statement; only one index may be created or dropped online in a single statement. •The table being altered is not locked with respect to API nodes other than the one on which an online ALTER TABLE ADD COLUMN ,  ADD INDEX , or  DROP INDEX  operation (or  CREATE INDEX  or  DROP INDEX  statement) is run. However, the table is locked against any other operations originating on the same  API node while the online operation is being executed. •The table to be altered must have an explicit primary key; the hidden primary key created by the  NDB storage engine is not sufficient for this purpose. •The storage engine used by the table cannot be changed online. •The tablespace used by the table cannot be changed online. Beginning with NDB 8.0.21, a statement such as  ALTER TABLE  ndb_table  ... ALGORITHM=INPLACE, TABLESPACE= new_tablespace is specifically disallowed. (Bug #99269, Bug #31180526) •When used with NDB Cluster Disk Data tables, it is not possible to change the storage type ( DISK  or MEMORY ) of a column online. This means, that when you add or drop an index in such a way that the operation would be performed online, and you want the storage type of the column or columns to be changed, you must use  ALGORITHM=COPY  in the statement that adds or drops the index. •The columns must be dynamic; that is, it must be possible to create them using  COLUMN_FORMAT DYNAMIC . If you omit the  COLUMN_FORMAT DYNAMIC  option, the dynamic column format is employed automatically. •The columns must permit  NULL  values and not have any explicit default value other than  NULL . Columns added online are automatically created as  DEFAULT NULL , as can be seen here: mysql>  CREATE TABLE t2 ( > c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY > ) ENGINE=NDB; Query OK, 0 rows affected (1.44 sec) mysql>  ALTER TABLE t2 > ADD COLUMN c2 INT, > ADD COLUMN c3 INT, > ALGORITHM=INPLACE; Query OK, 0 rows affected, 2 warnings (0.93 sec) mysql>  SHOW CREATE TABLE t1\G *************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE ‘t2‘ ( ‘c1‘ int(11) NOT NULL AUTO_INCREMENT, ‘c2‘ int(11) DEFAULT NULL, ‘c3‘ int(11) DEFAULT NULL, PRIMARY KEY (‘c1‘) ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 1 row in set (0.00 sec) 4506