MySQL veritabanlarındaki “The table ‘XXX’ is full” hatası
MySQL, NDB Cluster veritabanlarında , data memory dolduğunda tablolardaki tüm işlemlerde “The table ‘XXX’ is full” hatası oluşmaktadır. Bu hatanın çözümü için DataMemory ve IndexMemory parametrelerinin değeri arttırılıp, NDB management sunucusu üzerinden tüm node’lardaki servisleri kapatıp, “ndb_mgmd –reload” ile yeni konfigürasyon yüklendikten sonra ilgili servisler başlatılmalıdır.
MySQL hata log dosyasında aşağıdaki gibi hatalar görülmektedir.
2019-09-26 08:20:14 3395 [ERROR] /usr/sbin/mysqld: The table 'my_table' is full
Node’lardaki memory kullanımını aşağıdaki komut ile görüntüleyebilirsiniz.
[root@mysqlmgmt mysql-cluster]# ndb_mgm -e "ALL REPORT MEMORYUSAGE" Connected to Management Server at: localhost:1186 Node 2: Data usage is 11%(125788 32K pages of total 1048576) Node 2: Index usage is 8%(43601 8K pages of total 524320) Node 3: Data usage is 11%(125789 32K pages of total 1048576) Node 3: Index usage is 8%(43601 8K pages of total 524320)
Mysql Cluster konfigürasyon dosyası /var/lib/mysql-cluster/config.ini şeklinde bir dosyadır. Bu dosya içerisindeki aşağıdaki parametreleri değiştirmek gerekmektedir.
DataMemory=8192M # Memory allocate for data storage
IndexMemory=1024M # Memory allocate for index storage
Sonrasında tüm node’lar kapatılıp, servisler başlatılmalıdır.
Kapatmak için:
[root@mysqlmgmt mysql-cluster]# ndb_mgm -e shutdown
Management Server servisini başlatmak için :
[root@mysqlmgmt mysql-cluster]# ndb_mgmd --reload -f /var/lib/mysql-cluster/config.ini
Sonrasında nodelardaki ndb ve mysql servisleri başlatılmalıdır.