서버구축,나스구축,서버관리,윈도우서버,리눅스서버,서버관리

Posted
Filed under 프로그래밍/MY-SQL

mysql의 스토리지 엔진 중(MyISAM, InnoDB) InnoDB에 관련 된 데이터 복구 방법에 대한 설명이다.
본래 InnoDB는 Mysql이 손상되어도 .frm 파일과 ibdata1파일만 존재하여도 복구가 가능하다.(이 방법은 아주 간단하므로 설명 제외)

이번에 설명할 내용은 ibdata1 인 데이터 파일이 손실될 경우에 복구하는 방법에 대해 설명이다.
Mysql은 정상 시작시 파일의 유무 및 다른 파일등을 검사한다.
하지만 파일이 손상되었을 경우 시작하자마자 서비스를 자체적으로 중단한다.
이에 InnoDB는 파일의 검사 등을 하지 않고 강제로 서비스를 시작하여 복구하는 모드가 따로 존재한다.
윈도우 기준으로 Mysql 설치 폴더/my.ini 이하 my.ini 파일에 innodb_force_recovery라는 명령어를 추가 시켜 주고 서비스를 재시작 하면 강제 복구 모드로 설정된다.
예) innodb_force_recovery = 1
숫자는 1에서 6까지 사용 가능하며, 1이 가장 안전하고 좋은 복구 모드이고, 1에서 복구가 안된다면 1~6까지 순차적으로 값을 바꿔가야 한다.

====================================================================
1 (SRV_FORCE_IGNORE_CORRUPT)

서버가 깨진 페이지를 발견한다고 하더라도 계속 구동하도록 만든다. Try to make SELECT * FROM tbl_name로 하여금 깨진 인덱스 레코드와 페이지를 건너 띄도록 만들며, 이렇게 하면 테이블을 덤핑하는데 도움이 된다. 
•2 (SRV_FORCE_NO_BACKGROUND)

메인 쓰레드가 구동되지 못하도록 한다. 만일 퍼지 연산 (purge operation)이 진행되는 동안 크래시가 발생한다면, 이 복구 값은 퍼지 연산이 실행되는 것을 막게 된다. 
•3 (SRV_FORCE_NO_TRX_UNDO)

복구 다음에 트랜젝션 롤백을 실행하지 않는다. 
•4 (SRV_FORCE_NO_IBUF_MERGE)

삽입 버퍼 병합 연산 (insert buffer merge operations)까지 금지한다. 만일 이 연산이 크래시의 원인이 된다면, 그것을 실행하지 않도록 한다. 테이블 통계값을 계산하지 않도록 한다. 
•5 (SRV_FORCE_NO_UNDO_LOG_SCAN)

데이터베이스를 시작할 때 운도 로그 (undo log)를 검사하지 않는다: InnoDB는 완벽하지 않은 트랜젝션도 실행된 것으로 다루게 된다. 
•6 (SRV_FORCE_NO_LOG_REDO)

복구 연결에서 로그 롤-포워드 (roll-forward)를 실행하지 않는다.
====================================================================

위와 같이 프로그램을 시작하면 서비스가 정상적으로 시작하게 되며 그후에 dump로 파일을 백업 시킬 수 있다.
덤프 명령어는 Mysql설치폴더/bin에서 mysqldump -u계정명 -p 데이터베이스명 > 백업할파일.sql 로 하면 백업이 되고
반대로 mysqldump -a -u계정명 -p 데이터베이스명 < 백업할파일.sql 이와 같이 하면 복원이 된다.

만약 1이 아닌 복구 모드로 실행시 파일이 전체적으로 백업되지 않았을 경우 복구 모드에 우선순위를 높여 select 명령어로 검사후 csv파일로 저장
저장 후 벌크 인서트로 파일 다시 불러옴
벌크는 http://kr.blog.yahoo.com/freud19390723/79 를 참고

복원이 완료 된 후에는 innodb_force_recovery = 1를 삭제후 프로그램 재시작을 한다.

간단히 설명하자면 파일이 손상된 경우
1. 서비스 시작 중지
2. my.ini파일에 innodb_force_recovery = 1~6 값 설정 후 저장
3. 서비스 시작
4. 서비스 시작시 정상 동작이면 6. 아니면 5.
5. 정상 동작이 아닐경우 다른 복구 모드를 선택하여 서비스 시작
6. 정상 동작일 경우 mysqldump로 파일 백업
7. 높은 우선순위로 변경하여 파일로 저장후 벌크 인서트로 다시 넣음
8. 복구 모드 삭제 후 서비스 재시작

2017/06/28 16:52 2017/06/28 16:52
Posted
Filed under 프로그래밍/MY-SQL

1. 데이터 베이스 만들기

create database db명;

use db명;

 

 

 

2. 테이블 만들기

 

① 기본형

create table 테이블명(

컬럼1 데이터형,

컬럼2 데이터형,

.....

primary key(컬럼명)

)

 

② 확장형

create table 테이블명(

컬럼1 데이터형 not null auto_increment default 0 first,

컬럼2 데이터형,

.....

primary key(컬럼명)

)

 

 

 

3. 테이블에 데이터 삽입

insert into 테이블명 (컬럼1, 컬럼2, 컬럼3...) values (데이터1, 데이터2, 데이터3...);

 

 

 

4. 데이터 추출

select * from 테이블명 where 조건 order by 컬럼명 desc/asc;

조건1 -> 컬럼명 = 데이터

조건2 -> 컬럼명 != 데이터

조건3 -> 컬럼명 = 데이터 and 컬럼명 = 데이터

조건4 -> 컬럼명 = 데이터 or 컬럼명 = 데이터

 

 

 

5. 데이터 값 수정

update 테이블명 set 컬럼명='값' where 조건;

 

 

 

6. 데이터 수정

alter table 테이블명 add column 컬럼명 데이터형,...; -> 컬럼 삽입

alter table 테이블명 modify column 컬럼명 데이터형,...; -> 컬럼 수정

alter table 테이블명 drop column 컬럼명 데이터형,...; -> 컬럼 삭제

alter table 테이블명 change column 원래컬럼명 바꿀컬럼명,...; ->컬럼명 변경

 

 

 

7. 테이블 구조 보기

describe 테이블명;

 

 

 

8. 조인(2개 이상의 테이블에서 조건에 맞는 데이터 추출하기)

select table1.컬럼명, table2.컬럼명

from table1

inner join table2 (using(두 테이블에서 공통된 컬럼))

where 조건

2015/11/05 09:48 2015/11/05 09:48
Posted
Filed under 프로그래밍/PHP

홈페이지 서버이전을 마쳤으나

네임서버 셋팅문제로 기존 서버로 계속 접속이 되어서

일단 구서버 접속시 신서버에 걸린 임시도메인으로 바로 포워딩시켜서

새로 셋팅된 서버에서 모든작업이 이루어 질수있게...

 

 

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

RewriteEngine on

rewritecond %{http_host} ^접속도메인 [nc]

rewriterule ^(.*)$ http://신서버도메인/$1 [r=301,nc] 

rewritecond %{http_host} ^www.접속도메인 [nc]

rewriterule ^(.*)$ http://신서버도메인/$1 [r=301,nc] 

2015/09/22 09:59 2015/09/22 09:59
Posted
Filed under 컴퓨터 상식

논리 파일시스템의 오류를 수정하는 체크디스크의 실행방법과

체크디스크에 대한 이해를 돕도록 안내하겠다.

   

   

<체크디스크(CHKDSK)란 무엇인가?>

체크디스크는 check disk의 약어로 마이크로소프트 윈도우 운영체제에 탑재된 명령어이다.

저장매체의 파일시스템의 무결성 상태를 점검하고 논리적 파일시스템 오류를 수정하는 역할을 한다.

   

<체크디스크(CHKDSK) 실행방법>

1. 실행창 (윈도우키 + R)을 열어 cmd 입력후 확인

2. chkdsk c: /f  입력후 Enter

3. 프로세스를 사용중 시스템이 다시 시작할때 검사 y 입력후 Enter

    권한이 없어 액세스가 거부된 경우에는 관리자모드에서 실행하면 된다.

   

상세설명: chkdsk는 체크디스크를 실행하라는 명령어, c:는 C:드라이브를 체크하라는 명령어, /f는 체크디스크의 기능 중 디스크에 있는

오류수정을 하라는 명령어만약 체크디스크를 실행할 드라이브가 c:가 아닌 경우 해당 드라이브를 입력해야 한다.

   

1. 실행창을 열어 cmd 입력한다.

 

 

2. chkdsk c: /f  입력했더니 충분한 권한이 없다고 나온다. 관리자 모드로 실행하지 않았기 때문에 나오는 메세지이다.


 

   

   

   

3. 명령프롬프트(관리자) 권한으로 들어간다. (윈도우키 + X) 

 

   

   

   

4. 관리자 권한의 명령 프롬프트창이 열린 상태에서 다시 chkdsk c: /f 입력후 엔터.

   C:드라이브 사용중이기 때문에 다시시작할때 검사해야 한다. y 입력후 엔터 / 재부팅하면 된다.

   

   

   

추가사항1: 다른 드라이브를 지정할 경우 드라이브명만 바꿔주면 된다.
 

   

   

   

추가사항2: 체크디스크의 명령어를 모두 보려면 chkdsk /? 입력하면 아래와 같이 상세하게 출력된다.

추가적으로 실행하려면 명령어를 입력하면 된다.  예) chkdsk c: /r

   

<체크디스크(CHKDSK)실행시 주의사항>

체크디스크는 논리적인 오류를 수정하는 명령어로 논리적인 문제를 해결할수 있다.

하지만, 디스크에 불량영역이 생겨서 오류가 발생되었다면 체크디스크는 불량영역을 더욱 증가시키게 된다.

불량영역의 증가는 기록된 데이터를 손상시킨다. 그러므로 다음 사항을 체크하여 실행하기 바란다.

   

1. 문제가 발생된 저장매체의 기록된 데이터의 중요도를 확인해야 한다. (데이터를 반드시 살려야 한다면 체크디스크는 위험할 수 있다)

2. 논리적인 오류가 아니더라도 체크디스크(CHKDSK)가 실행되는 경우가 많다. (체크디스크 시간이 시간이 매우 드딘 경우에는 중단해야 한다)

3. 블루스크린, 블랙스크린, PC다운증상, CRC오류, 파일복사느려지거나안됨, I/O에러, 액세스불가, 포맷메세지 등은 체크디스크 실행을 하지 않는 것이 좋다.

4. 시스템만 문제가 발생되어 데이터는 백업이 가능한 상태라면 반드시 중요데이터는 백업을 한 후에 체크디스크를 실행하는 것이 좋다.

   

디스크불량시 체크디스크의 위험성은 다음과 같다.

1. 체크디스크가 실행되는 동안 모든 데이터가 손실 위험에 노출된다.

2. 불량이 발생된 디스크의 장시간 디스크 구동은 복구불능 상태의 위험이 매우 높다.

3. 일부 불량영역이 발생된 경우 파일의 code값이 일부변경되어 복구시 어려움이 발생된다.

2015/08/27 14:42 2015/08/27 14:42

서버구축,나스구축,서버관리,윈도우서버,리눅스서버,서버관리

Posted
Filed under SERVER-OS/리눅스

웹호스팅에서 서브도메인을 별도로 VirtualHost 로 연결을 해드리지 않는 경우는 트래픽 관리가 되지 않기 때문입니다.

웹서버에서 트래픽을 제어하는 모듈은 아파치 설정에서 ServerName ( 도메인 ) 을 기준으로 제공하기 때문에 별도의 서브도메인은
할당하게 되면, 트래픽이 이중으로 발생이 되기 때문입니다.

그래서 아래의 방법으로 VirtualHost 에 설정된 여러개의 도메인 또는 서브도메인을 아래와 같이 사용하실수 있습니다.

.htaccess 파일을 www 디렉토리 아래에 두시고 아래와 같이 이용하시면 됩니다.

RewriteEngine On
RewriteBase /

# test1
RewriteCond $1 !^(test1)/
RewriteCond %{HTTP_HOST} ^test1\.ffhosting\.net
RewriteRule ^(.*)$ /test1/$1/ [L]

# test2
RewriteCond $1 !^(test2)/
RewriteCond %{HTTP_HOST} ^test2\.ffhosting\.net
RewriteRule ^(.*)$ /icarus/$1/ [L]

# test3
RewriteCond $1 !^(test3)/
RewriteCond %{HTTP_HOST} ^test3\.ffhosting\.net [NC]
RewriteRule ^(.*)$ /test3/$1 [L]

 

 

 

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

 

리스 서버 예제 입니다.
RewriteEngine on
RewriteCond  %{HTTP_HOST}            ^[^.]+\.abc\.com$
RewriteRule  ^(.+)                    %{HTTP_HOST}$1              [C] 
RewriteRule  ^([^.]+)\.neko\.kr(.*) /home/hosting/ID/subdomain/$1$2

구조는 aaa.abc.com 에 접속하면 subdomain/aaa 로 연결이 자동으로 됩니다.
즉 subdomain하위에 디렉토리를 생성하면 서브 도메인이 되도록 해뒀습니다.

 

 

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

 


경민님이 말씀하신 예제를

계정명/public_html/  아래에 .htaccess를 생성해야 되는지요?  아니면

계정명/public_html/subdomian/aaa 를 생성하면 자동으로 서브도메인 연결이 가능하게 되는지요?

계정명/public_html/subdomain/svn 으로 해봤지만 서브도메인 접속이 되지를 않아서요

2015/08/13 11:06 2015/08/13 11:06

서버구축,나스구축,서버관리,윈도우서버,리눅스서버,서버관리

Posted
Filed under SERVER-OS/리눅스

Cacti 네트워크 모니터링 소프트웨어로 쉬운 인터페이스와 플러그인 확장기능이 있어 많은 사람들이 이용하고 있는 서비스입니다.

MRTG, nagios 설정파일을 이리저리 만져야하지만 Cacti 경우 인터페이스에서 간단한 설정으로 모니터링 설정이 가능합니다.

Cacti 기본적으로는 그렇게 풍부한 기능을 가지고 있지 않습니다

하지만 PIA(Plugin Architecture) 패치를 통해서 플러그인을 사용할수 있고, 이러한 프로그인의 확장을 통해 nagios 버금가는 기능을 사용할 있습니다.

 

먼저Cacti  인터페이스를 지원하기 때문에 APM 필요로 합니다.

 

, 서비스 구축에 앞서 아래와 같은 패키지들이 서버에 설치되어있어야합니다

- apache2

- php5, php5-common, libapache2-mod-php5

- mysql-server, mysql-client, php5-mysql

- phpmyadmin

 

 

1. phpmyadmin 에 Cacti 데이터베이스 등록

 

apache2 mysql 서비스를 구동시킨 상태에서 phpadmin 접속합니다.

접속한 데이터베이스 탭에서 Cacti 데이터베이스를 utf8-bin 인코딩 방식으로 생성합니다.

 

 

 

2. 패키지설치

 

가능하면 apt-get update 한번 해주시고, 패키지 cacti / cacti-spine / snmpd 설치합니다.

 

 

 

Cacti 웹인터페이스를 구동할 웹서버를 선택합니다

APM 구동중이라면 apache2 선택합니다.

 

 

 

 

3. 설정파일 변경  [ /etc/snmp/snmpd.conf ]

 

 

수정

 

수정 - 15번째 줄을 주석처리 , 17번째 줄을 주석해제 합니다.

 

 

4. snmpd 재시작

 

 

5. Cacti 설치

 

브라우저에서 cacti 설치의 기본위치인 localhost/cacti/install 통해 cacti 설치를 진행합니다.

 

접속을 하면 다음과 같은화면이 나오면 정상입니다

 

 

 

 

 

 

6. Cacti 기본설정

 

Cacti 설치를 마치고 나면, User Login 화면이 뜹니다

기본 Login값은 ID : admin / Password : admin 입니다

 

로그인을 하고 나면 다음과 같은 admin PW 변경 페이지가 뜹니다.

 

변경 후에는 아래와 같이 index.php 파일이 나와야합니다.

 

 

이제, Cacti 서비스를 구동하기 위해 반드시 수정해야  몇가지 설정들을 수정하겠습니다.

 

General Configuration

- Setting

 

먼저, 좌측 리스트의 Setting  General 탭에 들어갑니다.

 

SNMP Version SNMP Community 아래와 같이 변경해주세요.

 

변경 , 스크롤을 내려 Save버튼을 눌러주세요!

 

다음으로, Poller 들어가서 Poller Type Poller Interval 수정해줍니다.

Poller Type spine으로, Poller Interval 개인에 맞게 수정해주세요.

 

 

 

- Devices Setting


다음으로, Devices 들어가면 아래와 같이 Localhost 있을겁니다

새로운 디바이스를 정의해야 하기 때문에, Localhost 삭제하고 새로운 디바이스를 추가해줍니다.

 







 

 

수정은 아래와 같이 해주시면 됩니다

 

Description : Ubuntu Cacti Server 같이 개인에 맞게 넣어주세요

Host name : 서버의 IP 주소를 넣어주세요

Host Template : Local Linux Machine

SNMP Version : Version 2

 



Create
버튼을 눌러 디바이스를 생성하신 , service snmpd restart 해주세요.

 

 

Graph Settings 

 

디바이스를 생성하시면 아래와 같이 SNMP Information 함께 디바이스 정보가 뜰겁니다.

아래로 쭉내리셔서 Associated Graph Templates 표에 가주세요.

 

 

다음과 같은 표가 뜨면 

 

Unix - Ping Latency 템플릿을 추가해주세요.

 

 

같은 방식으로, 아래의 Associated Data Queries 에서 SNMP 쿼리 3개를 모두 추가시켜주세요.

 

 

 

추가시켜 주신후, 호스트의 그래프를 생성하기위해 스크롤을 위로 올리셔서 Create Graphs for this Host 클릭합니다.

 

 

들어가면 아래와 같이 그래프 템플릿 리스트가 뜨는데

얘네 중에 모니터링해서 그래프를 골라서 create 버튼을 눌러 생성해 주시면 됩니다.

 

 

 

create 버튼을 누르면 템플릿들의 색깔을 정하는 설정이 나오는데, 개인에 맞게 설정해주신 create 눌러주시면 됩니다.

 

 

추가를 하면 아래와 같이 추가한 템플릿의 리스트가 뜹니다.

 

7. 네트워크 모니터링

 

좌측 상단의 그래프 탭에 들어가셔서, 우측 상단의 그래프 기호를 클릭해주세요.

 

 

클릭하면 그래프들이 나오는데, 모니터링 그래프를 골라서 view 해주시면 됩니다!

2015/08/04 14:32 2015/08/04 14:32
Posted
Filed under 프로그래밍/PHP

PHP 5.3.x.x 버전을 쓰다보니 Notice: Use of undefined constant ..........내용 생략 ...... 등의 오류가 뜬다. 

이러한 Notice 오류는 무시해도 상관은 없다. 하지만, 왜 발생하고 없앨려면 어떻게 해야하는가?

이것은 배열의 오류일 수 있다. 

즉, 

$_example[string] 

$_example['string']

두 배열.. 그니까 정확히 말하자면 두 연관배열의 차이는 인덱스에 문자열을 '' 로 감싸주지 않았고 감싸준 차이다. 

첫 번째 배열은 Notice 오류가 발생한다.

두 번째 배열은 Notice 오류가 발생하지 않는다. 

 그렇다. 

 배열에 대한 규제가 좀 강화된 것이다. 이전 버전에서는 저런 오류가 나지않았다. 하지만 5.3부터는 저런 오류가 나는것 같다. 참고로 무시해도 상관없다. 

 

하지만, 거슬린다면 연관배열의 인덱스 문자열에 '' 로 감싸주면 해결이 된다.  

 

2015/08/04 14:24 2015/08/04 14:24
Posted
Filed under SERVER-OS/리눅스
본 게시글은 Ubuntu기반에서의 APM설치에 관하여 작성하였습니다.
(apt-get방식으로 설치를 진행합니다. 이점 유의해주세요)
0. root권한
sudo -i    <<이 명령어는 root권한을 가지게 함으로서 이후 일일히 sudo를 붙이지 않으셔도 됩니다.
1. APM과 기타 라이브러리 설치
 (1) Apache2 설치
 apt-get install apache2
 (2) php5
 apt-get install php5
 (3) mysql
 apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql
 (중간에 비밀번호를 입력하는칸이 나온다. root의 계정과 별도로 DB의 root계정의 비밀번호)
 (4) GD라이브러리 설치(XE설치시 필요)
 apt-get install php5-gd
 (5) phpmyadmin
 apt-get install phpmyadmin
 (중간에 DB root의 비밀번호를 묻는다. 또 선택창이 뜨면 그냥 기본으로 진행한다)
2. 설정
 (1) phpmyadmin 연동과 ServerName
 vi /etc/apache2/apache2.conf
 맨 아랫줄에
 Include /etc/phpmyadmin/apache.conf
 ServerName localhost
 입력후 저장
 (2) 언어셋(UTF-8) 설정
  (2-1) PHP
  vi /etc/php5/apache2/php.ini
  default_charset = "iso-8859-1"을 default_charset = "utf-8"로 변경
  (2-2) mysql
  vi /etc/mysql/my.cnf
  [mysqld]에 아래내용 추가
  default-character-set=utf8
  default-collation=utf8_general_ci
  init_connect=set collation_connection=utf8_general_ci
  init_connect=set names utf8
  character-set-server=utf8
  collation-server=utf8_general_ci
  character-set-client-handshake = TRUE
 (3) Apache, Mysql 재시작
 service apache2 restart
 service mysql restart
이렇게 진행하면 APM의 설치와 기타 필수적인 세팅은 완료된것이다.
위에서 UTF-8로 언어셋을 설정한것은 선택사항으로, 그누보드(EUC-KR)등을 사용한다면 입력하지 않거나 utf-8을 EUC-KR로 바꿔주면 된다.
최종적으로 확인을 위해 localhost(127.0.0.1, 본인IP, 도메인 등등)를 주소창에 입력하여 It works!가 출력되는지 확인하고, /phpmyadmin을 붙여 정상적으로 phpmyadmin이 작동하는지 확인하자.
2015/08/04 14:22 2015/08/04 14:22
Posted
Filed under 프로그래밍/MY-SQL
포트번호
mysql : 3306
oracle : 1521
mssql : 1433

DB 접속
mysql
shell> mysql --user=user_name --password=your_password db_name
shell> mysql -u user_name -p password db_name 
oracle
shell> sqlplus username/password@db_name

DB내 존재하는 테이블 검색
mysql> show tables;
oracle> select * from tabs;

결과수 제한
mysql> select * from table where ROWNUM < 10;
oracle > select * from table limit 10;

NULL 처리
mysql> select IFNULL(field1, 0) from table;
oracle> select NVL(field1, 0) from table;

현재시간
mysql> select now() from dual;
oracle> select sysdate from dual;

if-else 구문
mysql> select if(field=1, 'X','Y') from table;
oracle> select decode(field,1,'X','Y') from table;
2015/04/15 13:33 2015/04/15 13:33

서버구축,나스구축,서버관리,윈도우서버,리눅스서버,서버관리