MySQL Cluster "Dba.getCluster: This function is not available through a session to an instance belonging to an unmanaged replication group (RuntimeError)" Hatası
Efenim, sizin de başınıza gelebilir.
Sunucularınızda bir işlem yapıyordunuz ve sunucuları kapatıp açmanız gerekti ya da en kötü senaryo oldu ve sunucularınız kapandı diyelim.
Hemen ayağa kaldırdınız ve cluster yapınızı kontrol ettiniz.
MySQL Shell i js modunda açtınız ve şu satırları yazdınız.
\c admin@192.168.1.12 ( Burası sunucu giriş bilgileriniz )
var cl = dba.getCluster();
cl.status()
Şöyle bir hata aldınız diyelim.
“Dba.getCluster: This function is not available through a session to an instance belonging to an unmanaged replication group (RuntimeError)”
Yukarıdaki hatadan en azından ilgili makinenin hala bir cluster a ait olduğunu anlayabiliriz.
Muhtemelen işin uzmanı değilseniz benim gibi internetten araştırmaya başladınız ve buradasınız.
Ben benim bulduğum yöntemi anlatayım, siz uymazsa başka kaynaklara bakın.
MySQL Shell den devam ediyoruz. Şu komutu yazalım.
var cluster = dba.rebootClusterFromCompleteOutage();
Bu komut ile cluster konfigürasyonunu kesintiden sonra tekrar ayarlıyoruz. Zaten komuttan da belli oluyor. Cluster ı reboot ediyoruz aynı zamanda.
https://dev.mysql.com dan kısa bir alıntı yapalım.
Bu komut ilgili node un ( sunucunun ) metadatasını kullanarak cluster ı kurtarmaya yararmış. ( recover )
Şöyle bir ekran gelmeli.
Restoring the default cluster from complete outage...
Dba.rebootClusterFromCompleteOutage: The MySQL instance 192.168.1.12:3306' belongs to an InnoDB Cluster and is reachable. (RuntimeError)
Aslında çıktı kendini anlatıyor. Sunucuya erişebiliyoruz ve işlem yaptığımız sunucu bir InnoDB Cluster 'a ait.
Buraya kadar her şey çok güzel.
Gelelim asıl komuta
Evet, açtığımız MySQL Shell içine şu komutu girmemiz yeterli.
cl.rescan()
Şöyle bir çıktı vermeli.
Result of the rescanning operation for the 'ufukTestCluster' cluster:
{
"name": "ufukTestCluster",
"newTopologyMode": null,
"newlyDiscoveredInstances": [
{
"host": "192.168.1.12:3306",
"member_id": "23d87e75-8fd7-11ea-9160-0050569c6ab6",
"name": null,
"version": "8.0.20"
}
],
"unavailableInstances": []
}A new instance '192.168.1.12:3306' was discoverd in the cluster.
Ardından size şunu soracak.
Would you like to add it to the cluster metadata ? [Y/n]: Y ( Yes yazacaksınız )
Adding instance to the cluster metadata...
The instance ‘192.168.1.12:3306' was successfully added to the cluster metadata.
Aslında bu kadar; ama biz devam edelim.
MySQL Shell içine şu komutu verip cluster status kontrolü yapalım.
cl.status()
Eğer aşağıdaki gibi bir çıktı almıyorsanız problem var demektir. Başka kaynaklara yönelin.
{
"clusterName": " ufukTestCluster ",
"defaultReplicaSet": {
"name": "default",
"primary": "192.168.1.11:3306",
"ssl": "REQUIRED",
"status": "OK",
"statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
"topology": {
"192.168.1.10:3306": {
"address": "192.168.1.10:3306",
"mode": "R/O",
"readReplicas": {},
"replicationLag": null,
"role": "HA",
"status": "ONLINE",
"version": "8.0.20"
},
"192.168.1.11:3306": {
"address": "192.168.1.11:3306",
"mode": "R/W",
"readReplicas": {},
"replicationLag": null,
"role": "HA",
"status": "ONLINE",
"version": "8.0.20"
},
"192.168.1.12:3306": {
"address": "192.168.1.12:3306",
"mode": "R/O",
"readReplicas": {},
"replicationLag": null,
"role": "HA",
"status": "ONLINE",
"version": "8.0.20"
}
},
"topologyMode": "Single-Primary"
},
"groupInformationSourceMember": "10.231.1.151:3306"
Evet, hepsi bu kadar. Umarım işinizi çözmüştür.
Cluster.rescan() hakkında kısa da olsa bir yazı yazacağım..
Yorum Yap