Mysql перенести огромный дБ из innodb в ndbcluster Err: таблица заполнена
Я пытаюсь перенести старую базу данных в MySQL кластер (4 узла данных) с помощью команды:
ALTER TABLE sample ENGINE=NDBCLUSTER
но я получаю следующую ошибку:
The table '#sql-7ff3_3' is full
В этой таблице приблизительно 300 мил строк. Вот мой конфигурационный файл:
/mysql-cluster/config.ini
[NDBD DEFAULT]
NoOfReplicas=2
DataDir=/data/mysql-cluster/ndb/
BackupDataDir=/data/mysql-cluster/backup/
DataMemory=10G
IndexMemory=5G
TimeBetweenLocalCheckpoints=6
FragmentLogFileSize=256MB
NoOfFragmentLogFiles=50
MaxNoOfOrderedIndexes=8000
MaxNoOfConcurrentOperations=100000
MaxNoOfTables = 10000
RedoBuffer=128M
MaxNoOfAttributes=5000
MaxNoOfUniqueHashIndexes=1024
/etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql-cluster/mysqld/
event_scheduler=on
default-storage-engine=ndbcluster
ndbcluster
ndb-connectstring=192.168.x.x,192.168.x.x
innodb_file_per_table
innodb_buffer_pool_size = 512MB
key_buffer = 512M
key_buffer_size = 512M
sort_buffer_size = 512M
table_cache = 1024
read_buffer_size = 512M
1 ответ
Решение
Похоже, что временная таблица, необходимая для выполнения этого действия, является полной, без сомнения, потому что у вас недостаточно памяти для этого. Изменение таблицы с таким количеством данных не очень хорошая идея из-за времени и ресурсов, необходимых. Было бы лучше сбросить (экспортировать) таблицу, создать новую с желаемыми характеристиками и загрузить данные обратно.