http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
공지사항  
뉴스  
질문과 답변
DBA
Developer
Cluster
토크박스  
이벤트  
서포트 티켓  
최신글
foreign key 설정…
인텍스 추가 등에…
mysql master - s…
다대다 관계에서 …
mysql my파일과 …
 
질문과 답변 (Cluster) > 커뮤니티 존 > 질문과 답변 (Cluster)
shutdown 후 start후 ndb 2번이 start가 안되네요..
글쓴이 : 사악쫑이   날짜 : 12-04-17 18:03   조회수 : 5516

안녕하세요.
클러스터를 이용해 보려고 이곳에서 많은 도움을 받아 가고 있습니다..^^
그런데 이곳 게시판이나 구글링으로도 잘 모르는 부분이 생겨서 조언을 구하고자 합니다.
 
현재 구성은 아래와 같습니다.
ndbcluster : version 7.2.4
ndb_mgmd * 2
mysqld * 2
(tablespace 10g짜리 파일 10개, undo log 파일은 1G 2개)
ndbd * 2 로 구성되어 있습니다.
 
ndbd는 같은 nodegroup으로 묶여 있습니다.
(참..DB 부하분산을 위한 이중화구조로 하려고 합니다.
이런 경우 같은 nodegroup로 설정하는게 맞나요?  아니면 따로 설정하는 것이 맞나요?)
 
문제는 제목처럼 shutdown(mysqld shutdown, ndb_mgm -e shutdown 순서로.)후
재시작을 하면 ndbd 1번은 잘 올라오는데
ndbd 2는 Last completed phase 4)까지만 진행되고 그후로는 진행이 안됩니다.
 
shutdown하고 restart 하는 작업을 세번째 하고 있는데..세번 모두 ndbd 2번이 정상적으로
올라오지 않고 끝나네요...(실패해서 매번 init 한 후 새로 import를 하고 있습니다. ㅠㅠ)

일전에는  error 2341 tsman.cpp  라는 오류를 내고 끝났고
undolog 파일을 1G 짜리 두개로 추가 하나 그 부분은 오류는 나지 않으나
위와 같이 4번작업만 끝내고 멈추내요..
 
왜 정상적으로 시작이 안될까요..
taeguni
config.ini 파일에 설정한 내용을 올려주시면 도움이 될것 같습니다^^;;
royster
ndbd1는 정상적으로 start-up 상태이고 정상적으로 서비스 중이란 뜻이죠?

그렇다면 ndbd2  start-up 시에  --initial 옵션으로 올려보세요

그리고 중요한것은 ndbd2 스타트업 실패시에 출력되는 로그도 확인해야겠죠
사악쫑이
아. 현재 구성이 ndbd1과 ndbd2가 데이터를 반반씩 가지고 있는 구성이네요..
그래서 ndbd2를 --initial로 하면 데이터가 다 날아가버렸습니다...
ndbd1과 ndbd2를 각각 독립적으로 하려면 어떻게 해야 하나요?

undo 파일 사이즈를 크게한 후에는 멈추는 부분과 메세지가 다르게 나오네요...
전에 메세지는 error 2341 오류가 발생했으며 이에 알맞는 에러메세지가 없으며
일시적인 오류이니 버그레포팅 하세요라는 내용이 었습니다.(메세지를 저장한 파일이 날아가 버렸네요..ㅜ)
그러면서 tsman.cpp파일명과 1990 라인이 오류라고 하네요.

지금은 이부분에서 멈추었다가 5~6시간 후에 시작은 되네요.. 하...
RedoPageCache: avoided 0 (0/0) page-reads
RedoOpenFileCache: Avoided 0 file-open/close closed: 0
사악쫑이
우선 관심가져주셔서 감사합니다.~~~
사악쫑이
config.ini 입니다.

# TCP PARAMETERS
#
[tcp default]
SendBufferMemory=2M
ReceiveBufferMemory=2M
#
# Increasing the sizes of these 2 buffers beyond the default values
# helps prevent bottlenecks due to slow disk I/O.
#
# MANAGEMENT NODE PARAMETERS
#
[ndb_mgmd default]
DataDir=/var/mysql-cluster/ndb_data
#
# It is possible to use a different data directory for each management
# server, but for ease of administration it is preferable to be
# consistent.
#
[ndb_mgmd]
HostName=***.***.***.242
NodeId=51
# NodeId=management-server-A-nodeid
#
[ndb_mgmd]
NodeId=52
HostName=***.***.***.243
# NodeId=management-server-B-nodeid
#
# Using 2 management servers helps guarantee that there is always an
# arbitrator in the event of network partitioning, and so is
# recommended for high availability. Each management server must be
# identified by a HostName. You may for the sake of convenience specify
# a NodeId for any management server, although one will be allocated
# for it automatically; if you do so, it must be in the range 1-255
# inclusive and must be unique among all IDs specified for cluster
# nodes.
#
# DATA NODE PARAMETERS
#
[ndbd default]
NoOfReplicas=2
FileSystemPathDD=/home/mysql/data
FileSystemPathDataFiles=/var/mysql-cluster/ndb_data/dndata
FileSystemPathUndoFiles=/var/mysql-cluster/ndb_data/dnlogs
DataDir=/home/mysql/data
InitialLogFileGroup = name=LG1; undo_buffer_size=64M; undo1.log:1G; undo2.log:1G
InitialTablespace = name=TS1; extent_size=8M; data1.dat:10G; data2.dat:10G; data3.dat:10G; data4.dat:10G; data5.dat:10G; data6.dat:10G; data7.dat:10G; data8.dat:10G; data9.dat:10G; data10.dat:10G;
#
# Using 2 replicas is recommended to guarantee availability of data;
# using only 1 replica does not provide any redundancy, which means
# that the failure of a single data node causes the entire cluster to
# shut down. We do not recommend using more than 2 replicas, since 2 is
# sufficient to provide high availability, and we do not currently test
# with greater values for this parameter.
#
#LockPagesInMainMemory=0
#
# On Linux and Solaris systems, setting this parameter locks data node
# processes into memory. Doing so prevents them from swapping to disk,
# which can severely degrade cluster performance.
#
DataMemory=9216M
IndexMemory=1024M
StringMemory: 5
# Transaction Parameters #
MaxNoOfConcurrentTransactions=4096
MaxNoOfConcurrentOperations=100000
MaxNoOfLocalOperations=100000
# Transaction Temporary Storage #
MaxNoOfConcurrentIndexOperations=8192
MaxNoOfFiredTriggers=4000
TransactionBufferMemory=1M
# Scans and buffering #
MaxNoOfConcurrentScans=300
MaxNoOfLocalScans=32
BatchSizePerLocalScan=64
LongMessageBuffer=1M
#
# The values provided for DataMemory and IndexMemory assume 4 GB RAM
# per data node. However, for best results, you should first calculate
# the memory that would be used based on the data you actually plan to
# store (you may find the ndb_size.pl utility helpful in estimating
# this), then allow an extra 20% over the calculated values. Naturally,
# you should ensure that each data node host has at least as much
# physical memory as the sum of these two values.
#
# ODirect=1
#
# Enabling this parameter causes NDBCLUSTER to try using O_DIRECT
# writes for local checkpoints and redo logs; this can reduce load on
# CPUs. We recommend doing so when using MySQL Cluster NDB 6.2.3 or
# newer on systems running Linux kernel 2.6 or later.
#
#NoOfFragmentLogFiles=300
#DataDir=/var/mysql-cluster/ndb_data
#MaxNoOfConcurrentOperations=100000
NoOfFragmentLogFiles=300
FragmentLogFileSize=512M
MaxNoOfOpenFiles=255
InitialNoOfOpenFiles=27
MaxNoOfSavedMessages=25
#
SchedulerSpinTimer=400
SchedulerExecutionTimer=100
RealTimeScheduler=1
# Setting these parameters allows you to take advantage of real-time scheduling
# of NDBCLUSTER threads (introduced in MySQL Cluster NDB 6.3.4) to get higher
# throughput.
#
TimeBetweenGlobalCheckpoints=1000
TimeBetweenEpochs=200
DiskCheckpointSpeed=10M
DiskCheckpointSpeedInRestart=100M
RedoBuffer=32M
#
# CompressedLCP=1
# CompressedBackup=1
# Enabling CompressedLCP and CompressedBackup causes, respectively, local
# checkpoint files and backup files to be compressed, which can result in a space
# savings of up to 50% over noncompressed LCPs and backups.
#
# MaxNoOfLocalScans=64
#MaxNoOfTables=1024
#MaxNoOfOrderedIndexes=256
# Metadata Objects #
MaxNoOfAttributes=1500
MaxNoOfTables=200
MaxNoOfOrderedIndexes=256
MaxNoOfUniqueHashIndexes=256
MaxNoOfTriggers=100
#
[ndbd]
HostName=***.***.***.240
NodeId=1
# NodeId=data-node-A-nodeid
#
# On systems with multiple CPUs, these parameters can be used to lock NDBCLUSTER
# threads to specific CPUs
#
[ndbd]
HostName=***.***.***.241
NodeId=2
# NodeId=data-node-B-nodeid
#
#
# You must have an [ndbd] section for every data node in the cluster;
# each of these sections must include a HostName. Each section may
# optionally include a NodeId for convenience, but in most cases, it is
# sufficient to allow the cluster to allocate node IDs dynamically. If
# you do specify the node ID for a data node, it must be in the range 1
# to 48 inclusive and must be unique among all IDs specified for
# cluster nodes.
#
# SQL NODE / API NODE PARAMETERS
#
[mysqld]
HostName=***.***.***.242
NodeId=101
# HostName=sql-node-A-hostname
# NodeId=sql-node-A-nodeid
#
[mysqld]
HostName=***.***.***.243
NodeId=102
royster
--initial 옵션은 해당 ndb node를 초기화 시키는 옵션이므로 데이타가 초기화 됩니다~

참고로 같은 nodegroup내의 ndbd1 과 ndbd2 가 모두 무결하게 start-up상태에서는
각각의 ndb node가 데이타를 반반씩 가지고 있지만~~

예를들어 ndb2가 shutdown상태라면 ndb1 node는 모든 데이타를 가지게 됩니다.

요것이 auto-failover와 함께 무정지 서비스가 가능한 MySQL Cluster의 중요한 기능 중 하나입다~!

나머지 ndb node가 무결한 상태에서 start-up상태라면  auto recovery가 이루어 집니다~!

로그들을 정독 해보세요~!
사악쫑이
넵. 함 더해보고 7.2.5로 업글해봐야 겠습니다. 감사합니다.~~
민족
정확히 이야기 하면 양쪽 NDB 노드에는 전체 데이터가 다 들어있습니다. 반반 아닙니다.

그래서 한쪽이 내려가도 한쪽 노드에 전체 데이터가 있기 때문에 서비스 운영에는 문제가 없는겁니다.

그래서 한쪽이 서버 장애가 나서... initial 로 올리게 된다면.. 반대쪽에 있는 전체 데이터를 동기화 진행하여

복제를 하는것 입니다.
김일권
환경설정에 보면 NoOfReplicas=2  복사본 2개로 하는 설정이네요. ndb1, ndb2 둘다 동일한 데이터 가지고 있고요,
관리서버에서 노드그룹 확인해 보시면되고요. 반반씩 가지고 있다고 생각하시는 것은 데이터 조회시 nbd1, ndb2 에서
반반씩 분산해서 조회하기 때문에 착각하신듯 데이터는 반만 사용해서 분산되고 실 데이터는 2군데 다 들어있습니다.
서버 1개 그냥 초기화하던지 아니면 다시 설치해서 올리시면 복제되서 정상적으로 작동할거에요.
이전글 기존 Mysql DB를 사용하면서 그 서버에 Cluster를 구성 하려하는데 설치시 질문입니다. 
다음글 Cluster 에러 질문 있습니다.. 
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
Copyright ⓒ ssebiz All Rights Reserved.