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와 함께 살아가는 삶

,

기술사, 정보시스템 감리사 준비

   

1.정보시스템감리 정보수집

   1-1. 한국정보화진흥원

   

  • 한국정보화진흥원에는 NIA 감리지침 자료, 단계별 감리 양식 등의 유용한 자료가 공유됩니다.

   

   1-2. 국가법령정보센터

  • 법령(전자정부법->전자정부법 시행령)-> 고시(정보시스템 감리기준, 지침) -> 감리지침, 감리가이드 형태로 법령체계가 구성 되어 있음.

   

2.정보시스템 감리점검 체계

  • 점검프레임워크 v3.0을 바탕으로 정보시스템 감리를 진행함.

       

  • 각 단계별 상세 내역은 한국정보화진흥원에서 제공하는 정보시스템 감리 지침문서를 참고하여 진행하며 프로젝트 사업 범위, 사업비, 업무, 환경등에 따라서 정보시스템감리사의 재량 및 업무 협의에 따라 확인할 감리 점검 내역이 적절하게 변경되어 사용될 수 있음.

   

3.기술사, 정보시스템 감리사 공부방법들

3-1. 기술사, 정보시스템감리사 자격을 취득하기 위하여 대부분 진행하는 방법으로는 혼자서 공부하기 보다는 카페를 통하거나 자격증 취득 학원을 방문하여 단계별 교육을 받으며 준비함. (암기 + 토론)

  • 준비기간
    • 기술사 최소 6개월 이상 준비(개인 역량에 따라 차이가 있음)
    • 정보시스템감리사 최소 6개월 이상 준비(개인 역량에 따라 차이가 있음)

 

  • 기술사 시험 일정 및 응시 자격
    • 필기시험(하드웨어시스템, 소프트웨어시스템에 관한 분석, 설계 및 구현, 그밖에 컴퓨터 응용에 관한 내용 / 단답형 및 주관식 논술형, 매 교시당 100분, 총 400분 / 필기시험비 : 67,800원)
    • 면접시험(구술형 면접시험(30분정도) / 실기시험비: 87,100원)
    • 합격기준 : 필기 및 면접시험 100점 만점 중 60점 이상 ( 필기시험 합격 후 2년간 필기시험 면제)

         

         

     

  • 정보시스템감리사 시험 일정 및 응시자격
    • 필기시험(감리 및 사업 관리, 소프트웨어 공학, 데이터베이스론, 시스템 구조, 보안문제 / 객관식 120문제, 시험시간 120분 / 필기시험 135,000원)
    • 필기시험 합격기준: 고득점 순으로 40명 합격, 40점 미만은 과락, 상위 합격자 중, 동점자는 전원 합격
    • 면접전형 (합격여부에 따라 다음 단계로 진행, 1회에 한해 재시험 가능)
    • 이론교육 (합격여부에 따라 다음 단계로 진행, 1회에 한해 재시험 가능)
    • 실무교육 (합격여부에 따라 다음 단계로 진행, 1회에 한해 재시험 가능)
    • 감리사 자격증 교부

         

 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



Source 비교 S/W: Beyond Compare 활용

    • IT 업종에서 개발 및 SQL Source가 많아지게 되는데 각 Source의 비교를 통하여 데이터를 찾거나 수정하고 정리할 경우에 유용하게 사용할 수 있다.

   

 1. beyond Compare

http://software.naver.com/software/summary.nhn?softwareId=MFS_100881

    • 네이버에서 검색을 통하여 손 쉽게 해당 SW를 다운 받을 수 있다.

         

 2. beyond Compare 주요 기능

    • Folder Compare, Text Compare, Data Compare 등등 다양한 형태로 데이터를 비교해주는 기능을 가지고 있다.

   

Folder Compare

    • Folder Tree를 비교하여 중복되는 내역이 없는지 확인하여 백업 시에 불피룡한 Folder 및 파일을 비교하여 정리할 수 있다.

         

Text Compare

    • 주로 많이 사용하는 기능으로는 Text Compare로 2개의 문서의 내용을 비교하여 다른 부분을 찾아 빨간색으로 표기해 준다.

         

    • 같은 데이터만 보기

         

    • 다른 데이터만 보기

         

    • 왼쪽 데이터를 기준으로 오른쪽 데이터를 변경하여 동일하게 맞추어 주는 기능



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle 서비스지원(SR) 신청 방법

   - Oracle DB를 지원하다 보면 다양한 에러와 만나고 해결하는 과정을 겪게 된다. 이 과정에서 Ora-600, Ora-7445와 같은 에러가 발생되거나 정확한 원인 및 해결방법에 대하여 가이드 받고자 할 때 SR을 요청하며 신속한 처리과정으로 많은 도움이 된다.


 1. Oracle Support 로그인

https://support.oracle.com

   

 2. 서비스 요청 진행

    • SR은 라이선스를 구매한 고객이 직접 요청하는 것이 가장 빠른 답변을 얻을 수 있기 때문에 고객의 ID로 진행하거나 "내 계정 => 설정에서 고객 지원번호를 Access 받아 진행하는 것이 좋다.

         

 3. SR 요청 진행

    • 라이선스를 구매한 고객이나 인증요청을 수락된다면 아래 네모칸에 SR 생성 버튼이 생성된다.
    • 그 아래 일반 SR생성으로 진행하게 될 경우에 답변이 많이 늦기 때문에 추천하지는 않지만 테스트로 진행해보는 것도 좋을 것 같다.

   

    • SR 생성을 진행하게 되면 1. 문제에 대한 요약 및 상세 내역을 작성하게 되고, 2. 현재 DB 버전 및 SR 지원 종류(복구, 설치, 장애지원 등)을 선택하여 진행하면 된다.
    • 진행 하는 중간에 공식문서 가이드와 추가 파일 첨부를 요청하지만 모두 다 첨부하면 좋고 그렇지 않다고 해도 다음으로 진행하면 된다.
    • SR에 따른 진행에 있어 필요한 부분이 있으면 Oracle에서 필요한 내역에 대한 것들을 보내달라고 답변이 오며 그에 맞추어 정보를 주면서 진행하면 된다.
    • 추가적으로 SR 담당 엔지니어와 연락할 경우에 1588-8501을 통하여 진행(한국어 지원, SR 번호 필요)하면 된다.

         



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



IBM SPSS Statistics 22 Installation on Windows7 32bit

   

 1. 설치 파일 다운로드

http://www-03.ibm.com/software/products/ko/spss-statistics?cmp=c3310&ct=c33108mw&cr=google&cm=k&csot=-&ccy=-&cpb=-&cd=-&ck=c33108mw004&S_TACT=C33108MW

   

  • IBM SPSS Statistics은 직관적으로 Data를 분석하기 위하여 나온 SW로 R 보다 처음 데이터 분석을 접하는 사용자에게는 쉽게 다가갈 수 있다.
  • 하지만 추후 DB 연동과 Web 연동과 같은 부과적인 기능을 확장할 때에 제약사항이 많이 있으며, R에 비해서는 확장성이 낮다고 할 수 있다.
  • IBM SPSS Statistics을 15일 평가판으로 다운로드가 가능하며 일자가 끝나면 자동으로 SW실행이 되지 않는다.

       

       

   

 2. 설치 진행

  • 설치 파일 : SPSS_Statistics_22_win32_.exe, SPSS_Statistics_22_win64_.exe
  • Windows7에 설치를 진행할 것이며 진행에 있어 어려운 점이 없을 것이다.

   

   

   

   

   

   

   

   

  • JAWS 설치 선택

       

       

  • 설치 선택

       

       

       

       

       

       

  • 확인을 누르면 아래와 같은 제품 인증 창이 실행된다.
  • 라이선스가 없을 경우에 임시 사용으로 선택하여 사용하면 된다.

       

       

  • 라이선스 인증을 하게 될 경우에 아래와 같은 형태로 진행된다.

       

       

       

       

 3. IBM SPSS Statistics 실행

  • 시작에서 IBM SPSS Statistics를 확인해 보면 실행 파일이 있으며 클릭을 통하여 실행 하자.

       

       

       

       

[참고 자료 및 사이트]

http://www-03.ibm.com/software/products/ko/spss-statistics?cmp=c3310&ct=c33108mw&cr=google&cm=k&csot=-&ccy=-&cpb=-&cd=-&ck=c33108mw004&S_TACT=C33108MW

https://www.youtube.com/playlist?list=PLsri7w6p16vuIphjhykx6UwOb6ICK0HVi

http://statis.kr/statis/bbs/register.php

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



InnoDB Storage Engine Architecture

   

1.InnoDB Storage Engine 기본 기능

프라이머리 키에 의한 클러스터링

InnoDB의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링 되어 저장된다.

즉 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이며, 이로 인해 프라이머리 키에 의한 레인지 스캔은 상당히 빨리 처리될 수 있다. 결론적으로 쿼리의 실행 계획에서 프라이머리 키는 기본적으로 다른 보조 인덱스에 비해 비중이 높게 설정(쿼리의 실행 계획에서 다른 보조 인덱스보다 프라이머리 키를 선택될 확률이 높음)된다.

잠금이 필요 없는 일관된 읽기(Non-locking consistent read)

MVCC(Multi Version Concurrency Control)라는 기술을 이용해 락을 걸지 않고 읽기 작업을 수행(Undo 활용)

외래 키 지원

MyISAM이나 Memory 테이블에서는 사용할 수 없다.

부모, 자식 테이블 간에 데이터 Check하는 작업으로 인하여 락, 데드락이 발생될 때가 많다.

자동 데드락 감지

그래프 기반의 데드락 체크 방식을 사용하기 때문에 데드락이 발생함과 동시에 바로 감지되고, 감지된 데드락은 관련 트랙잭션 중에서 Rollback이 가장 용이한 트랜잭션을 자동적으로 강제 종료해 버린다. => 실제로는 완벽하지는 않을 듯.

자동화된 장애 복구

Mysql서버가 시작될 때, 완료되지 못한 트랜잭션이나 디스크에 일부만 기록된 데이터 페이지(Partial Write)등에 대한 일련의 복구 작업이 자동으로 진행된다. (SMON,PMON과 비슷한 역할을 내역이 있는 듯)

오라클의 아키텍처 적용

Oracle DBMS와 비슷한 부분이 많다.(UNDO, SYSTEM TBS, TBS 등)

   

   

2.InnoDB Architecture

Oracle VS MySQL

  • Oracle과 흡사한 형태이지만 MySQL은 Storage의 선택에 따라 세부 구조가 달라진다. 주로 RDBMS로 InnoDB가 사용되는데 Oracle 구조와 비슷한 형태인 것을 확인할 수 있다. (아래 상세 구성도 확인)

   

MySQL InnoDB 상세구조

1) InnoDB 전체 구성도

  • 사용자는 mysqld를 통하여 InnoDB에 접근하게 되며 Buffer Pool, Storage의 Access를 통하여 RDBMS의 Transaction이 발생됩니다.

 

   

2) Buffer Pool & 기타 Caching 영역

  • Buffer Pool

    가장 핵심적인 부분으로 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간 MyISAM 키 캐시가 인덱스의 캐시만을 주로 처리하는데 비해 InnoDB의 버퍼 풀은 데이터와 인덱스 모두 캐시하고 쓰기 버퍼링의 역할까지 모두 처리함.

    Innodb_buffer_pool_size 설정 중요

    OS를 고려하여 50~80%수중으로 메모리 크기 설정

    Oracle과 비슷하게 바로 변경된 사항에 대하여 디스크에 반영하지 않고 메모리에만 변경를 먼저 변경한 뒤, 디스크에 기록되지 않는 변경된 데이터를 가지고 있다(더티 페이지)

    체크포인트가 발생되면 Write 스레드가 필요한 만큼 디스크로 기록 진행

    Oracle Buffer Cache 영역과 비슷한 기능

       

  • Undo log

    트랜잭션의 롤백 대비용

    트랜잭션의 격리 수준을 유지하면서 높은 동시성을 제공하는 데 사용된다.

    Oracle 과 다르게 별도의 TBS가 아닌 System TBS에서 관리하는 것으로 구조상으로는 확인됩니다.

    Oracle UNDO TBS 와 비슷한 기능

       

  • Insert Buffer

    Data Insert, Update에 따른 변경작업이 발생될 때 인덱스에도 해당 내역을 반영해야 하는데 해당 테이블에 인덱스가 많다면, 이 작업 시 랜덤하게 디스크를 읽은 작업을 하면서 상당히 많은 자원을 소모하기 때문에 별도의 Insert Buffer공간(임시공간)을 만들어 성능 향상

    Innodb_change_buffering 파라미터로 설정

    MySQL 5.5이전 버전은 Insert까지만 지원, 이후에는 Insert, Delete로 인해 키를 추가하거나 삭제하는 작업에 대해서도 버퍼링이 될 수 있도록 개선 => Update의 경우는 확인이 필요할 듯.

    0.인덱스 페이지가 버퍼 풀에 있으면 바로 업데이트 수행

    1. 임시 공간(Insert Buffer)에 필요한 데이터를 디스크에서 읽어 와서 데이터 변경작업 진행

    2. 인덱스 레코드가 조작된 조각은 이후 백그라운드 스레드에 의해 병합되는데 이 스레드를 버퍼 머지 스레드라고 한다.

    3. 완료 (Oracle의 PGA + TEMP와 비슷한 기능)

   

3) Log Buffer & Redo Log

   

  • Commit시 바로 Disk 에 변경된 데이터 조작을 하지않고 ACID(원자성,일관성,격리성,데이터 유지)를 보장하면서 체크포인트가 발생할 경우 일괄적으로 반영하는 형태로 부하를 줄이기 위한 기능
  • 자동화된 자동 복구시 해당 Redo log를 확인하여 복구 진행
  • 로그 버퍼의 크기는 일반적으로 1~8MB 수전으로 설정 (단, BLOB이나 TEXT와 같은 큰데이터를 자주 변경한다면 더 크게 설정하는 것이 좋다)
  • Oracle Redo log file과 log buffer 영역과 비슷한 기능

   

3. MySQL 기본 명령어

MySQL START / STOP

[root@localhost mysql]# /etc/init.d/mysqld stop

Stopping mysqld: [ OK ]

[root@localhost mysql]# /etc/init.d/mysqld start

   

MySQL Password 변경 및 Login

[root@localhost mysql]# mysqladmin -u root password 새비밀번호

[root@localhost mysql]# mysql -uroot -p => 패스워드 입력

   

MySQL 기본 정보 검색

show databases;

show variables like 'have_innodb';

select version();

show engines;

select @@innodb_version;

show plugins;

show variables where Variable_Name LIKE "innodb_buffer%";

show variables where Variable_Name LIKE "innodb_change_buffering%";

show variables where Variable_Name LIKE "innodb_log%";

show variables where Variable_Name LIKE "%innodb_write_io_threads%";

   

SHOW VARIABLES WHERE Variable_Name LIKE "%dir";

/var/lib/mysql

mysql 8350 8143 0 03:25 pts/1 00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock

   

[접속 IP 권한 할당]

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'ip주소' IDENTIFIED BY '비밀번호'' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO root@192.168.22.123 IDENTIFIED BY 'mysql' WITH GRANT OPTION;

   

mysql> show information_schema

mysql> SHOW TABLES;

mysql> DESC 테이블이름;

mysql> DESCRIBE 테이블이름;

mysql> EXPLAIN 테이블이름;

  

 

MySQL 기본 Dictionary 조회

[현재 DB 전체 Size 확인]

mysql> SELECT table_schema "Database Name",

-> SUM(data_length + index_length) / 1024 / 1024 "Size(MB)"

-> FROM information_schema.TABLES

-> GROUP BY table_schema;

+--------------------+------------+

| Database Name | Size(MB) |

+--------------------+------------+

| information_schema | 0.00390625 |

| mysql | 0.52499485 |

+--------------------+------------+

2 rows in set (0.04 sec)

   

mysql>

   

   

mysql> SELECT

-> count(*) NUM_OF_TABLE,

-> table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows,

-> concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,

-> concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,

-> concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,

-> round(sum(index_length)/sum(data_length),2) idxfrac

-> FROM information_schema.TABLES

-> GROUP BY table_schema

-> ORDER BY sum(data_length+index_length) DESC LIMIT 10;

+--------------+--------------------+-------+-------+-------+------------+---------+

| NUM_OF_TABLE | table_schema | rows | DATA | idx | total_size | idxfrac |

+--------------+--------------------+-------+-------+-------+------------+---------+

| 18 | mysql | 0.00M | 0.00G | 0.00G | 0.00G | 0.14 |

| 17 | information_schema | NULL | 0.00G | 0.00G | 0.00G | NULL |

+--------------+--------------------+-------+-------+-------+------------+---------+

2 rows in set (0.00 sec)

   

mysql>

[특정 Table 사이즈 확인]

mysql> SELECT

-> concat(table_schema,'.',table_name),

-> concat(round(table_rows/1000000,2),'M') rows,

-> concat(round(data_length/(1024*1024*1024),2),'G') DATA,

-> concat(round(index_length/(1024*1024*1024),2),'G') idx,

-> concat(round((data_length+index_length)/(1024*1024*1024),2),'G') total_size,

-> round(index_length/data_length,2) idxfrac

-> FROM information_schema.TABLES

-> where table_name = 'events_statements_current' ;

+-------------------------------------+-------+-------+-------+------------+---------+

| concat(table_schema,'.',table_name) | rows | DATA | idx | total_size | idxfrac |

+-------------------------------------+-------+-------+-------+------------+---------+

| mysql.TEST | 0.00M | 0.00G | 0.00G | 0.00G | 93.09 |

+-------------------------------------+-------+-------+-------+------------+---------+

1 row in set (0.00 sec)

[특정 스키마 테이블 정보 확인]

mysql> SELECT table_name, table_type, engine

-> FROM information_schema.tables

-> WHERE table_schema = 'mysql'

-> ORDER BY table_name DESC;

+---------------------------+------------+--------+

| table_name | table_type | engine |

+---------------------------+------------+--------+

| user | BASE TABLE | MyISAM |

| time_zone_transition_type | BASE TABLE | MyISAM |

| time_zone_transition | BASE TABLE | MyISAM |

| time_zone_name | BASE TABLE | MyISAM |

| time_zone_leap_second | BASE TABLE | MyISAM |

| time_zone | BASE TABLE | MyISAM |

| TEST | BASE TABLE | MyISAM |

| tables_priv | BASE TABLE | MyISAM |

| procs_priv | BASE TABLE | MyISAM |

| proc | BASE TABLE | MyISAM |

| host | BASE TABLE | MyISAM |

| help_topic | BASE TABLE | MyISAM |

| help_relation | BASE TABLE | MyISAM |

| help_keyword | BASE TABLE | MyISAM |

| help_category | BASE TABLE | MyISAM |

| func | BASE TABLE | MyISAM |

| db | BASE TABLE | MyISAM |

| columns_priv | BASE TABLE | MyISAM |

+---------------------------+------------+--------+

18 rows in set (0.00 sec)

[성능 분석 Setting]

SHOW VARIABLES LIKE 'perf%';

+---------------------------------------------------+---------+

| Variable_name | Value |

+---------------------------------------------------+---------+

| performance_schema | OFF |

   

/etc/my.cnf

UPDATE performance_schema.setup_consumers SET enabled = 'YES' WHERE name like 'events_waits%';

   

SELECT * FROM INFORMATION_SCHEMA.ENGINES

WHERE ENGINE='PERFORMANCE_SCHEMA'\G;

SHOW ENGINES\G;

   

[TOP 5 Wait EVENT]

select event_name, count_star, sum_timer_wait from performance_schema.

events_waits_summary_global_by_event_name where event_name like

'wait/synch/mutex/innodb%' and count_star > 0 order by sum_timer_wait desc limit 5;

   

[Slow SQL 추출]

# vi /etc/my.cnf

[mysqld]

log-slow-queries = /usr/local/mysql/var/mysql-slow.log

long_query_time = 3

위 내용은 쿼리 타임이 '3초'를 초과 하는 쿼리에 대해 /usr/local/mysql/var/mysql-slow.log파일에 기록 한다는 뜻입니다.

my.cnf에 설정 및 mysql을 Restart 한 뒤 운영 하다 보면 아래와 같이 slow-query-log가 남게 됩니다.

[mysql-slow.log파일]

use iamroot;

select max(wr_comment) as max_comment from g4_write_ja

where wr_parent = '92' and wr_is_comment = 1;

# Time: 120809 16:08:15

# User@Host: iamroot[iamroot] @ []

# Query_time: 253 Lock_time: 0 Rows_sent: 1 Rows_examined: 419562

select max(wr_comment) as max_comment from test1

where wr_parent = '92' and wr_is_comment = 1;

# Time: 120809 16:08:17

# User@Host: iamroot[iamroot] @ []

# Query_time: 94 Lock_time: 0 Rows_sent: 0 Rows_examined: 640675

use iamroot;

SELECT count(*) from emp where boardcode=1045552594 and boardidx=274;

# Time: 120809 16:08:23

# User@Host: iamroot[iamroot] @ []

# Query_time: 183 Lock_time: 0 Rows_sent: 1 Rows_examined: 268576

   

[로그 내용 중 각 항목에 대한 설명]

Query_time : 쿼리 수행시간

Lock_time : 테이블 LOCK 이 걸린시간

Row_sent : 쿼리 처리 결과 ROW 수

Rows_examined : 쿼리 처리 대상의 ROW 수

   

[참고 자료 및 사이트]

https://www.mysql.com/

http://www.oracle.com/technetwork/database/mysql/index.html

http://www.slideshare.net/morgo/inno-db-presentation

Real MySQL Book

   


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,