테스트 하려 mariadb를 설치하려다 기회가 온김에 정리해 본다.



우선 Mariadb 홈페이지에 가서 자신의 서버에 맞는 Binary 버젼을 받는다.

ps. 순서는 Mysql도 같음으로 Mysql을 설치하고 싶다면 받는것만 Mysql을 받으면 OK

//주소는 버전과 환경에 따라 달라지니 그대로 하면 안됨

# wget -O mariadb-10.0.14-linux-x86_64.tar.gz https://downloads.mariadb.org/f/mariadb-10.0.14/bintar-linux-x86_64/mariadb-10.0.14-linux-x86_64.tar.gz/from/http%3A/ftp.kaist.ac.kr/mariadb?serve



다운로드 받아 졌으면 적당한 곳에 압축을 풀고 보통 많이들 하는 경로(/usr/local/mysql)로 심볼릭 링크를 걸어주자.

(추후 버젼 업그래이드시 심볼릭 링크만 바꿔주면 되는 이점이 있다.)

# tar -xzf mariadb-10.0.14-linux-x86_64.tar.gz

# ln -s /home/Mariadb/mariadb-10.0.14-linux-x86_64 /usr/local/mysql




Mariadb를 서비스 할 계정을 생성하고 권한을 준다.

# groupadd mariadb

# useradd -d /home/Mariadb -g mariadb -p mariadb -s /bin/bash mariadb

# chown -R mariadb.mariadb mariadb-10.0.14-linux-x86_64



my.cnf를 생성하기 위해 suport-file에서 적당한 파일을 복사하고 경로 및 서비스계정 등 자신의 상황에 맞게 옵션을 수정하자.

# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

# vi /etc/my.cnf



기본 디비 생성

ps. /usr/local/mysql에서 실행하지 않으면 에러가 발생하며 basedir, datadir 등의 옵션도 있으니 참고

# cd /usr/local/mysql

# ./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mariadb



자동 시작 할 수 있도록 서비스를 등록하고

//서비스에 등록될 파일 복사

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld


//데비안

# update-rc.d mysqld defaults


//레드햇

# chkconfig –add /etc/init.d/mysqld



서비스 시작

# service mysqld start




/etc/profile 혹은 개인의 profile에

PATH=$PATH:/usr/local/mysql/bin

문구를 추가해 주면 mysql 문장으로 접속이 가능하다



이제 암호 설정 등 이것 저것 설정하고 사용하면 된다.






ps. 라이브러리가 없다는 메시지를 만났을 경우 데비안 기준

//libstdc++.so.6

# apt-get install lib32stdc++6

//libaio.so.1

# apt-get install libaio1


Posted by Mr.Jo :

리눅스 머신에서 파일시스템을 생성하려 할 경우 다음과 같이 "Permission denied" 에러나 날 경우가 있다

# mkfs -t ext4 /dev/sda1

mkfs.ext4: Permission denied


다른 패키지의 리눅스에서는 잘 쓰던 명령어였는데 원인을 찾을 수 없어서 고민하던 중 /sbin아래서 mke2fs라는 명령어가 존재함을 찾아내서 실행해 보니

# mke2fs -t ext4 /dev/sda1

mke2fs 1.42.11 (09-Jul-2014)

Creating filesystem with 488378368 4k blocks and 122101760 inodes

Filesystem UUID: db8b2a2a-b725-40f8-b956-13fc7ae3f5f1

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

        102400000, 214990848


Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information:

done


아직 정확한 원인을 모르겠으나 지금 짐작하기로는 패키지별로 다른 무언가가 있지 않을까 생각된다.



Posted by Mr.Jo :

우선 시스템 상태, 측 CPU 사용률, IO등을 웹으로 자동화 하여 모니터링 하기 위해서는

iostat, vmstat, /proc/stat 등 유틸을 이용하면 되지만

이를 웹페이지 등으로 만들어 외부에서 모니터링 하기 위해서는 텍스트에서 특정 수치만을 갖고 와야 하는 경우가 생긴다.


cpu사용률을 구하기 위한 예를 작성해 보면


iostat의 -c옵션으로 가져 올 수 있는데

# iostat -c

Linux 3.13.0-24-generic (test)         09/01/2014      _x86_64_        (1 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           0.59   90.03    9.19    0.00    0.00    0.19


위 값에서 숫자만을 분리해 내야 한다

tail 명령어를 사용하면 특정 줄을 가져 올 수 있으니 사용하면

# iostat -c | tail -2

           0.59   90.03    9.19    0.00    0.00    0.19


여기서 1번째 0.59만을 가져오기 위해 awk를 사용하자

# iostat -c | tail -2 | awk '{print $1}'

0.59


이런 식으로 쉘에 변수 할당 혹은 프로그램에서 외부 실행 후 변수에 값 할당으로 원하는 결과를 얻을 수 있을 것이다.


Posted by Mr.Jo :

db2 ver 9 이후부터는 lobs 혹은 lobfile을 지정 할 경우 자동으로 lobsinfile 옵션이 자동으로 활성화 되지만


db2 ver 8 이전에는 lobsinfile을 지정하지 않을 경우 lobs 및 lobfile 옵션이 적용되지 않아서 약 32KB 의 데이터만 받아짐



Posted by Mr.Jo :

보통 멀티코어 시스템을 갖고 있을텐데

그냥 make 명령으로 컴파일 할 경우 작업을 한번에 한개만 사용하게 된다

make -j4

처럼 j뒤 숫자를 코어수에 맞게 적당히 할당하면 컴파일 속도를 올릴 수 있다


Usage: make [options] [target] ...

Options:

  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no arg.

....

Posted by Mr.Jo :

Mysql과 MariaDB에 핫백업(Online Backup)을 지원하는 툴 중 무료에 쓸만한 툴은 Percona의 Xtrabackup이 제일 유명할 것이다.

하지만 한글로 정리된 자료 중 예와 함께 정리된 자료를 찾기 힘들어 이렇게 정리한다.




1) 백업 수행 계정

우선 백업하는 OS 계정은 root 혹은 mysql로 하는 것이 정신 건강상 편하다(보안을 위해 가능한 mysql계정으로)

설치 방법에 따라 다르지만 ubuntu에서 apt-get으로 설치했다고 하면 아마도 다음과 같이 소유권이 생성되어 있을 것이다.



여기서 소유권이 모두 접근 가능해야 하기 때문에 권한 설정을 잘 해 놓아야 하기 때문에 다른계정은 설정이 쉽지 않다.

(dba그룹을 만들고 참여하게 한다든지 방법이 없지는 않다.)




2) 모든 DB 백업

ex)

innobackupex  <백업경로>



위와 같이 하면 백업경로 아래에 시간 폴더가 생성되며 백업이 저장된다

(os계정 로그인에 관리자 권한이 없다면 "--user <관리자계정> --password <암호>"를 추가하자)




3) 로그 백업 (로그를 기존 백업에 수정된 내용이 반영됨)


ex)

innobackupex --apply-log <백업경로>/<시각폴더>




4) 모든 DB 복원


데이터 폴더 이름을 바꿔놓고(만약을 위해) 새로 생성후(빈 폴더) 권한을 바꿔주는 것이 포인트!

ex)

service mysql stop
mv /var/lib/mysql /var/lib/mysql_old
mkdir /var/lib/mysql
chown mysql:mysql /var/lib/mysql
innobackupex --copy-back <백업경로>
chown -R mysql:mysql /var/lib/mysql
service mysql start




5) 특정 DB복원


Database파일이 손상되었다면 그대로, Drop 하였다면 같은 이름으로 생성한(show databases에서 보이도록) 상태에서


ex)

service mysql stop
mv /var/lib/mysql/<대상디비명> /var/lib/mysql/<대상디비명>_old
cp -r <백업경로>/<대상디비명> /var/lib/mysql/<대상디비명>
chown -R mysql:mysql /var/lib/mysql/<대상디비명>
service mysql start

아마 여기까지 했다면 Database에 접속은 되지만 Table Select가 안될 것이다

찾아보면 서버에서 갖고 있는 테이블 정보와 매칭이 안되서라고 하니 다음을 수행시키자


확인해 보면 아마 복원 되어 있을 것이다




6) 특정 Table 복원


맹락은 특정 Database복원과 같다

show tables로 보이도록 만들어 두고


ex)

service mysql stop
mv /var/lib/mysql/<대상디비명>/<대상테이블명> /var/lib/mysql/<대상디비명>/<대상테이블명>_old
cp -r <백업경로>/<대상디비명>/<대상테이블명> /var/lib/mysql/<대상디비명>/<대상테이블명>
chown -R mysql:mysql /var/lib/mysql/<대상디비명>/<대상테이블명>
service mysql start


아마 여기까지 했다면 Database에 접속은 되지만 Table Select가 안될 것이다



mysqlcheck --all-databases


확인해 보면 아마 복원 되어 있을 것이다



'프로그래밍 > Mysql\정보' 카테고리의 다른 글

[MySQL] Stored Procedure 와 Compile  (1) 2014.10.23
[MySQL] Replication (복제) 동기화 문제  (0) 2014.10.23
Posted by Mr.Jo :


작동버젼 : v10.0
사용방법 : 쉘에서 실행
주의사항 : 스키마 확인 필요
설      명 : 테이블 조작 등으로 팬딩된 재구성이 필요한 테이블 찾기



db2 "SELECT TABNAME FROM SYSCAT.TABLES WHERE STATUS='C'"
or
db2 "SELECT 'DB2 SET INTEGRITY FOR ' || TABNAME || ' ALL IMMEDIATE UNCHECKED' FROM SYSCAT.TABLES WHERE STATUS='C'"



Posted by Mr.Jo :

출처 : http://www-01.ibm.com/support/docview.wss?uid=swg1IZ26799


요약하면 db2diag.log에 메모리 부족 에러 뜨면서 복원이 안될텐데

해결방법은 같은 이름의 디비를 원하는 경로에 생성

DBHEAP, LOGBUFSZ 값을 동일하게 셋팅 후

RESTORE옵션에서 REPLACE EXISTING 을 붙여서 치환하면

문제 해결됨



사용된 스크립트

#같은 이름의 DB생성(대상서버)

db2 create database


#설정값 확인(원본서버)

db2 get db cfg for sample | grep DBHEAP

db2 get db cfg for sample | grep LOGBUFSZ


#설정값 대입(대상서버)

db2 update db cfg using DBHEAP <원본값>

db2 update db cfg using LOGBUFSZ <원본값>


#복원(대상서버)

db2 restore database <db명> FROM <절대경로> REPLACE EXISTING

Posted by Mr.Jo :

돼지 날다

2012. 12. 17. 14:00 from 사진/사진\스넵



'사진 > 사진\스넵' 카테고리의 다른 글

온기의 시작  (0) 2012.12.16
대화  (2) 2012.12.15
시간이 흐름을 아쉬워하며...  (0) 2012.12.11
폭풍전야  (0) 2012.12.10
잠시 쉬었다 가세  (0) 2012.12.09
Posted by Mr.Jo :

온기의 시작

2012. 12. 16. 14:00 from 사진/사진\스넵


'사진 > 사진\스넵' 카테고리의 다른 글

돼지 날다  (2) 2012.12.17
대화  (2) 2012.12.15
시간이 흐름을 아쉬워하며...  (0) 2012.12.11
폭풍전야  (0) 2012.12.10
잠시 쉬었다 가세  (0) 2012.12.09
Posted by Mr.Jo :