itsource

ERROR 1047 (08S01): 데이터베이스를 작성하거나 데이터베이스를 사용할 때 WSREP에서 애플리케이션용 노드를 아직 준비하지 않았습니다.

mycopycode 2023. 1. 28. 09:36
반응형

ERROR 1047 (08S01): 데이터베이스를 작성하거나 데이터베이스를 사용할 때 WSREP에서 애플리케이션용 노드를 아직 준비하지 않았습니다.

질문을 하기 전에 stackoverflow를 검색해 보니 다음과 같은 투고가 있었습니다.
mariadb galera - 노드 셧다운 ERROR 1047 WSREP가 아직 애플리케이션용으로 노드를 준비하지 않은 경우 오류 발생

단, 게시물은 2노드 클러스터이고, 저는 3노드이며, 모든 노드에서 다음과 같이 mariadb가 실행되고 있습니다.

컨트롤러 1:

[root@controller1 mysql]# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Tue 2017-07-04 19:34:22 CST; 19h ago
 Main PID: 3785 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─3785 /usr/sbin/mysqld --wsrep_start_position=de05f291-60a9-11e7-a641-13dca5e08098:0

Jul 05 14:52:54 controller1 mysqld[3785]: 2017-07-05 14:52:54 139817407719168 [Note] WSREP: applier thread exiting (code:6)
Jul 05 14:52:54 controller1 mysqld[3785]: 2017-07-05 14:52:54 139817408489216 [Note] WSREP: New cluster view: global state: 00000000-0000-0000-0000-000000000000:0, v... version -1
Jul 05 14:52:54 controller1 mysqld[3785]: 2017-07-05 14:52:54 139817408489216 [Note] WSREP: wsrep_notify_cmd is not defined, skipping notification.
Jul 05 14:52:54 controller1 mysqld[3785]: 2017-07-05 14:52:54 139817408489216 [Note] WSREP: applier thread exiting (code:6)
Jul 05 14:55:41 controller1 mysqld[3785]: 2017-07-05 14:55:41 139817330894592 [Warning] WSREP: Setting parameter 'pc.bootstrap' to 'YES' failed: Setting 'pc.bootstra...tion abort)
Jul 05 14:55:41 controller1 mysqld[3785]: at galera/src/galera_gcs.hpp:param_set():223
Jul 05 14:55:41 controller1 mysqld[3785]: 2017-07-05 14:55:41 139817330894592 [ERROR] WSREP: Set options returned 7
Jul 05 15:04:39 controller1 mysqld[3785]: 2017-07-05 15:04:39 139817330894592 [Warning] WSREP: Setting parameter 'pc.bootstrap' to 'YES' failed: Setting 'pc.bootstra...tion abort)
Jul 05 15:04:39 controller1 mysqld[3785]: at galera/src/galera_gcs.hpp:param_set():223
Jul 05 15:04:39 controller1 mysqld[3785]: 2017-07-05 15:04:39 139817330894592 [ERROR] WSREP: Set options returned 7
Hint: Some lines were ellipsized, use -l to show in full.

컨트롤러 2:

[root@controller2 ~]# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Tue 2017-07-04 19:32:33 CST; 19h ago
 Main PID: 3181 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─3181 /usr/sbin/mysqld --wsrep_start_position=de05f291-60a9-11e7-a641-13dca5e08098:0

Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140476124489472 [Note] WSREP: Closing replication queue.
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140476124489472 [Note] WSREP: Closing slave action queue.
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140476124489472 [Note] WSREP: Shifting OPEN -> CLOSED (TO: 0)
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140476124489472 [Note] WSREP: RECV thread exiting -103: Software caused connection abort
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140478689122048 [Note] WSREP: applier thread exiting (code:6)
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140478689654528 [Note] WSREP: applier thread exiting (code:6)
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140478690424576 [Note] WSREP: applier thread exiting (code:6)
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140478689388288 [Note] WSREP: New cluster view: global state: 00000000-0000-0000-0000-000000000000:0, v... version -1
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140478689388288 [Note] WSREP: wsrep_notify_cmd is not defined, skipping notification.
Jul 05 14:52:54 controller2 mysqld[3181]: 2017-07-05 14:52:54 140478689388288 [Note] WSREP: applier thread exiting (code:6)
Hint: Some lines were ellipsized, use -l to show in full.

컨트롤러 3:

[root@controller3 mysql]# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Wed 2017-07-05 04:32:36 CST; 10h ago
 Main PID: 3176 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─3176 /usr/sbin/mysqld --wsrep_start_position=de05f291-60a9-11e7-a641-13dca5e08098:0

Jul 05 15:11:12 controller3 mysqld[3176]: 2017-07-05 15:11:12 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 77...empt 1080
Jul 05 15:11:36 controller3 mysqld[3176]: 2017-07-05 15:11:36 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 7c...empt 1110
Jul 05 15:11:43 controller3 mysqld[3176]: 2017-07-05 15:11:43 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 77...empt 1110
Jul 05 15:12:06 controller3 mysqld[3176]: 2017-07-05 15:12:06 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 7c...empt 1140
Jul 05 15:12:13 controller3 mysqld[3176]: 2017-07-05 15:12:13 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 77...empt 1140
Jul 05 15:12:39 controller3 mysqld[3176]: 2017-07-05 15:12:39 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 7c...empt 1170
Jul 05 15:12:44 controller3 mysqld[3176]: 2017-07-05 15:12:44 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 77...empt 1170
Jul 05 15:13:09 controller3 mysqld[3176]: 2017-07-05 15:13:09 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 7c...empt 1200
Jul 05 15:13:15 controller3 mysqld[3176]: 2017-07-05 15:13:15 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 77...empt 1200
Jul 05 15:13:39 controller3 mysqld[3176]: 2017-07-05 15:13:39 140609394308864 [Note] WSREP: (e95d1384, 'tcp://0.0.0.0:4567') reconnecting to 7c...empt 1230
Hint: Some lines were ellipsized, use -l to show in full.

모든 mariadb에 로그인하는 제목으로 데이터베이스를 사용하거나 작성하면 다음과 같은 오류가 발생합니다.

ERROR 1047 (08S01): WSREP에서 데이터베이스를 작성하거나 데이터베이스를 사용할 때 애플리케이션용으로 노드를 아직 준비하지 않았습니다.

어떻게 대처해야 할지 모르겠어요.

확인.cat /var/lib/mysql/grastate.dat모든 노드에서요.클러스터가 시작되면 seqno는 -1(알 수 없음)로 설정되고 safe_to_bootstrap은 0으로 설정됩니다.mariadb가 정상적으로 셧다운되면 seqno는 노드에 인식된 마지막 트랜잭션으로 설정됩니다.모든 노드가 부정하게 셧다운되면 모든 노드의 seqno: -1 및 safe_to_bootstrap: 0이 되기 때문에 galera는 가입자의 도너를 선택할 수 없습니다.이 경우 다음과 같은 해결책이 있습니다.

  1. 모든 노드에서 mariadb를 중지합니다.필요하다면 잔인하게 죽여라.
  2. 더하다wsrep_recover=1모든 노드의 galera 구성 파일로 이동한 다음 시작합니다.잠시 실행하다가 오류와 함께 종료됩니다.
  3. 확인.systemctl status mariadb -l또는 로그입니다."WSREP: Recoveryed position: 01234567-89ab-cdef-0123-456789abcdef:999"와 같은 엔트리가 있습니다.UUID는 모든 노드에서 같아야 합니다.콜론 뒤의 번호가 해당 노드의 마지막 알려진 트랜잭션입니다.
  4. 모든 노드에서 wsrep_module을 =0으로 변경합니다.
  5. 각 노드의 grastate.dat을 편집하여 해당 노드의 올바른 클러스터 UUID와 올바른 seqno를 포함합니다(이 예에서는 999).seqno가 가장 높은 노드에서 safe_to_bootstrap도 1로 변경합니다.
  6. 사용하다galera_new_clusterseqno가 가장 높은 노드를 부트스트랩합니다.통나무를 꼬리에 감아 올려 안정되게 만들어라.그 후 정상적으로 시작합니다(systemctl start mariadb) 다음으로 seqno가 높은 노드.로그를 테일하여 부트스트랩된 노드와 동기화되는지 확인합니다.
  7. 이들 2개의 노드 각각에서 mysql 데이터베이스에 로그온하여 실행합니다.show global status like 'wsrep_cluster_size'; ★★★★★★★★★★★★★★★★★」select user from user limit 10;첫 번째 결과가 2이고 두 번째 결과가 오류가 아닌 경우 작동 중인 클러스터입니다.
  8. 일반적으로 각 seqno의 내림차순으로 리메이닝 노드를 시작합니다.

스텝 3의 UUID가 모든 노드에서 동일하지 않은 경우 seqno가 가장 높은 노드에서만 grastate.dat을 수정하십시오.숨김 .sst 디렉토리가 있는 경우 이를 포함하여 다른 노드의 /var/lib/mysql/ 디렉토리에 있는 모든 내용을 삭제합니다.순서 6-8로 넘어갑니다.마지막으로, 이 문제가 발생하기 직전에 데이터베이스를 완전히 백업한 수호천사에 대해 생각해 보십시오.

언급URL : https://stackoverflow.com/questions/44919456/error-1047-08s01-wsrep-has-not-yet-prepared-node-for-application-use-when-i-c

반응형