Kusprayitna Blogs

Hidup untuk berbagi ilmu :: IT Linux Windows Database Oracle PHP OpenSource

MySQL DNBCLUSTER error karena shutdown server tidak normal

Posted by Prayitna Kuswidianta on June 11th, 2013

Sudah beberapa waktu lamanya menggunakan database MySQL dengan engine NDBCLUSTER berjalan dengan lancar, dengan berbagai macam kondisi perubahan status server, baik server node database maupun server cluster managernya, awal bulan ini yaitu tanggal 2 Juni 2013 dilakukan perawatan listrik dari PLN dan Genset dimana server secara mendadak dimatikan dari UPSnya.

Saat start semua kelihatan normal saja, database mysql berjalan lancar. Dua hari kemudian setelah cek beberapa aplikasi ternyata tidak semua database berjalan dengan baik, yaitu kususnya database mysql dengan engine ndbcluster, data tidak dapat diakses.

Sebagai gambaran saya memakai 1 cluster manager dan 2 node database mysql versi : 5.5.30-ndb-7.2.12-cluster-gpl MySQL Cluster Community Server (GPL). Kondisi yang dijumpai di server yaitu :

  • Cluster manager UP
  • Dua node database, mysql server berjalan dengan baik
  • Status dua node database tidak terhubung ke cluster manager
  • Saat dua node database, ndbcluster di start secara manual, maka pesan di cluster manager yaitu :
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.2  (mysql-5.5.30 ndb-7.2.12, starting, Nodegroup: 0)
id=3    @192.168.0.3  (mysql-5.5.30 ndb-7.2.12, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.1  (mysql-5.5.30 ndb-7.2.12)
[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
ndb_mgm> Node 2: Forced node shutdown completed. Occured during startphase 4. Caused by error 2310: 'Error while reading the REDO log(Ndbd file system inconsistency error, please report a bug). Ndbd file system error, restart node initial'.
Node 3: Forced node shutdown completed. Occured during startphase 4. Caused by error 2308: 'Another node failed during system restart, please investigate error(s) on other node(s)(Restart error). Temporary error, restart node'.
Informasi diatas, setelah dianalisa diperoleh informasi bahwa :
  1. Database ndbcluster untuk jalan harus diawali dengan menjalankan semua node databasenya, jika salah satu gagal start, maka seluruh node akan gagal menjalankan ndbcluster.
  2. Gagal start diatas disebabkan oleh Node 2 yang gagal dikarenakan file sistem yang "rusak"
  3. Bila di cek log di node 2, maka dapat dilihat info sebagai berikut :
RESTORE table: 76 0 rows applied
RESTORE table: 76 0 rows applied
Error while reading REDO log. from 18886
part: 0 D=8, F=1 Mb=1 FP=44 W1=33 W2=0 : Invalid logword gci: 1601003
logPartPtr.p->logExecState: 3
crestartOldestGci: 1598459
crestartNewestGci: 1601003
csrPhasesCompleted: 0
logPartPtr.p->logStartGci: 1600126
logPartPtr.p->logLastGci: 1601003
2013-06-10 16:15:27 [ndbd] INFO     -- Error while reading REDO log. from 18886
part: 0 D=8, F=1 Mb=1 FP=44 W1=33 W2=0 : Invalid logword gci: 1601003
2013-06-10 16:15:27 [ndbd] INFO     -- DBLQH (Line: 18934) 0x00000002
2013-06-10 16:15:27 [ndbd] INFO     -- Error handler shutting down system
2013-06-10 16:15:27 [ndbd] INFO     -- Error handler shutdown completed - exiting
2013-06-10 16:15:27 [ndbd] ALERT    -- Node 2: Forced node shutdown completed. Occured during startphase 4. Caused by error 2310: 'Error while reading the REDO log(Ndbd file system inconsistency error, please report a bug). Ndbd file system error, restart node initial'.
Ketika dilakukan Googling di internet, tentang error ini, tidak banyak di temukan solusi di forumnya mysql.
Apakah solusinya?
  1. Perlu diingat, bahwa ketika menjalankan "ndbd --initial" di node database, ini akan menghapus / mereset database ndbcluster
  2. Jika ada 2 node database ndbcluster, satu isi dan yang lain kosong, maka node database yang kosong akan secara "otomatis"  menjadi sama dengan node database yang ada isinya atau dengan kata lain database akan disalain dari node yang isi ke node yang kosong.
  3. Maka jalankan ulang node 2 yang rusak dengan "ndbd --initial", dimana akan mereset ndbcluster dan jalankan node 3 yang bagus dengan "ndbd" saja.
Hasilnya :
1. Cluster Manager
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.2  (mysql-5.5.30 ndb-7.2.12, Nodegroup: 0)
id=3    @192.168.0.3  (mysql-5.5.30 ndb-7.2.12, Nodegroup: 0, Master)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.1  (mysql-5.5.30 ndb-7.2.12)
[mysqld(API)]   2 node(s)
id=4    @192.168.0.2  (mysql-5.5.30 ndb-7.2.12)
id=5    @192.168.0.3  (mysql-5.5.30 ndb-7.2.12)
2. Log Node 2 Database ndbcluster
2013-06-11 08:16:30 [ndbd] INFO     -- Angel pid: 23091 started child: 23092
2013-06-11 08:16:30 [ndbd] INFO     -- Configuration fetched from 'mysql-mng.uii.ac.id:1186', generation: 1
NDBMT: non-mt
2013-06-11 08:16:30 [ndbd] INFO     -- NDB Cluster -- DB node 2
2013-06-11 08:16:30 [ndbd] INFO     -- mysql-5.5.30 ndb-7.2.12 --
2013-06-11 08:16:30 [ndbd] INFO     -- numa_set_interleave_mask(numa_all_nodes) : no numa support
2013-06-11 08:16:30 [ndbd] INFO     -- Ndbd_mem_manager::init(1) min: 1206Mb initial: 1334Mb
Adding 68Mb to ZONE_LO (1,2175)
Instantiating DBSPJ instanceNo=0
2013-06-11 08:16:31 [ndbd] INFO     -- Start initiated (mysql-5.5.30 ndb-7.2.12)
NDBFS/AsyncFile: Allocating 310256 for In/Deflate buffer
Adding 1267Mb to ZONE_LO (2176,40520)
NDBFS/AsyncFile: Allocating 310256 for In/Deflate buffer
NDBFS/AsyncFile: Allocating 310256 for In/Deflate buffer
RWPool::init(68, 816)
2013-06-11 08:16:51 [ndbd] INFO     -- Start phase 0 completed
2013-06-11 08:17:03 [ndbd] INFO     -- findNeighbours from: 2188 old (left: 65535 right: 65535) new (3 3)
Dbspj::execSTTOR() inst:0 phase=1
2013-06-11 08:17:04 [ndbd] INFO     -- Start phase 1 completed
2013-06-11 08:17:32 [ndbd] INFO     -- Prepare arbitrator node 1 [ticket=507a00012c8fc216]
2013-06-11 08:17:35 [ndbd] INFO     -- Start phase 2 completed
2013-06-11 08:17:36 [ndbd] INFO     -- Start phase 3 completed
Dbspj::execSTTOR() inst:0 phase=4
2013-06-11 08:17:37 [ndbd] INFO     -- Start phase 4 completed
Using 1 fragments per node
node: 2 tab: 2 frag: 0 no lcp to restore
node: 2 tab: 2 frag: 1 no lcp to restore
node: 2 tab: 76 frag: 0 no lcp to restore
node: 2 tab: 76 frag: 1 no lcp to restore
execSTART_RECREQ chaning srnodes from 000000000000000c to 0000000000000004
2013-06-11 08:17:57 [ndbd] INFO     -- Start phase 5 completed
2013-06-11 08:17:57 [ndbd] INFO     -- Start phase 6 completed
2013-06-11 08:17:57 [ndbd] INFO     -- Start phase 7 completed
2013-06-11 08:17:57 [ndbd] INFO     -- Start phase 8 completed
2013-06-11 08:17:57 [ndbd] INFO     -- Start phase 9 completed
2013-06-11 08:17:57 [ndbd] INFO     -- Start phase 100 completed
alloc_chunk(5137 16) -
2013-06-11 08:17:58 [ndbd] INFO     -- Suma: handover from node 3 gci: 1601021 buckets: 00000001 (2)
1601021/0 (1601020/4294967295) switchover complete bucket 0 state: 1starting
2013-06-11 08:18:05 [ndbd] INFO     -- Start phase 101 completed
2013-06-11 08:18:05 [ndbd] INFO     -- Node started
Dan setelah di cek di database ndbcluster, maka data sudah dapat kembali diakses seperti sediakala.
Alhamdulillah, terimakasih ya Allah atas petunjukmu.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*