Database에 문제가 발생하여 복구하거나 어떠한 이유로 재시작해야할 경우들이 많을 것이다. Galera Cluster도 마찬가지로 운영중에 어떠한 문제로 인해서 구동에 이상이 생긴경우 마음과달리 재기동이 안될 수 있다.
이럴경우에는 어떻게 해야할까?
Galera Cluster는 sync방식으로 둘 이상의 DB가 서로를 의존하며 구동되어지고 있을 것이다. 이때 하나의 node만 죽을수도 있고 여러개에 node가 한번에 죽을 수도 있다.(다같이 죽으면 재앙이다….그럴일은 없게지만?) 이때 확인해야할 파일이 바로 /var/lib/mysql/grastate.dat
값이다.
이 파일에서 safe_to_bootstrap
속성의 값을 보면되는데 이 부분이 1
의 값을 가지고 있으면 마지막에 죽은 node를 표시하고 있는 것이다.
따라서, 이 node를 기준으로 복구를 진행하면 된다.
[root@galera-01 ~]# cat /var/lib/mysql/grastate.dat # GALERA saved state version: 2.1 uuid: UUID값 seqno: -1 # 마지막으로 죽은 node 확인 '1'을 찾자. safe_to_bootstrap: 0
확인을 하였으면 앞 Galera Cluster에서 했던 방식과 동일하게 DB를 재가동 시켜주고 나머지 노드들도 순차적으로 Cluster에 추가해주면 된다.
[root@galera-01 ~]# service mysql start --wsrep-new-cluster Starting mysql (via systemctl): [ OK ] . . . service mysql start 나머지 node 추가
정상적으로 노드들이 Cluster에 묶였는지 확인하고, 동기화가 잘되었는지 확인하는 방법은 다음과 같다.
# Cluster size가 제대로 되었는지 확인 > show global status like 'wsrep_cluster_size'; # 다음 옵션을 변경하여 동기화되도록 설정 > SET GLOBAL wsrep_provider_options='pc.bootstrap=YES';
safe_to_bootstrap
의 값이 모두 -1
로 동일하면 cluster node 중 하나를 선택하여 1
로 수정하여 Cluster 재설정을 진행하면된다./var/lib/mysql/grastate.dat
와 /var/lib/mysql/galera.cache
2개의 파일을 삭제하고 다시 재구성을하면 된다.