2014년 8월 17일 일요일

VLAN(Virtual LAN)이란 무엇일까요?

VLAN이란?

VLAN (Virtual LAN)이란 논리적으로 분할된 스위치 네트워크를 뜻해요.
VLAN은 '스위칭'이라는 LAN의 기술을 기반으로 물리적 시간만 고려되었던 LAN 분야에 가상(Virtual)이라는 개념을 도입한 것이에요.
따라서 VLAN은 네트워크 구성에 대한 지리적 제한을 최소화하면서 사용자가 원하는 최대한의 논리적인 네트워크를 구성할 수 있도록 수단을 제공한다는 장점이 있죠.
즉, 공간이라는 지리적 위치가 아니라, 접속 포트나 MAC 주소, 프로토콜 단위등으로 가상 랜을 구성할 수 있어서 효용가치가 엄청나죠.
사용자가 이동하거나 바뀔 경우 동적인 조직에서 작업그룹을 구성할 수 있고, 브로드캐스트 패킷에 대한 효율적인 제어 등이 용이하기 때문에 그 동안 제품표준화 문제로 사용 및 확산에 지장이 있었지만 가상랜에 관한 표준이 IEEE 802.1Q으로 규격화됨으로써 그 사용이 더욱 확산될 전망이라고 하네요.


  • 하나의 스위치에 연결된 장비들은 모두 같은 브로드캐스트 도메인 안에 있기 때문에 그 범위를 최소화하기 위하여 브로드캐스트 도메인을 여러개의 도메인으로 나눠요.
  • 한 대의 스위치에서 VLAN을 설정하면 VLAN을 설정한 구역끼리만 통신이 가능해요 즉, 네트워크 구간이 나누어지는 것을 의미하죠.
  • 위의 사진을 보면 VLAN 10번과 VLAN 20번으로 나누어져 있는데, VLAN 10번의 PC들끼리만 통신이 가능하고, 마찬가지로 VLAN 20번의 PC끼리 통신이 가능해요.
  • 위의 나누어진 다른 네트워크 구간을 연결하기 위해서는 라우터가 필요해요.

VLAN (Virtual LAN)의 필요성


불필요한 브로드캐스트 트래픽을 차단하고 네트워크의 보안성 강화를 위하여 대부분의 Switch LAN에서 VLAN을 필수적으로 사용해요. VLAN으로 세그먼트를 분리할 경우 브로드캐스트 도메인이 분리되어 네트워크 대역폭을 보다 효율적으로 사용할 수 있죠.

여기서 알아보는 Broadcast의 문제점!

네트워크와 관련된 많은 프로토콜(or 장비)들이 브로드캐스트를 사용해요. PC, 서버, 라우터 그리고 요새는 스마트폰까지 네트워크로 연결된 장비들은 브로드캐스트 프레임을 수신하면 일단 자신이 응답해야 하는 지를 해독해 보아야 해요. 따라서 브로드 캐스트 트래픽이 많으면 장비들이 할 일이 많아지기 때문에 성능이 저하되요.

VLAN이 없으면 모든 스위치의 포트로 브로드캐스트 프레임이 전송되요.

 반면 VLAN을 사용하면 필요한 포트끼리만 브로드캐스트 프레임이 전송되죠.

VLAN의 형태

  1. 하나의 라우터 포트 아래 연결된 하나의 스위치의 각 포트마다 VLAN이 할당되어 있는 형태
 원래는 라우터 아래의 전체가 하나의 네트워크 주소안에 포함되어 있었지만, VLAN을 위해서 서브넷팅하여 네트워크를 나누고 VLAN을 할당했어요. 단순히 서브넷만으로도 네트워크가 나누어지고 VLAN의 대표적 장점인 브로드캐스트 도메인도 나누어 지지만, 서브넷팅을 하게되어 네트워크가 나뉘면, 각 네트워크마다 Gateway를 할당해 주어야 해요. 즉, 라우터에서 인터페이스를 여러개를 써야 하는데, VLAN을 이용하면 하나의 인터페이스에 가상으로 서브인터페이스를 할당함으로 물리적인 인터페이스는 하나만 쓰게 되는 효과가 있어요.

     2. 하나의 라우터 포트에 연결된 두 개 이상의 스위치

 대표적으로 많이 쓰이는 형태에요. 두개 이상의 스위치가 라우터의 하나의 포트에 할당되어 있으며, 이러한 스위치는 층별로 스위치를 하나씩 두고, 각 스위치에는 서브넷팅된 호스트들이 네트워크 대역별로 몇개씩 나누어서 할당되어 있어요. 즉, 아래 3번과 같은 구조에요.
 회사에서 부서끼리는 층이 다르더라도 같은 서브넷에 속하게 하고, VLAN으로 다시 한번 묶는 것이에요. 이렇게 되면 VLAN끼리만 통신이 가능하게 되므로 업무상의 보안을 가능케하며, 1번 케이스의 장점 또한 모두 포함하게 되죠.

     3. 2번 구조를 이루고 있는 라우터가 2개 이상인 경우에요. 즉 라우터 여러개를 쓸 때 이
        용하는 VLAN이에요.
 이 경우 라우터 1 에서의 VLAN 100과 라우터 2 에서의 VLAN 100이 이름은 같지만 다른 VLAN 100인데 이유는 네트워크 주소가 다르기 때문이에요.
*  실제로 이렇게 VLAN을 구성하는 경우 & 사용하는 경우도 없다고 하네요. 이건 그냥 실습용(연구용)으로 한 거에요. 
 녹색 영역의 VLAN 10,20,30과 노란색 영역의 VLAN 10,20,30이 있지만 이름은 같아도 다른 VLAN이에요.


여기까지 VLAN에 대해서 아주 살짝 알아봤는데요. 
사실 이 자료는 예전에 공부할 때 다른 분 블로그에서 퍼온 자료입니다....ㅠㅠ

데이터베이스는 무엇일까?

Database의 개념

1. 파일 시스템
데이터를 수집하여 저장하는 시스템
데이터를 가공하고 활용하여 집합해 놓은 것

2. 파일 시스템의 문제점
데이터의 종속성
중복성
일관성
보안성
경제성
무결성(정확성)

Database의 정의

어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이터의 집합

1. 통합된 데이터
중복이 없는 하나의 데이터

2. 저장된 데이터
하드디스크에 저장된 데이터

3. 운영데이터
존재목적이 명확하고 활용성이 있어 사용하는 데이터

4. 공용데이터
서로 다른 목적으로 사용되는 공유가 가능한 데이터

Database의 특징

1. 실시간 접근성

2. 지속적인 변화성
데이터 베이스에 저장되는 데이터는 최신의 정보가 정확하게 저장되고 처리하는 것
다수의 사용자가 요구하는 데이터의 처리시간이 몇 초 이내에 처리하는 것

3. 동시공유
동일한 데이터를 동시에 서로 다른 목적으로 활용하는 것

4. 내용에 대한 참조
데이터 베이스 내에 있는 데이터 베이스 레코드들은 주소나 위치에 참조하는 것이 아니라 그 값에 의해 참조함

Database 관리 시스템

Oracle, 사이베이스, 인포믹스, RDB(관계형DB)

SQL

Database의 길이 수정, 삭제 등의 작업을 하는 언어의 표준

SQL을 용도에 따라 분류

1. DDL(정의어)
사용자가 Database의 논리적 구조를 정의하기 위한 언어(데이터 사전)

명령어
Create (생성) Alter (수정) Drop (삭제) Rename(이름변경) Truncate (저장공간 삭제)

2. DML(조작어)
하드에 저장된 데이터를 조작하기 위한 언어

명령어
Insert (삽입) Update (수정) Delete (삭제) Select (검색, 선택)

3. DCL(제어어)
데이터에 대한 접근 권한권한 부여하기 위한 시스템의 트렌젝션 관리 언어

명령어
Grant (권한 부여) Revoke (권한 취소)

[windows server 2008]cmd 창에서 파티션 설정하기

커맨드 창에서 파티션 설정하기

이번에는 cmd 창에서 파티션 설정하는 방법을 포스팅할게요.
먼저 시작 키 + r 을 누르고 cmd 를 입력하여 실행시켜줍니다.
다음은 그냥 따라서 입력하시면 되요. 엄청 쉬워요.
그럼 시작~!

c:\>diskpart

diskpart>list disk 디스크의 상태 정보확인

diskpart>select disk 2 디스크 2번을 선택

diskpart>detail disk 디스크의 상세정보확인

diskpart>online disk 오프라인에서 온라인으로 변경

diskpart>attributes disk clear readonly 읽기 전용 속성을 해제

diskpart>clean

diskpart>create partition primary size=20480 주 파티션에 20gb할당

diskpart>create partition extended

diskpart>create partition logical

diskpart>select volume 3

diskpart>assign letter=f 드라이브 문자를 생성

diskpart>format fs=ntfs label="new disk1" quick 주 파티션에 이름을 할당

Diskpart>active 활성

diskpart>select volume 4

diskpart>format fs=ntfs label="new disk1_ex" quick

diskpart>assign letter=g

============================================================동적

diskpart>select disk 2

diskpart>convert dynmic

diskpart>select disk 3

diskpart>convert dynmic

diskpart>attributes disk clear readonly

diskpart>create volume simple size=20480

diskpart>create volume simple

diskpart>list volume

diskpart>select disk 4

diskpart>list disk

이렇게 입력을 하면 파티션 하나를 커맨드 창에서 생성하실 수 있어요.

감사합니다.

디스크(disk, disc)와 레이드(RAID)

RAID

RAID(Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks)는 여러 개의 하드 디스크에 일부 중복된 데이터를 나눠서 저장하는 기술이다. 복수 배열 독립 디스크라고도 한다. 데이터를 나누는 다양한 방법이 존재하며, 이 방법들을 레벨이라 하는데, 레벨에 따라 저장장치의 신뢰성을 높이거나 전체적인 성능을 향상시키는 등의 다양한 목적을 만족시킬 수 있다.최초에 제안되었을 때는 다섯가지의 레벨이 존재했는데, 이후에 중첩 레벨을 비롯한 여러 가지 다른 레벨들이 추가되었다.

RAID는 여러 개의 디스크를 하나로 묶어 하나의 논리적 디스크로 작동하게 하는데, 하드웨어적인 방법과 소프트웨어적인 방법이 있다. 하드웨어적인 방법은 운영 체제에 이 디스크가 하나의 디스크처럼 보이게 한다. 소프트웨어적인 방법은 주로 운영체제 안에서 구현되며, 사용자에게 디스크를 하나의 디스크처럼 보이게 한다.

표준 레이드 레벨

흔히 쓰이는 레이드 레벨을 빠르게 간추리면:



패리티(오류 검출 기능)가 없는 스트리핑된 세트 (적어도 2 개의 디스크). 개선된 성능에 추가적인 기억 장치를 제공하는 게 장점이지만 실패할 경우 자료의 안전을 보장할 수 없다. 디스크에서 실패가 일어나면 배열을 파괴하게 되는데, 이러한 파괴는 디스크를 많이 장착할수록 가능성이 더 크다. 하나의 단일 디스크 실패는 배열을 완전히 파괴한다. 왜냐하면 데이터가 레이드 0으로 쓰일 때, 데이터는 여러 조각으로 나뉘기 때문이다. 조각의 수는 드라이브 안의 디스크 수와 일치한다. 조각들은 각 디스크에 동시적으로 같은 섹터 위에 기록된다. 완전한 데이터 덩어리의 작은 토막들이 병렬로 드라이브를 읽어 낼 수 있게 해 주며, 이러한 종류의 배열은 넓은 대역너비를 제공한다. 그러나 디스크들의 한 섹터가 실패할 때는 모든 다른 디스크 위의 일치하는 섹터가 사용 불능으로 표시된다. 왜냐하면 데이터의 일부가 손상된 것이 아니기 때문이다. 레이드 0은 오류 검출 기능을 제공하지 않기 때문에 어떠한 오류도 복구하지 못한다. 배열에 디스크를 더 많이 넣으면 더 높은 대역을 사용할 수 있겠지만 데이터 손실의 큰 위험이 도사리게 된다.

패리티(오류 검출 기능)가 없는 미러링된 세트 (적어도 2 개의 디스크). 디스크 오류와 단일 디스크 실패에 대비하여 실패 방지 기능이 있다. 분할 탐색을 지원하는 다중 스레드를 지원하는 운영 체제를 사용할 때 읽기 성능이 향상된다. 다만, 쓰기를 시도할 때에는 약간의 성능 저하가 뒤따른다. 배열은 적어도 하나의 드라이브가 기능하는 한 계속 동작한다.










RAID 3 및 RAID 4
패리티가 단순 제공되는(dedicated) 스트리핑된 세트 (적어도 3 개의 디스크).










패리티가 배분되는(distributed) 스트리핑된 세트 (적어도 3 개의 디스크).
패리티가 배분되는(distributed) 스트리핑된 세트 (적어도 4 개의 디스크).







레이드 0+1은 먼저 디스크를 스트리핑(RAID 0)하고, 디스크를 미러링(RAID 1) 한다. (적어도 4개의 디스크)
디스크가 6개일경우는 3개씩 스트리핑하고 미러링을 그다음에 수행한다.




레이드 10은 먼저 디스크를 미러링(RAID 1)하고, 그 이후 스트리핑 한다. (적어도 4개의 디스크)
디스크가 6개일 경우는 2개씩 미러링을 하고, 미러링된 3개를 스트리핑 한다.
패리티가 배분되는(distributed) 스트리핑된 세트를 다시 스트리핑(RAID 0) 한다. (적어도 6개의 디스크)
미러링과 데이터 스트라이핑의 결합이다.(적어도 3 개의 디스크).









Disc와 Disk의 차이


디스크(disc)

디스크(disc)는 오디오 CD, CD-ROM, DVD-ROM, DVD-RAM 또는 DVD-비디오 등과 같은 광학 미디어를 가리킵니다. 일부 디스크는 읽기 전용(ROM)이며, 그 밖에 콘텐츠를 한 번 구울(파일 쓰기) 수 있는 디스크(예: 멀티세션 굽기를 하지 않은 CD-R 또는 DVD-R)와 여러 번 지우고 다시 쓸 수 있는 디스크(예: CD-RW, DVD-RW 및 DVD-RAM 디스크)도 있습니다.
모든 디스크(disc)는 분리할 수 있습니다. 즉 데스크탑이나 Finder에서 디스크(disc)를 마운트 해제하거나 추출하면 실제로 컴퓨터에서 분리됩니다.

디스크(disk)

디스크(disk)는 플로피 디스크(외장 하드 드라이브인 컴퓨터 하드 드라이브의 디스크) 같이 자성을 띤 미디어를 가리킵니다. 일부러 잠그거나 쓰기 보호하지 않는 한 디스크(disk)는 항상 다시 쓸 수 있습니다. 디스크를 몇 개의 작은 볼륨으로 파티션 분할할 수도 있습니다.
디스크(disk)는 대개 금속이나 플라스틱 케이스 안에 밀봉되어 있습니다. 주로 디스크(disk)와 외장 장치를 함께 "하드 드라이브"라고 합니다.

2014년 8월 8일 금요일

[APM 설치하기 시리즈 1편 ] CentOS에서 Mysql 설치하기


CentOS에서 Mysql 5.7버전 설치하기


  • Mysql이란?
표준 데이터베이스 질의 언어인 SQL(Structured Query Language)을 사용하는 개방 소스의 관계형 데이터베이스 관리 시스템(RDBMS). 매우 빠르고, 유연하며, 사용하기 쉬운 특징이 있다. 다중 사용자, 다중 쓰레드를 지원하고, C, C++, Eiffel, 자바, 펄, PHP, Python 스크립트 등을 위한 응용 프로그램 인터페이스(API)를 제공한다. 유닉스리눅스, 윈도 운영 체제 등에서 사용할 수 있다. LAMP, 즉 리눅스 운영 체제와 Apache 서버 프로그램, MySQL, PHP 스크립트 언어 구성은 상호 연동이 잘되면서도 오픈 소스로 개발되는 무료 프로그램이어서 홈 페이지나 쇼핑몰 등 일반적인 웹 개발에 널리 이용되고 있다. mySQL은 오픈 소스 라이선스를 따르기는 하나 상업적으로 사용할 때에는 상업용 라이선스를 구입해야 한다.


[네이버 지식백과] mySQL (IT용어사전, 한국정보통신기술협회)


  • Mysql 준비하기
- Mysql을 다운 받아야 합니다. 현재는 오라클에서 Mysql을 인수했기 때문에 홈페이지에서
  받으려면 오라클 계정이 있어야 해요.

- Kaist ftp등과 같은 미러사이트를 이용해서 받아 주세요.


- URL을 잘 봐주시고 본인의 환경에 맞는 Mysql을 설치해주세요.

- 저는 mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz를 다운 받았어요.

- 이제 wget을 이용해서 다운 받아 주세요.

#cd /usr/local/src 

#wget http://ftp.kaist.ac.kr/mysql/Downloads/MySQL-5.7/mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz

- 그리고 중요한 것인데 CentOS 설치하는  방법마다 라이브러리가 설치되냐 안 되냐 하는데   혹시 설치를 하셨더라도 다시 한 번 해주세요. 설치 할 파일이 길어서 작은 글씨로 썼습니다. (*맨 앞에 # 지우고 윈도우 메모장에 붙여넣었다가 사용 해주세요.)
# yum -y install ORBit2 PyXML a2ps acpid alsa-lib amtu aspell at atk audiofile audit-libs-python autoconf autofs automake avahi avahi-glib bc bind bind-chroot bind-libs bind-utils cairo ccid compat-libstdc++-33 conman cpp cpuspeed crash createrepo crypto-utils cryptsetup-luks cups-libs cvs cyrus-sasl-md5 cyrus-sasl-plain db4-devel dbus-python device-mapper-multipath dhcp dhcp-devel dialog dmraid dos2unix dosfstools dump e2fsprogs-devel ed eject elfutils elfutils-libs enscript expat-devel expect expect-devel expectk fetchmail file finger flex fontconfig fontconfig-devel foomatic freetype freetype-devel ftp gcc gcc-c++ gd gd-devel gd-progs gdb gdbm-devel gettext gfs2-utils glib2-devel glibc-devel glibc-headers gmp-devel gnutls gpm gtk2 hal hdparm hesiod hicolor-icon-theme imake iptraf iptstate ipvsadm irqbalance jwhois kernel-devel kernel-headers keyutils-libs-devel kpartx krb5-devel krb5-workstation ksh lcms lftp libICE libSM libX11 libX11-devel libXau libXau- devel libXcursor libXdmcp libXdmcp-devel libXext libXfixes libXft libXi libXinerama libXpm libXpm-devel libXrandr libXrender libXt libXxf86vm libaio libaio-devel libart_lgpl libbonobo libc-client libcurl-devel libdaemon libevent libfontenc libgomp libgssglue libhugetlbfs libhugetlbfs-devel libidn-devel libjpeg libjpeg-devel libmng libnl libnl-devel libpcap libpng libpng-devel libselinux-devel libselinux-python libsepol-devel libsmi libstdc++-devel libsysfs libtiff libtool libtool-ltdl libwvstreams libxml2-devel libxml2-python libxslt libxslt-python lksctp-tools logwatch lrzsz lsof m2crypto mailcap mailx make man man-pages man-pages-ko mc mcstrans mdadm memtest86+ mesa-libGL mesa-libGL-devel mgetty microcode_ctl mkbootdisk mlocate mrtg mt-st mtools mtr mutt nc ncurses-devel net-snmp-libs netpbm nfs-utils nfs-utils-lib nmap nscd nss_db ntp ntsysv numactl oddjob openssh-clients openssl-devel pam-devel pam_krb5 pam_passwdqc pam_pkcs11 pango parted parted- devel patch pax pciutils pcsc-lite perl perl-Archive-Tar perl-BSD-Resource perl-Compress-Zlib perl-DBI perl-Digest-HMAC perl-Digest-SHA1 perl-HTML-Parser perl-HTML-Tagset perl-IO-Socket-INET6 perl-IO-Socket-SSL perl-IO-Zlib perl-Net-IP perl-Net- SSLeay perl-Newt perl-Socket6 perl-String-CRC32 perl-URI perl-libwww-perl pkgconfig pm-utils postgresql-libs prelink procmail psacct psutils pulseaudio-esound-compat pyOpenSSL pykickstart pyorbit pyparted python-pyblock pyxf86config quota rdate rdist readahead rmt rpcbind rpm-build rsh rsync rusers rwho samba samba-client samba-common samba-swat sendmail sendmail-cf setools setserial setuptool shared-mime-info sip sos spamassassin squashfs-tools strace stunnel symlinks sysfsutils syslinux sysstat system-config-date system-config-firewall talk tcl tcp_wrappers tcpdump tcsh telnet telnet-server time tk tmpwatch traceroute tree ttmkfdir unix2dos unixODBC unzip usbutils usermode vconfig vim-common vim-enhanced vsftpd wget wireless-tools words xfsprogs xfsprogs-devel xinetd xorg-x11-proto-devel yp-tools ypbind ypserv zip zlib-devel GConf2 ImageMagick ImageMagick-perl avahi-libs bwidget cloog-ppl crda cryptsetup-luks-libs cups db4-cxx deltarpm desktop-file-utils device-mapper-multipath-libs dmidecode dmraid-events docbook-dtds flac foomatic-db foomatic-db-filesystem foomatic-db-ppds ghostscript ghostscript-fonts gnome-doc-utils-stylesheets gnome-python2 gnome-python2-canvas gnome-user-docs gnome-vfs2 gpm-libs groff-perl gstreamer gstreamer-tools hal-info hal-libs html2ps hunspell iw jasper-libs kpathsea lcms-libs libIDL libX11-common libXcomposite libXdamage libXdamage-devel libXext-devel libXfixes-devel libXfont libXres libXtst libXxf86vm-devel libasyncns libcanberra libcanberra-gtk2 libcom_err-devel libcroco libdrm-devel libedit libglade2 libgnomecanvas libgsf libnetfilter_conntrack libnfnetlink libnotify libogg libpaper librsvg2 libsampl erate libsndfile libtalloc libtasn1 libtdb libthai libtirpc libusb1 libvorbis libwmf-lite libwnck libxcb libxcb-devel lm_sensors-libs mesa-dri-drivers mozilla-filesystem mpfr mrtg-libs netpbm-progs notification-daemon ntpdate openjpeg-libs pcsc-lite-libs perl-Compress-Raw-Zlib perl-Crypt-OpenSSL-Bignum perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-Random perl-Date-Manip perl-Digest-SHA perl-Encode-Detect perl-ExtUtils-MakeMaker perl-ExtUtils-ParseXS perl-IO-Compress-Base perl-IO-Compress-Zlib perl-Mail-DKIM perl-MailTools perl-Module-Pluggable perl-Net-DNS perl-Net-LibIDN perl-NetAddr-IP perl-Package-Constants perl-Pod-Escapes perl-Pod-Simple perl-SNMP_Session perl-Test-Harness perl-Time-HiRes perl-TimeDate perl-YAML-Syck perl-devel perl-libs perl-version pixman poppler poppler-data poppler-utils portreserve ppl psutils-perl pulseaudio pulseaudio-libs pycairo pygobject2 pygtk2 pygtk2-libglade python-decorator python-deltarpm python-slip python-slip-dbus rarian rarian-compat rtkit samba-winbind-clients setools-console setools-gui setools-libs setools-libs-tcl sgml-common sgpio sound-theme-freedesktop speex startup-notification system-config-date-docs system-config-firewall-tui tex-preview texinfo texinfo-tex texlive texlive- dvips texlive-latex texlive-texmf texlive-texmf-dvips texlive-texmf-errata texlive-texmf-errata-dvips texlive-texmf-errata-fonts texlive-texmf-errata-latex texlive-texmf-fonts texlive-texmf-latex texlive-utils tokyocabinet urlview urw-fonts usermode-gtk xcb-util xml-common xorg-x11-font-utils xulrunner xz xz-lzma-compat yelp lksctp-tools-devel apr-util apr-util-devel libtool-ltdl-devel libmcrypt libmcrypt-devel gmp mhash mhash-devel gdbm zlib curl g++ openssl bzip2-devel libc-client-devel bison system-config-securitylevel
여기까지 하면 mysql 설치 준비가 끝난거에요.

  • 압축해제
#tar zxvf mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz
  • 설치하기
#cd mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz

- 설치하기에 앞서 INTSALL-BINARY를 봐주세요.

# vi INTALL-BINARY
 To install and use a MySQL binary distribution, the basic command
   sequence looks like this: 
shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

- 예전에는 cmake를 설치한 후 cmake를 이용해서 설치해야 했지만 5.6 후반 버전부터는 설치 방법이 바뀌었어요.

2014년 8월 7일 목요일

CentOS에서 MySQL Replication하기

CentOS에서 Mysql replication 하는 방법

Mysql에서 Replication이란?

리플리케이션(Replication)는 데이터 저장과 백업하는 방법과 관련이 있는 데이터를 호스트 컴퓨터에서 다른 컴퓨터로 복사하는 것인데 이때 다른 컴퓨터가 반드시 떨어진 지역에 있어야 하는 것은 아니다. 컴퓨터 네트워크 상태에서는 데이터 저장를 할 수 있게 하는데 로컬 데이터 물리적 기억 장치와는 완전하게 구분된다. 리플리케이션는 유명한 데이터베이스 관리 시스템 (RDBMS, Relational DataBase Management Systems)에서 추가적으로 제공하거나 여러 대의 데이터베이스 서버의 부하를 맞추어 줄 용도로 제공한다.

리플리케이션은 남아 있는 리소스와 관련이 있는데 소프트웨어 요소나 하드웨어 부품이 말해 주며, 이는 신뢰성, 허용 오차, 그리고 성능을 개선한다. 전형적으로 replication in space와 관련이 있는데 이것은 동일한 데이터를 다수의 저장 장치에 저장하거나 동일한 계산 업무를 다수 장치에서 수행하는 것이다. 또한 replication in time는 컴퓨터 계산 수행이 반복적으로 한 개의 장치에서 일어나는 것이다. [위키피디아 발췌]

위키피디아에서 발췌한 Replication의 내용인데 쉽게 말하면 실시간 데이터베이스 백업 서버를 만드는 것이에요. 보통 다른 서버에 만들기 때문에 본 데이터베이스 서버가 망가져도 실시간으로 저장된 데이터를 복구 할 수 있다는 장점이 있죠.

Replication 세팅 시 자주 쓰이는 명령어



  • 모든 유저 보기

mysql> select user, host, password from mysql.user;


  • Replication 상태보기
mysql> show master status;
mysql> show mater status\G
mysql> show slave status;
mysql> show slave status\G
mysql> show processlist\G
mysql> show processlist;

Mysql Replication 설정하기

1. 기본 설정 환경
  • Master와 Slave는 모두 CentOS
  • Mysql 버전은 5.7
  • Master 정보
        - IP: 172.16.7.5/24
        - server ID = 1
        - DB명: rep_jun
        - 계정 = rep_jun // rep_passwd
  •  Slave 정보
        - IP: 172.16.7.6/24
        - server ID = 2
        - DB명: rep_jun

2. Master 설정하기
  • 계정 생성하기
mysql>CREATE USER 'rep_jun'@'172.16.7.6' IDENTIFIED BY 'rep_passwd';
mysql>GRANT FILE ON *.* TO 'rep_jun'@'172.16.7.6';
mysql>grant replication slave on *.* TO 'rep_jun'@'172.16.7.6' identified by 'rep_passwd';
mysql>flush privileges;

  • my.cnf 편집하기
#vi /etc/my.cnf
[mysql]
log-bin = mysql-bin
server-id = 1
binlog_do_db = rep_jun






  • 백업파일 만들기
- mysqldump를 이용한 백업 방법만을 서술할게요.
#mysqldump -u root -p rep_jun > rep_jun.sql  - 데이터베이스를 sql 파일로 추출하는 명령어에요.

  • Master의 Replication 정보 조회
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File                     | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |     120    | rep_jun          |                           |                              |
+------------------+----------+--------------+------------------+----------------
1 row in set (0.00 sec)
- 위에 처럼 나오면 성공한 거에요. 
- 위 정보를 띄어놓고 slave로 갑시다.

3. Slave 설정하기
- slave의 my.cnf 파일을 변경해줘야해요.
- slave의 my.cnf를 설정하는 방법은 두 가지가 있는데 먼저 자신의 버전을 확인해 주세요.
  • 5.5 버전 이전 설정하기
#vi /etc/my.cnf
[mysql]
server-id=2
master-host=172.16.7.5
master-user=rep_jun
master-password=rep_passwd
master-port=3306

  • 5.5 버전 부터 설정하기
- 저는 5.7이기 때문에 이 설정방법을 이용했습니다.
#vi /etc/my.cnf
[mysql]
server-id=2

  • dump파일 가지고 오기
#mysql -u root -p rep_jun < rep_jun.sql - 아! 빈 데이터베이스를 미리 만들어놔야 해요.

- 이렇게 설정 후 mysql을 실행시켜주세요.

mysql> stop slave;  - slave가 중지되어 있다면 안해도 상관 없으나 그냥 한번은 입력 해줍시다.
mysql> change master to master_host='172.16.7.5', master_user='rep_jun',master_password='rep_passwd', master_log_file='mysql-bin.000001',master_log_pos=120;
mysql> start slave;
- mysql 빠져 나온 후
#/etc/init.d/mysqld restart

4. 적용 여부 확인하기
  • master에서
mysql> show processlist\G
*************************** 1. row ***************************
     Id: 4
   User: root
   Host: localhost
     db: rep_jun
Command: Query
   Time: 0
  State: init
   Info: show processlist
*************************** 2. row ***************************
     Id: 5
   User: rep_jun
   Host: 172.16.7.6:40860
     db: NULL
Command: Binlog Dump
   Time: 1632
  State: Master has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
2 rows in set (0.00 sec)

- 위 밑줄 부분의 메시지 처럼 나오면 일단은maste에서 성공한 거에요.

slave에서
mysql> show slave status\G
Slave_IO_State: Waiting for master to send event
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

- 위 밑줄 항목에 밑줄과 같은 문구가 써 있다면 slave도 성공적으로 연결이 된 것입니다.

2014년 8월 4일 월요일

CentOS에서 Samba 설치 및 설정하기

CentOS에서 Samba 설치 및 설정

  • Samba란 무엇인가?

간단하게 말하면 Unix(리눅스)와 윈도우간 파일 및 프린터를 공유할 수 있게 해주는 솔루션

  • Samba 설치

다음 명령어를 입력하여 samba를 설치해주세요.

#yum install samba

  • Samba 사용자 추가

#smbpasswd -a jun
비밀번호 입력까지 마치면 추가가 완료된거에요.

  • smb.conf 설정

#vi /etc/samba/smb.conf

workgroup을 원하는 이름으로 바꾸어 주고 esc 클릭 후 shift + zz 입력하여 저장 (*바꾸지 않아도 상관 없음)

다음으로 공유 디렉토리를 만들어야 합니다. 원하는 디렉토리를 원하는 위치에 만들어 주세요.

#mkdir /samba

디렉토리를 만들고 권한을 설정해주세요.

#chmod 777 /samba

다시 smb.conf 수정으로 돌아갑니다.

#vi /etc/samba/smb.conf

제일 밑에 다음 내용을 추가해주세요.

[mydataroom]
comment = samba // 아무거나 입력
path = /samba  // 만들어준 디렉토리
public = yes 
writable = yes  // 쓰기 가능 여부
write list = jun  // 쓰기 가능 사용자
create mask = 0777
directory mask = 0777

  • 방화벽에 허용 등록해주기

#vi /etc/sysconfig/iptables

밑에 내용을 추가해주세요.
-A INPUT -m state --state NEW -m udp -p udp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT
그리고 Shift + zz

  • 서비스 재시작 및 chkconfig에 등록

Samba와 iptables를 재시작 해주세요.
#/etc/init.d/smb restart
#/etc/init.d/iptables restart

다음 chkconfig에 등록하기
#chkconfig --level 35 smb on

  • Windows에서 접속하기

시작 + r 입력 후 \\samba서버 아이피\

끝~!