1. 동시성 제어를 위한 Locking 기법

가. Locking 기법의 정의

 - 트랜잭션이 사용하는 자원 (데이터 항목) 에 대하여 상호 배제 (Mutual Exclusive) 기능을 제공하는 기법

 - 상호 배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금 (Lock) 을 설정하면, 잠금을 설정한 트랜잭션이 해제 (Unlock) 할 때까지 데이터를 독점적으로 사용할 수 있는 것

 

나. Locking 연산의 종류(일반적인 DBMS 모두 지원, Select/Update, Insert 등)

 - 공유 Lock (Shared Lock) : 공유 잠금한 트랜잭션은 데이터 항목에 대해 읽기(read)만 가능

 - 전용 Lock (Exclusive Lock) : 전용 잠금한 트랜잭션은 데이터 항목에 대해서 읽기(read)와 기록(write)가 모두 가능


2. 직렬성 보장을 통해 동시성을 제어하는 2Phase Locking 기법

가. 2Phase Locking의 개념도

 - 모든 트랜잭션들이 lock과 unlock연산을 확장Phase와 수축Phase로 구분하여 수행함 
 - 확장Phase : 트랜잭션은 lock 만 수행할 수 있고 unlock은 수행할 수 없는 Phase
 - 수축Phase : 트랜잭션은 unlock만 수행할 수 있고 lock은 수행할 수 없는 Phase

 

나. 2Phase Locking 기법의 문제 및 해결

 - 2Phase Locking 기법이 deadlock의 완전한 제거를 나타내지는 못함
 - 2Phase Locking 기법 상태에서 Cascading rollback이 가능함
 - 교착상태 예방과 교착상태 탐지로 해결

 

다. 기본적인 2Phase Locking의 문제점을 피하기 위한 Locking 기법

종류 내용 특징
Strict 2PLP - 2Phase Locking
- 모든 독점 lock(Lock-X)는 해당 트렌젝션이 완료될 때까지 unlock 하지 않음.  그대로 유지
- 연쇄복귀(Cascacding rollback) 문제 발생하지 않음
- Deadlock 회피 못함
Rigorous 2PLP - 2Phase Locking
- 모든 lock는 해당 트랜젝션 이 완료될
때까지 unlock 하지 않음.
- Strict 2PLP보다 더 제한적
- Deadlock 회피 못함
Static (Conservative) 2PL - Transaction 수행 전부터 해당 트렌젝션의 읽기 집합과 쓰기집합을 미리 선언하여 해당 트렌젝션이 접근하려는 모든 항목들에 Lock을 획득 - Dead lock 발생 하지 않음.
- 현실성 없음

 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,
   

 Amazon AWS의 Aurora(오로라) DB에 대하여 간략한 기능과 Q&A 사항을 정리하였다. Aurora(오로라) DB는 탈oracle의 분위기가 커지고 있는 시장에서 사용이 증가되고 있는 PostgreSQL을 자체적으로 추가 개선하여 세팅된 DB로 수동으로 스크립트를 작성하여 관리하던 PostgreSQL을 보다 편리하게 제공하고 있으며, disk 영역(스토리지)에서 데이터를 찾거나 변경할때 아마존 AWS 자체 스토리지 처리 기술을 적용하여 조금더 속도 개선을 진행한 기술로 간단히 이해하고 있다.

 장점으로는 AWS CLI를 통하여 미리 Slave 확장이나 자동화 처리(데이터 스냅샷)를 작성해 놓은 상태라면 언제든지 빠르게 서버를 확장할수 있으며 다양한 스펙의 장비를 선택하고 설정할 수 있다는 부분이 가장 큰 장점으로 보여진다.

 단점으로 아마존 AWS(클라우드)로 들어가게 되면 기존에 On-Premise 방식과는 다르게 DB의 구성 및 파라미터 세팅에 대한 제약이 발생되며, AWS 계약의 종류에 따라 갑자기 서버가 내려가거나 장애가 발생했을때 아무 원인이나 조치내역을 공유 받지 못한는 경우도 발생하는 것 같다.

 또한 긴급하게 대량으로 slave를 확장할 경우, AWS 서버를 할당 받는 zone에서 서버가 없는 경우가 있어 종종 지연이 발생되는 경우가 있으며, AWS -> AWS 안에서 데이터를 전송하는 것은 큰 문제가 없는데 AWS -> 외부 서버로 데이터를 전송 해야할 때 많은 비용이 증가하는 점이 있다.

 

[기본 정보]
- AWS Aurora(PostgreSQL) 11버전 지원, Master 1대당 Slave 15대 까지 가능
- RDS slave는 5대로 제한
 

1. AWS Aurora DB사용시 사용자기 임의로 파라미터를 수정가능 여부


Q. 파라미터를 사용자가 편하게 변경 가능한지
A. 변경 가능한 것도 있음, 기본적으로 cost 파라미터 등은 변경 가능하나 변경 불가사항도 존재함
 
    구조가 기본적으로 엑사와 비슷
    Application —> 분산하여 storage에 내려씀 (병렬)
    스토리지 노드는 6개
       
    장점 - shared node로 사용 가능 (스트림노드로 연결은 함, dirty block 때문에), writing 이 많은 서비스에 이득, CPU 사용율 기준으로 Auto - scale 가능
    단점 - CPU 를  20~30% 를 기본적으로 더 사용, 스토리지를 어플리케이션 레벨에서 병렬로 성능이 빠름

 

 

 

 

2.  AWS Aurora DB에서 Parallel 기능 사용 가능 여부

Q. Parallel  기능 여부
A. 버전 마다 달라서 확인 가능, 패러럴 작업시 스토리지 레벨까지 내려감 (특정 버전에서)
 

3. AWS Aurora DB에서 Vaccum동작에 따른 Slave 세션 끊김 없이 처리 가능한지 여부

Q. 슬래이브의 select 작업시 vaccum 이슈로 select 시 접속 fail

ERROR: canceling statement due to conflict with recovery

Detail: User query might have needed to see row versions that must be removed


A. 속도가 빠르고 CPU 작업이 빠르기 때문에 기존 대비하여 극단적으로 발생할 확률 축소
 

4. AWS Aurora DB에서 쓰기가 많은 서비스일때 어느정도까지 서비스에 무리가 없는지 문의

Q. Write 중심적인 서비스에서 DML가 많을 때의 이슈
A. 하루에 1억건 정도라면 크게 문제없음
 

5. AWS에서 발생되는 갑작스러운 서버 장애시 고객사에서 장애 원인과 조치내역에 대하여 공유 받을수 있는지 문의

Q. 서버 장애시 케이스(SR)가 공유가 가능한지
A. 계약이 필요한 사항, aurora에서는 슬래이브가 죽을 경우 스토리지를 사용해서 1분정도 안에 자동 재기동 가능

 

# Amazon AWS Aurora DB construction Q&A summary

# Resumen de preguntas y respuestas sobre la construcción de Amazon AWS Aurora DB

# Amazon AWS Aurora DB構築Q&Aまとめ

# Amazon AWS Aurora数据库构建问答

# अमेज़ॅन AWS अरोरा DB निर्माण क्यू एंड ए सारांश

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,
   

1. MySQL hard/soft parse 

답)

1) mysql 5.7.19 에서 hard/soft parse에 대한 기능이 있는지 문의
 -  MySQL 은 ORACLE 에서 의미하는 hard/soft parse 에 대한 개념이 없습니다.
 -  모든 쿼리는 parse 단계 이후 (prepared statement 의 사용유무에 따라 다름), 실행계획을 세우는 단계를 모두 거친 후 실행이 됩니다.
    ○ MySQL 의 query cache 가 ORACLE 의 hard/soft parse 와 비슷한 기능 (parse 및 실행계획을 세우는 단계가 없이 결과를 바로 return) 을 가지고 있지만, MySQL 의 query cache 는 ORACLE 과 다르게 "결과값"도 저장하고 있어 완전히 다른 cache 임을 알려드립니다. MySQL query cache 는 테이블의 데이터가 한건이라도 변경되면 관련된 cache 를 모두 해제하게 됩니다.

2) mysql에서 쿼리 작성 시에 bind 변수 처리하여 작성하는 것과 static 변수로 작성하는 방법 간의 차이점이 있는지 문의
 -  쿼리는 일반적으로 MySQL 에 4가지 단계를 거치게 됩니다.
A) parsing
   SQL 구문을 문법에 맞게 분류하는 작업을 진행합니다. (SELECT, WHERE, GROUP BY...)
B) resolution
분류된 SQL 에 대한 정합성을 체크합니다. (관련 table 에 column 이 존재하는지에 대한 유무, subquery 혹은 join 되는 쿼리의 컬럼 정합성 체크)
C) optimization
실제 실행계획은 세우는 단계
D) execution
실제 쿼리가 실행되는 단계

위와 같은 과정에서, prepared statement (bind 변수 처리) 를 사용하신다면 A),B) 의 단계를 스킵할 수 있습니다.

 

2. MySQL 파티션 테이블 생성시 주의사항

답)
1) auto_increment 설정시, 주의사항 (복합 key를 사용할 경우)
     - InnoDB : 복합 primary key 생성시에 첫번째 컬럼으로만 사용 가능 
     - MyISAM : 복합 primary key 생성시에 두번째 컬럼으로도 사용 가능

2) virtual column 생성 및 주의사항
     - 아래와 같은 문법으로 테이블 생성시 사용 가능
     - virtual column으로 partition key로 잡아 사용할 수 없음
예)
 # `emp_dt` int(8) generated always as (DATE_FORMAT(emp_date, '%Y%m%d')) virtual
 #comment 'emp_dt 가상컬럼',

3) auto_increment + partition table 생성시, 주의사항
     - auto_increment 컬럼이 primary key의 첫번째로 오는 것이 기본
     - auto_increment 컬럼을 첫번째에 두지 않을 경우에는 key(인덱스)를 별도로 생성해서 테이블을 만들어야함

4) partiton table에서 date, datetime으로 partiton key를 잡을 경우, 주위사항
     -아래와 같이 2가지 형태로 사용이 가능
     -partition by range (to_days()) ~ partition emp values less than (to_days('2017-08-01 00:00:00')),..
     -partition by range columns () ~ partition emp values less than ('20170801'),..

 

3. MySQL metadata lock과 일반 lock의 차이관련

답)
 - 일반 잠금은 row level lock, table level lock 등
 - 메타 데이터 잠금은 DDL 문만 허용금지 (물리적 블록에 look을 거는 것이 아님)


4. MySQL 5.7.19 SQL HINT 사용

답)
 - use index (IX_EMP01)" 인덱스를 지정하는 hint(USE|FORCE|IGNORE Index)를 사용할 떄
 - 기존에 IX_EMP01 인덱스가 생성되어 있지 않으면 쿼리 수행시 error code: 1176(not exist)이 발생된다.


5. MySQL open_files_limit 파라미터 설정
(8.0.22-commercial MySQL Enterprise Server)

1) /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

2)
[mysql_m:/mysql_data/tmp]$ulimit -Sn
65535
[mysql_m:/mysql_data/tmp]$ulimit -Hn
65535

3) my.cnf

[mysqld_safe]
open_files_limit = 8192

위와 같이 mysql 파라미터가 8192로 설정되어 있습니다.

해당 DB로 접근하여 조회해보면 65535으로 확인되는데
open_files_limit를 설정할 때 my.cnf 를 보고 세팅되지 않고 os 세팅을 기준으로 설정되는 것인지 문의드립니다.

mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+

답)
-> root로 기동할 경우, my.cnf 에 적용된 값에 따라서 open_files_limit 값이 적용되나 아래의 조건을 따르게 됨
우선적으로는 my.cnf 에 명시된 값으로 설정되지만 그 값이 아래 조건보다 낮으면 아래 조건 중 큰 수로 설정이 됨 
- 10 + max_connections + (table_open_cache * 2)
- max_connections * 5
- open_files_limit value specified at startup, 5000 if none

-> mysql 유저로 기동할 경우 my.cnf 관계없이 OS설정값으로 설정됨(버그여부확인 필요)

 

#Oracle MySQL Q&A Summary (2020)

#Resumen de preguntas y respuestas de Oracle MySQL (2020)

#Oracle MySQL Q&Aまとめ(2020)

#Oracle MySQL问答摘要(2020)

#Oracle MySQL Q & A सारांश (2020)

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,
   

1. Oracle Engine,OCR,VOTE 백업 수행

 

1) ocr/vote 백업

백업수행: $ORACLE_HOME/bin/ocrconfig -manualbackup
백업위치확인: $ORACLE_HOME/bin/ocrconfig -showbackup

2) oracle, oragrid 엔진 백업
/oracle, /oragrid 영역 전체를 tar로 묶음

[디렉토리 권한에 문제 발생시]

1) oragrid

# chown -R oragrid:dba $GRID_HOME
# chmod -R 755 $GRID_HOME
-- 이후 정상적인 퍼미션으로 변경
# cd <GRID_HOME>/crs/install/
# ./rootcrs.pl -init

2) oracle

# chown -R oracle:dba $ORACLE_HOME
# chmod -R 755 $ORACLE_HOME
-- 이후 정상적인 퍼미션으로 변경
a) relink all 수행 (oracle user)
$ relink all

3) oraInventory

# chown -R oragrid:dba $oraInventory_home
# $oraInventory_home/orainstRoot.sh

 

2. Oracle Engine,OCR,VOTE 복구 수행

 

0) grid / oracle / oraInventory 압축 해제 

tar xvfp <grid_home> 
tar xvfp <oracle_home> 
tar xvfp <oraInventory>

1) shared volume 확인 (oragrid user)

# $ORACLE_HOME/bin/cluvfyrac.sh comp ssa -n testdb1,testdb2 -s /dev/rhdisksys1

# $ORACLE_HOME/bin/cluvfyrac.sh comp ssa -n testdb1,testdb2 -s /dev/rhdisksys2

2. crs exclusive mode로 open (root user)

# $CRS_HOME/bin/crsctl start crs -excl -nocrs

3. ocr/vote diskgroup 생성 (oragrid user)

$ sqlplus / as sysasm
SQL> alter system set asm_diskstring='/dev/*sys*' scope=memory sid='*';
SQL> create diskgroup ASM_CRS external redundancy disk '/dev/rhdisksys1','/dev/rhdisksys2' attribute COMPATIBLE.ASM' = '11.2';
SQL> exit;

4. crs restore (root user)

# cd $GRID_HOME/cdata/<cluster name>/
# ocrconfig -restore <backup_20190610_111155.ocr>

5. vote disk 재생성 (1번 노드 / root)

# crsctl replace votedisk +ASM_CRS

6. asm spfile 재생성 (1번노드 / asm user)

 - ASM 경로 변경이 없다면 제외해도 됌

[init+ASM1.ora 파일]

*._disable_rebalance_compact=TRUE
*._enable_shared_pool_durations=FALSE 

+ASM2.asm_diskgroups='ASM_REDO','ASM_DATA','ASM_ARCH' #Manual Dismount
+ASM1.asm_diskgroups='ASM_REDO','ASM_DATA','ASM_ARCH' #Manual Dismount
*.diagnostic_dest='/oracle_log'
+ASM1.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testdb1-vip)(PORT=1521))))'
+ASM2.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testdb2-vip)(PORT=1521))))'
*.memory_target=0
*.pga_aggregate_target=419430400
*.sga_max_size=4G
*.sga_target=4294967296*._disable_rebalance_compact=TRUE
*._enable_shared_pool_durations=FALSE
+ASM2.asm_diskgroups='ASM_REDO','ASM_DATA','ASM_ARCH' #Manual Dismount
+ASM1.asm_diskgroups='ASM_REDO','ASM_DATA','ASM_ARCH' #Manual Dismount
*.diagnostic_dest='/oracle_log'
+ASM1.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testdb1-vip)(PORT=1521))))'
+ASM2.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testdb2-vip)(PORT=1521))))'
*.memory_target=0
*.pga_aggregate_target=419430400
*.sga_max_size=4G
*.sga_target=4294967296

$ sqlplus / as sysasm
SQL> create spfile='+ASM_CRS' from pfile='/ora_backup/init+ASM1.ora';

7. crs 재기동 (1번노드 / root)
# crsctl stop crs -f
-- 올리는건 1/2번 노드 양쪽에서 수행
# crsctl start crs

-- 검증
# crsctl check cluster -all
# crsctl query css votedisk

 

# Oracle 11G RAC Engine Backup/Recovery

# Copia de seguridad / recuperación de Oracle 11G RAC Engine

# Oracle 11G RAC引擎备份/恢复

# Oracle 11G RAC Engineバックアップ/リカバリ

# Oracle 11G RAC इंजन बैकअप / रिकवरी

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,
   

1. 대량 데이터 변경 세션에 대하여 KILL 수행 상황 (Oracle)

 - 오라클 DB에서 Insert/Update/Delete 작업을 대량으로 수행하던 도중에 세션을 정리해야하는 상황에서 commit을 할수 없어 session kill을 수행했을 때 해당 오브젝트에 대하여 Rollback이 발생되면서 wait이 걸려 세션이 증가하는 상황이 발생할때가 존재 한다. 이때 해당 세션의 Rollback 상태를 모니터링 해야할때가 존재한다.

- 큰 트랜잭션을 kill 했을 경우 복구하는 과정에서 wait for a undo record 이벤트와 PX Deq: Txn Recovery Start 이벤트가 동시에 대량으로 발생 (FAST_START_PARALLEL_ROLLBACK 파라미터가 TRUE일 경우)

- PARALLEL_ROLLBACK이 과도할 경우에 UNDO SEGMENT 부족현상이 발생될 수 있음

- 조회: select state, count(*) from V$FAST_START_SERVERS group by state;

 

1) INSERT/UPDATE/DELETE 하던 세션이 너무 오래걸려서 SESSION KILL 수행

alter system kill session 'sid,seiral#' immediate;

2) SESSION KILL 수행후, 트렌젝션 모니터링시에 ROLLBACK이 오래걸려서 아래와 같이 SPID로 KILL -9 수행

select     'kill -9 ' || spid
from      v$process
where addr in (select paddr from v$session where status='KILLED' and type != 'BACKGROUND')


2. ROLLBACK 모니터링 방법

 

1) V$SESSION 으로 wait for a undo record 이벤트 모니터링 가능

2) V$FAST_START_TRANSACTIONS 뷰로 예측 (.GV$FAST_START_TRANSACTIONS)

SELECT
         usn
       , state
       , undoblockstotal "Total"
       , undoblocksdone "Done"
       , undoblockstotal-undoblocksdone "ToDo"
       , DECODE(cputime,0,'unknown',SYSDATE+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Finish at" 
FROM     v$fast_start_transactions;


[진행중]
       USN STATE                 Total       Done       ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
      1109 RECOVERING          2269489      31317    2238172 2016/06/21 00:06:03


[완료]
       USN STATE                 Total       Done       ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
      1109 RECOVERED             32874      32874          0 2016/06/21 00:24:21

3) x$ktuxe 뷰로 세션단위 진행사항 예측

SELECT
         ktuxeusn
       , to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') "Time"
       , ktuxesiz, ktuxesta
FROM     x$ktuxe
WHERE    ktuxecfl = 'DEAD';
  KTUXEUSN Time                  KTUXESIZ KTUXESTA
---------- ------------------- ---------- --------------
 
      1109 2016/06/20 23:07:22    1800231 ACTIVE
 

# How to monitor ROLLBACK after performing bulk data change session KILL

# Cómo monitorear ROLLBACK después de realizar KILL de sesión de cambio de datos masivos

# 大量のデータを変更セッションKILL実行後、ROLLBACK監視方法

# 执行批量数据更改会话KILL后如何监视ROLLBACK

# थोक डेटा परिवर्तन सत्र KILL करने के बाद ROLLBACK की निगरानी कैसे करें

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle Database Appliance(X5-2) Disk Online replacement

     

  • ODA 장비의 Disk 교체작업을 Online으로 하기 위하여 수행했던 내역을 정리하여 공유합니다.

 

0.기존의 Disk Group에서 삭제 및 분리

alter diskgroup DATA drop disk 'HDD_E0_S04_1463938000P1' force ;

alter diskgroup RECO drop disk 'HDD_E0_S04_1463938000P2' force ;

   

  • TEST를 위하여 정상인 Disk 1개를 분리시켜 Disk 교체 작업을 진행하였다.

   

1.ODA Disk 상태 확인

① OAKCLI 명령어

[root@base0 mapper]# oakcli show disk

NAME PATH TYPE STATE STATE_DETAILS

 

e0_pd_00 /dev/sda HDD ONLINE Good

e0_pd_01 /dev/sdb HDD ONLINE Good

e0_pd_02 /dev/sdaa HDD ONLINE Good

e0_pd_03 /dev/sdab HDD ONLINE Good

e0_pd_04 /dev/sdac HDD UNKNOWN NewDiskInserted

e0_pd_05 /dev/sdad HDD ONLINE Good

e0_pd_06 /dev/sdae HDD ONLINE Good

e0_pd_07 /dev/sdaf HDD ONLINE Good

e0_pd_08 /dev/sdag HDD ONLINE Good

e0_pd_09 /dev/sdah HDD ONLINE Good

e0_pd_10 /dev/sdai HDD ONLINE Good

e0_pd_11 /dev/sdaj HDD ONLINE Good

e0_pd_12 /dev/sdak HDD ONLINE Good

e0_pd_13 /dev/sdal HDD ONLINE Good

e0_pd_14 /dev/sdam HDD ONLINE Good

e0_pd_15 /dev/sdan HDD ONLINE Good

e0_pd_16 /dev/sdao HDD ONLINE Good

e0_pd_17 /dev/sdap HDD ONLINE Good

e0_pd_18 /dev/sdaq HDD ONLINE Good

e0_pd_19 /dev/sdar HDD ONLINE Good

e0_pd_20 /dev/sdas SSD ONLINE Good

e0_pd_21 /dev/sdat SSD ONLINE Good

e0_pd_22 /dev/sdau SSD ONLINE Good

e0_pd_23 /dev/sdav SSD ONLINE Good

[root@base0 mapper]#

   

ASM DISK 상태 확인

col GN format 99

col DN format 99

col NAME format a23

 

SELECT

group_number GN,disk_number DN,name,state,mode_status,mount_status

FROM v$asm_disk

ORDER BY group_number, disk_number;

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

0 0 NORMAL ONLINE CLOSED <- 4번 disk 제거

0 1 NORMAL ONLINE CLOSED <- 4번 disk 제거

1 0 HDD_E0_S17_1463722132P1 NORMAL ONLINE CACHED

1 1 HDD_E0_S05_1463725856P1 NORMAL ONLINE CACHED

1 2 HDD_E0_S12_1463726544P1 NORMAL ONLINE CACHED

1 3 HDD_E0_S10_1463726716P1 NORMAL ONLINE CACHED

1 4 HDD_E0_S16_1463726756P1 NORMAL ONLINE CACHED

1 5 HDD_E0_S08_1463754440P1 NORMAL ONLINE CACHED

1 6 HDD_E0_S15_1463852252P1 NORMAL ONLINE CACHED

1 7 HDD_E0_S19_1463885988P1 NORMAL ONLINE CACHED

1 8 HDD_E0_S01_1463911124P1 NORMAL ONLINE CACHED

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

1 9 HDD_E0_S07_1463917036P1 NORMAL ONLINE CACHED

1 10 HDD_E0_S02_1463917808P1 NORMAL ONLINE CACHED

1 11 HDD_E0_S18_1463929152P1 NORMAL ONLINE CACHED

1 12 HDD_E0_S13_1463929180P1 NORMAL ONLINE CACHED

1 13 HDD_E0_S14_1463929248P1 NORMAL ONLINE CACHED

1 14 HDD_E0_S11_1463935128P1 NORMAL ONLINE CACHED

1 16 HDD_E0_S00_1463938068P1 NORMAL ONLINE CACHED

1 17 HDD_E0_S03_1463941008P1 NORMAL ONLINE CACHED

1 18 HDD_E0_S09_1463967484P1 NORMAL ONLINE CACHED

1 19 HDD_E0_S06_1463969744P1 NORMAL ONLINE CACHED

2 0 HDD_E0_S17_1463722132P2 NORMAL ONLINE CACHED

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

2 1 HDD_E0_S05_1463725856P2 NORMAL ONLINE CACHED

2 2 HDD_E0_S12_1463726544P2 NORMAL ONLINE CACHED

2 3 HDD_E0_S10_1463726716P2 NORMAL ONLINE CACHED

2 4 HDD_E0_S16_1463726756P2 NORMAL ONLINE CACHED

2 5 HDD_E0_S08_1463754440P2 NORMAL ONLINE CACHED

2 6 HDD_E0_S15_1463852252P2 NORMAL ONLINE CACHED

2 7 HDD_E0_S19_1463885988P2 NORMAL ONLINE CACHED

2 8 HDD_E0_S01_1463911124P2 NORMAL ONLINE CACHED

2 9 HDD_E0_S07_1463917036P2 NORMAL ONLINE CACHED

2 10 HDD_E0_S02_1463917808P2 NORMAL ONLINE CACHED

2 11 HDD_E0_S18_1463929152P2 NORMAL ONLINE CACHED

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

2 12 HDD_E0_S13_1463929180P2 NORMAL ONLINE CACHED

2 13 HDD_E0_S14_1463929248P2 NORMAL ONLINE CACHED

2 14 HDD_E0_S11_1463935128P2 NORMAL ONLINE CACHED

2 16 HDD_E0_S00_1463938068P2 NORMAL ONLINE CACHED

2 17 HDD_E0_S03_1463941008P2 NORMAL ONLINE CACHED

2 18 HDD_E0_S09_1463967484P2 NORMAL ONLINE CACHED

2 19 HDD_E0_S06_1463969744P2 NORMAL ONLINE CACHED

3 0 SSD_E0_S20_805971985P1 NORMAL ONLINE CACHED

3 1 SSD_E0_S21_805972008P1 NORMAL ONLINE CACHED

3 2 SSD_E0_S22_805972069P1 NORMAL ONLINE CACHED

3 3 SSD_E0_S23_805972099P1 NORMAL ONLINE CACHED

   

44 rows selected.

   

ISOF 상태 확인

[root@base0 mapper]# lsof | grep HDD_E0_S04 <- 비정상

   

[root@base0 mapper]# lsof | grep HDD_E0_S03 <- 정상

asm_dbw0_ 21756 grid 257u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

asm_rbal_ 21768 grid 286u BLK 252,37 0t0 20942 /dev/mapper/HDD_E0_S03_1463941008p2

asm_rbal_ 21768 grid 287u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

asm_gmon_ 21770 grid 272u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

asm_gmon_ 21770 grid 291u BLK 252,37 0t0 20942 /dev/mapper/HDD_E0_S03_1463941008p2

apx_rbal_ 22990 grid 286u BLK 252,37 0t0 20942 /dev/mapper/HDD_E0_S03_1463941008p2

oracle 26343 oracle 273u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

oracle 26345 oracle 273u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

oracle 26347 oracle 264u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

oracle 26349 oracle 269u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

oracle 26349 oracle 282u BLK 252,37 0t0 20942 /dev/mapper/HDD_E0_S03_1463941008p2

oracle 26351 oracle 272u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

oracle 26351 oracle 291u BLK 252,37 0t0 20942 /dev/mapper/HDD_E0_S03_1463941008p2

oracle 26357 oracle 272u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

oracle 26357 oracle 291u BLK 252,37 0t0 20942 /dev/mapper/HDD_E0_S03_1463941008p2

oracle 48681 oracle 263u BLK 252,36 0t0 20941 /dev/mapper/HDD_E0_S03_1463941008p1

   

2.기존 Disk 제거 및 신규 Disk 삽입

① ODA 장비에서 해당 Disk 를 확인하기 위하여 Disk Light ON

oakcli locate disk e0_pd_04 on/off

  • 해당 명령어를 수행하면 ODA장비의 Disk 영역에 불빛이 들어온다.

       

     ② 신규 Disk 삽입 및 신규 정보 등록

(동일한 Disk를 다시 삽입(정상인 Disk)하면 Data Rebalancing이 자동 수행되어 Disk가 삽입될 수 있다.)

   

- Data Rebalancing 확인 명령어

   

select * from gv$asm_operation; -- Data rebalancing 확인

- 1번 node(Master Node)에서만 작업이 가능하다

   

[root@base0 mapper]# oakcli add disk e0_pd_04

Choose any of following option

0 : Exit add disk operation

1 : Try to add disk only to OAKD not to ASM

2 : Try to add disk to OAKD and ASM

Enter number between 0-2 : 2

INFO: 2015-12-13 01:16:08: adddisk operation takes about 7-8 minutes, so be patience and don't abort early

INFO: 2015-12-13 01:16:08: Setting up root ssh across the private network

   

Please enter the 'root' password : --(중요) 특수 문자 안됨, SSH 22번 포트만 가능

Please re-enter the 'root' password: --(중요) 특수 문자 안됨, SSH 22번 포트만 가능

...........done

INFO: 2015-12-13 01:17:08: Executing function dump_var_values. Dumping variable values passed to storage adapters code

INFO: 2015-12-13 01:17:08: resourceName=e0_pd_04, expander=e0, slotnum=04

INFO: 2015-12-13 01:17:08: slotnumMinusLeadingZero=4, disk=HDD, _OAK_AsmDiskList=e0_data_04 e0_reco_04

INFO: 2015-12-13 01:17:08: output=/dev/sdac /dev/sde

INFO: 2015-12-13 01:17:08: _OAK_MultiPathList=/dev/sdac /dev/sde, _OAK_DiskId=35000cca05741ebd0, OAK_UsrDevName=HDD_E0_S04_1463938000

INFO: 2015-12-13 01:17:08: DevName=HDD_E0_S04_1463938000, last8byet=5741ebd0, last8byetInDecimal=1463938000

INFO: 2015-12-13 01:17:08: dataDgRatio=86, recoDgRatio=14, OAK_PartitionMap=86,14

INFO: 2015-12-13 01:17:08: _OAK_OSUserType=userType:Multiuser, _OAK_Size=900185481216, _OAK_TotalSectors=1758174768

INFO: 2015-12-13 01:17:08: Executing function check_resource_status_in_asm

Warning: Permanently added 'base1,192.168.0.212' (RSA) to the list of known hosts.

INFO: 2015-12-13 01:17:09: Executing function: Setting up variable for node1

INFO: 2015-12-13 01:17:09: Executing function: Calling CleanPDisk on node1

INFO: Found the HDD_E0_S04 already present in the config, will remove it for 35000cca05741ebd0

INFO: Removing entry for HDD_E0_S04 and old diskName is HDD_E0_S04_1463938000

INFO: Running /sbin/kpartx -d /dev/mapper/HDD_E0_S04_1463938000

Warning: Disk has a valid GPT signature but invalid PMBR.

Assuming this disk is *not* a GPT disk anymore.

Use gpt kernel option to override. Use GNU Parted to correct disk.

INFO: Updated /etc/multipath.conf file

INFO: Calling function removePartitionMapping

INFO: Running /sbin/kpartx -d /dev/mapper/HDD_E0_S04_1463938000

Warning: Disk has a valid GPT signature but invalid PMBR.

Assuming this disk is *not* a GPT disk anymore.

Use gpt kernel option to override. Use GNU Parted to correct disk.

INFO: Calling function flushMultipathDiskPath

INFO: Running /sbin/multipath -f HDD_E0_S04_1463938000

INFO: Calling function removeDevMapPath

INFO: Running /sbin/dmsetup remove -f HDD_E0_S04_1463938000

device-mapper: table ioctl failed: No such device or address

device-mapper: reload ioctl failed: No such device or address

device-mapper: remove ioctl failed: No such device or address

Command failed

ERROR: Failure in running /sbin/dmsetup remove -f HDD_E0_S04_1463938000, system command return status 256

INFO: 2015-12-13 01:17:09: Executing function: Calling AddPDisk on node1

INFO: addPDisk function with ResetDisk set to true

INFO: Calling function checkDiskReadyNess

INFO: Running /usr/bin/sg_turs /dev/sdac

INFO: Running /bin/dd if=/dev/sdac iflag=direct of=/dev/null count=100 bs=1024k 2>&1

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 0.570512 seconds, 184 MB/s

INFO: Running /bin/dd if=/dev/zero of=/dev/sdac oflag=direct count=100 bs=1024k 2>&1

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 1.16047 seconds, 90.4 MB/s

INFO: adding the 35000cca05741ebd0 to the config at the end

INFO: Updated /etc/multipath.conf file

INFO: Running /sbin/multipath -v2 in reloadMultipathDevMap

create: HDD_E0_S04_1463938000 (35000cca05741ebd0) undef HITACHI,H109090SESUN900G

size=838G features='0' hwhandler='0' wp=undef

`-+- policy='round-robin 0' prio=1 status=undef

|- 3:0:26:0 sde 8:64 undef ready running

`- 2:0:26:0 sdac 65:192 undef ready running

INFO: Running /sbin/kpartx -a /dev/mapper/HDD_E0_S04_1463938000 in reloadMultipathDevMap

Warning: Disk has a valid GPT signature but invalid PMBR.

Assuming this disk is *not* a GPT disk anymore.

Use gpt kernel option to override. Use GNU Parted to correct disk.

INFO: running parted -s /dev/mapper/HDD_E0_S04_1463938000 unit % print

….

   

문제 없이 Disk 삽입에 따른 환경 설정이 완료된다.

   

3.Disk 삽입 완료 후 상태확인

① OAKCLI 명령어

[root@base0 mapper]# oakcli show disk

=> e0_pd_04 /dev/sdac HDD UNKNOWN NewDiskInserted 상태가 good로 변경

   

NAME PATH TYPE STATE STATE_DETAILS

 

e0_pd_00 /dev/sda HDD ONLINE Good

e0_pd_01 /dev/sdb HDD ONLINE Good

e0_pd_02 /dev/sdaa HDD ONLINE Good

e0_pd_03 /dev/sdab HDD ONLINE Good

e0_pd_04 /dev/sdac HDD ONLINE Good

e0_pd_05 /dev/sdad HDD ONLINE Good

   

-> Disk 인식 완료

   

ASM Disk 상태 확인

SQL> col GN format 99

SQL> col DN format 99

SQL> col NAME format a23

SQL>

SQL> SELECT

2 group_number GN,disk_number DN,name,state,mode_status,mount_status

3 FROM v$asm_disk

4 ORDER BY group_number, disk_number;

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

1 0 HDD_E0_S17_1463722132P1 NORMAL ONLINE CACHED

1 1 HDD_E0_S05_1463725856P1 NORMAL ONLINE CACHED

1 2 HDD_E0_S12_1463726544P1 NORMAL ONLINE CACHED

1 3 HDD_E0_S10_1463726716P1 NORMAL ONLINE CACHED

1 4 HDD_E0_S16_1463726756P1 NORMAL ONLINE CACHED

1 5 HDD_E0_S08_1463754440P1 NORMAL ONLINE CACHED

1 6 HDD_E0_S15_1463852252P1 NORMAL ONLINE CACHED

1 7 HDD_E0_S19_1463885988P1 NORMAL ONLINE CACHED

1 8 HDD_E0_S01_1463911124P1 NORMAL ONLINE CACHED

1 9 HDD_E0_S07_1463917036P1 NORMAL ONLINE CACHED

1 10 HDD_E0_S02_1463917808P1 NORMAL ONLINE CACHED

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

1 11 HDD_E0_S18_1463929152P1 NORMAL ONLINE CACHED

1 12 HDD_E0_S13_1463929180P1 NORMAL ONLINE CACHED

1 13 HDD_E0_S14_1463929248P1 NORMAL ONLINE CACHED

1 14 HDD_E0_S11_1463935128P1 NORMAL ONLINE CACHED

1 15 HDD_E0_S04_1463938000P1 NORMAL ONLINE CACHED

1 16 HDD_E0_S00_1463938068P1 NORMAL ONLINE CACHED

1 17 HDD_E0_S03_1463941008P1 NORMAL ONLINE CACHED

1 18 HDD_E0_S09_1463967484P1 NORMAL ONLINE CACHED

1 19 HDD_E0_S06_1463969744P1 NORMAL ONLINE CACHED

2 0 HDD_E0_S17_1463722132P2 NORMAL ONLINE CACHED

2 1 HDD_E0_S05_1463725856P2 NORMAL ONLINE CACHED

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

2 2 HDD_E0_S12_1463726544P2 NORMAL ONLINE CACHED

2 3 HDD_E0_S10_1463726716P2 NORMAL ONLINE CACHED

2 4 HDD_E0_S16_1463726756P2 NORMAL ONLINE CACHED

2 5 HDD_E0_S08_1463754440P2 NORMAL ONLINE CACHED

2 6 HDD_E0_S15_1463852252P2 NORMAL ONLINE CACHED

2 7 HDD_E0_S19_1463885988P2 NORMAL ONLINE CACHED

2 8 HDD_E0_S01_1463911124P2 NORMAL ONLINE CACHED

2 9 HDD_E0_S07_1463917036P2 NORMAL ONLINE CACHED

2 10 HDD_E0_S02_1463917808P2 NORMAL ONLINE CACHED

2 11 HDD_E0_S18_1463929152P2 NORMAL ONLINE CACHED

2 12 HDD_E0_S13_1463929180P2 NORMAL ONLINE CACHED

   

GN DN NAME STATE MODE_ST MOUNT_S

--- --- ----------------------- -------- ------- -------

2 13 HDD_E0_S14_1463929248P2 NORMAL ONLINE CACHED

2 14 HDD_E0_S11_1463935128P2 NORMAL ONLINE CACHED

2 15 HDD_E0_S04_1463938000P2 NORMAL ONLINE CACHED

2 16 HDD_E0_S00_1463938068P2 NORMAL ONLINE CACHED

2 17 HDD_E0_S03_1463941008P2 NORMAL ONLINE CACHED

2 18 HDD_E0_S09_1463967484P2 NORMAL ONLINE CACHED

2 19 HDD_E0_S06_1463969744P2 NORMAL ONLINE CACHED

3 0 SSD_E0_S20_805971985P1 NORMAL ONLINE CACHED

3 1 SSD_E0_S21_805972008P1 NORMAL ONLINE CACHED

3 2 SSD_E0_S22_805972069P1 NORMAL ONLINE CACHED

3 3 SSD_E0_S23_805972099P1 NORMAL ONLINE CACHED

  

   

ISOF 상태 확인

  • 정상적으로 해당 프로세스들이 올라오는 것을 확인할 수 있다.

[root@base0 mapper]# lsof | grep HDD_E0_S04

asm_dbw0_ 38776 grid 280u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

asm_rbal_ 38788 grid 256u BLK 252,39 0t0 5505972 /dev/mapper/HDD_E0_S04_1463938000p2

asm_rbal_ 38788 grid 257u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

apx_rbal_ 40507 grid 256u BLK 252,39 0t0 5505972 /dev/mapper/HDD_E0_S04_1463938000p2

mdb_dbw0_ 41381 grid 275u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

mdb_ckpt_ 41385 grid 259u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

mdb_smon_ 41389 grid 258u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

mdb_rbal_ 41397 grid 257u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

oracle 41476 oracle 274u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

oracle 41478 oracle 265u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

oracle 41480 oracle 266u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

oracle 41486 oracle 272u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

oracle 41490 oracle 294u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

oracle 41490 oracle 295u BLK 252,39 0t0 5505972 /dev/mapper/HDD_E0_S04_1463938000p2

oracle_41 41564 grid 257u BLK 252,39 0t0 5505972 /dev/mapper/HDD_E0_S04_1463938000p2

asm_x000_ 87135 grid 271u BLK 252,38 0t0 5509236 /dev/mapper/HDD_E0_S04_1463938000p1

   

4.Parameter File

/etc/multipath.conf -> oakcli 확인 명령어

/opt/oracle/extapi/asmappl.config -> SQL 확인 명령어

multipath -r; multipath -F; multipath -v2 

  • 2번의 명령어를 통한 작업이 정상적으로 수행되지 않을 경우에 해당 파라미터 파일을 조작하여 작업을 진행할 수도 있음.


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



Adding MySQL Cluster Data Nodes Online

   

  • MySQL 클러스터 온라인 데이터 노드 추가가 가능하도록 지원을 시작하고 있다.
  • MySQL Cluster Data Nodes Online 추가가 가능한 버전은 MySQL Cluster NDB 6.4.0 (This capability is available in MySQL Cluster NDB 7.0 (beginning with MySQL Cluster NDB 6.4.0) and later MySQL Cluster release series.) 이상부터 가능한 것으로 확인되며 공식문서를 참고하여 문서를 정리하였습니다.

       

Step 1: Update configuration file.

the cluster uses a config.ini file

   

[ndbd default]

…..

[ndbd]

….

Id = 7

HostName = *.*.*.4 (TEST IP)

datadir=/usr/local/mysql-cluster/ndbd-data

ArbitrationRank=3

   

Id = 8

HostName = *.*.*.5 (TEST IP)

datadir=/usr/local/mysql-cluster/ndbd-data

ArbitrationRank=4

   

Step 2: Restart the management server

1) Stop the management server using the management client STOP command, as shown here:

   

ndb_mgm> 10 STOP

Node 10 has shut down.

Disconnecting to allow Management Server to shutdown

   

shell>

   

2) Because shutting down the management server causes the management client to terminate, you must start the management server from the system shell.

shell> ndb_mgmd -f config.ini --reload

2008-12-08 17:29:23 [MgmSrvr] INFO -- NDB Cluster Management Server. 5.1.73-ndb-7.1.36

2008-12-08 17:29:23 [MgmSrvr] INFO -- Reading cluster configuration from 'config.ini'

   

3) status check

   

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=3 @*.*.*.1 (mysql-5.1.34 ndb-6.3.25, Nodegroup: 0)

id=4 @*.*.*.2 (mysql-5.1.34 ndb-6.3.25, Nodegroup: 0, Master)

id=7 (not connected, accepting connect from 10.0.0.4)

id=8 (not connected, accepting connect from 10.0.0.5)

   

[ndb_mgmd(MGM)] 1 node(s)

id=1 @*.*.*.3 (mysql-5.1.34 ndb-6.3.25)

   

[mysqld(API)] 2 node(s)

id=5 @*.*.*.1 (mysql-5.1.34 ndb-6.3.25)

id=6 @*.*.*.2 (mysql-5.1.34 ndb-6.3.25)

 

Step 3: Perform a rolling restart of the existing data nodes.

ndb_mgm> 1 RESTART

Node 1: Node shutdown initiated

Node 1: Node shutdown completed, restarting, no start.

Node 1 is being restarted

   

ndb_mgm> Node 1: Start initiated (version 7.1.36)

Node 1: Started (version 7.1.36)

   

ndb_mgm> 2 RESTART

Node 2: Node shutdown initiated

Node 2: Node shutdown completed, restarting, no start.

Node 2 is being restarted

   

ndb_mgm> Node 2: Start initiated (version 7.1.36)

   

ndb_mgm> Node 2: Started (version 7.1.36)

   

Step 4: Perform a rolling restart of all cluster API nodes.

shell> mysqladmin -uroot -ppassword shutdown

081208 20:19:56 mysqld_safe mysqld from pid file

/usr/local/mysql/var/tonfisk.pid ended

   

shell> mysqld_safe --ndbcluster --ndb-connectstring=*.*.*.3 &

081208 20:20:06 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.

081208 20:20:06 mysqld_safe Starting mysqld daemon with databases

from /usr/local/mysql/var

   

Step 5: Perform an initial start of the new data nodes.

shell> ndbd -c 10.0.0.3 --initial

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=3 @*.*.*.1 (mysql-5.1.34 ndb-6.3.25, Nodegroup: 0)

id=4 @*.*.*.2 (mysql-5.1.34 ndb-6.3.25, Nodegroup: 0, Master)

id=7 @*.*.*.7 (mysql-5.1.34 ndb-6.3.25, no nodegroup)

id=8 @*.*.*.8 (mysql-5.1.34 ndb-6.3.25, no nodegroup)

   

[ndb_mgmd(MGM)] 1 node(s)

id=1 @*.*.*.3 (mysql-5.1.34 ndb-6.3.25)

   

[mysqld(API)] 2 node(s)

id=5 @*.*.*.1 (mysql-5.1.34 ndb-6.3.25)

id=6 @*.*.*.2 (mysql-5.1.34 ndb-6.3.25)

   

Step 6: Create a new node group

ndb_mgm> CREATE NODEGROUP 7,8

Nodegroup 1 created

   

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=3 @*.*.*.1 (mysql-5.1.34 ndb-6.3.25, Nodegroup: 0)

id=4 @*.*.*.2 (mysql-5.1.34 ndb-6.3.25, Nodegroup: 0, Master)

id=7 @*.*.*.7 (mysql-5.1.34 ndb-6.3.25, 1)

id=8 @*.*.*.8 (mysql-5.1.34 ndb-6.3.25, 1)

   

[ndb_mgmd(MGM)] 1 node(s)

id=1 @*.*.*.3 (mysql-5.1.34 ndb-6.3.25)

   

[mysqld(API)] 2 node(s)

id=5 @*.*.*.1 (mysql-5.1.34 ndb-6.3.25)

id=6 @*.*.*.2 (mysql-5.1.34 ndb-6.3.25)

   

Step 7: Redistribute cluster data.

ndb_mgm> all report mem

  Node 2: Data usage is 5%(176 32K pages of total 3200)

  Node 2: Index usage is 0%(76 8K pages of total 12832)

  Node 3: Data usage is 5%(176 32K pages of total 3200)

  Node 3: Index usage is 0%(76 8K pages of total 12832)

   

Node 7: Data usage is 0%(0 32K pages of total 192000)

Node 7: Index usage is 0%(0 8K pages of total 192032)

Node 8: Data usage is 0%(0 32K pages of total 192000)

Node 8: Index usage is 0%(0 8K pages of total 192032)

   

shell> ndb_desc -c *.*.*.3 -d n ips -p

- ips --

Version: 1

Fragment type: 9

K Value: 6

Min load factor: 78

Max load factor: 80

...

   

-- Per partition info --

Partition Row count Commit count Frag fixed memory Frag varsized memory

0 26086 26086 1572864 557056

1 26329 26329 1605632 557056

   

   

1) Table Redistribute

- 대상 테이블명 확인

SELECT TABLE_SCHEMA, TABLE_NAME

FROM INFORMATION_SCHEMA.TABLES

WHERE ENGINE = 'NDBCLUSTER';

   

- 테이블 복제

mysql> ALTER ONLINE TABLE [DB명].[테이블명] REORGANIZE PARTITION;

   

- Redistribute 확인

shell> ndb_desc -d [DB명] [테이블명] -c *.*.*.3:port -pn

shell> ndb_desc -c *.*.*.10 -d n ips -p

-- ips --

Version: 16777217

Fragment type: 9

K Value: 6

Min load factor: 78

Max load factor: 80

-- Per partition info --

Partition Row count Commit count Frag fixed memory Frag varsized memory

0 12981 52296 1572864 557056

1 13236 52515 1605632 557056

2 13105 13105 819200 294912

3 13093 13093 819200 294912

   

ndb_mgm> all report mem

Node 2: Data usage is 5%(176 32K pages of total 3200)

Node 2: Index usage is 0%(76 8K pages of total 12832)

Node 3: Data usage is 5%(176 32K pages of total 3200)

Node 3: Index usage is 0%(76 8K pages of total 12832)

Node 7: Data usage is 2%(80 32K pages of total 3200)

Node 7: Index usage is 0%(51 8K pages of total 12832)

Node 8: Data usage is 2%(80 32K pages of total 3200)

  Node 8: Index usage is 0%(50 8K pages of total 12832)

   

   

[참고 사이트]

원본 위치 <https://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-online-add-node.html>


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



MySQL Monitor Tool Install

   

  • MySQL Cluster에 따른 node를 많이 생성(global Service의 경우에 3000개까지 구성하는 것을 본적이 있다.)하게 되면 관리적인 측면의 고민하게 된다.MySQL의 경우에 위 MySQL Monitor Tool을 통하여 통합 관리가 가능하도록 지원하고 있다.

  • 해당 Tool에서는 DB 상태 확인부터 성능에 대한 확인까지 다양한 정보를 확인할 수 있는데 Database Activity의 기능을 통하여 부하테스트를 진행할 때 성능 분석 및 개선을 진행한 적이 있었는데 오라클의 ASH(Active Session History)와 비슷한 기능으로 유용하게 사용했던 기억이 있다.

       

  • Manager와 Agent를 설치하여 IP 설정만 하면 어렵지 않게 구성할 수 있다. (아래 내역을 참고하여 진행)

   

0. MySQL 사용자 계정 생성

create user 'TEST'@'%' identified by 'TEST';

   

1. Monitor Manager Install

--------------------

test-mysql-manager

*.*.*.10

================================================================

root@mysql-manager:/mnt/TEST# ./mysqlmonitor-2.3.12.2175-linux-x86_64-installer.bin

Message from syslogd@ at Mon Jan 21 09:55:15 2013 …

   

2. Monitor Agent 1 Install

-------------------

test-mysql1

*.*.*.1

================================================================

root@mysql1:/mnt/TEST# ./mysqlmonitoragent-2.3.12.2174-linux-glibc2.3-x86-64bit-installer.bin --mode text

Language Selection

Please select the installation language

[1] English - English

[2] Japanese - ?¥訿

Please choose an option [1] : 1

----------------------------------------------------------------------------

Welcome to the MySQL Enterprise Monitor Agent Setup Wizard.

 ----------------------------------------------------------------------------

 ….

   

3. Monitor Agent 2 Install

-------------------

TEST-mysql2

*.*.*.2

================================================================

root@mysql2:/mnt/TEST# ./mysqlmonitoragent-2.3.12.2174-linux-glibc2.3-x86-64bit-installer.bin --mode text

Language Selection

   

Please select the installation language

[1] English - English

[2] Japanese - ?¥訿

Please choose an option [1] : 1

----------------------------------------------------------------------------

Welcome to the MySQL Enterprise Monitor Agent Setup Wizard.

----------------------------------------------------------------------------

Installation directory

   

[참고 사이트]

원본 위치 <http://dev.mysql.com/doc/mysql-monitor/2.3/en/mem-server-install-generic.html>


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,