MySQL에는, 스토리지 엔진이라고 불리는 각종 스토리지를 사용할수 있다. 데이터는 디스크, 메모리 및 네트워크에 저장할수 있다. 데이터베이스의 각 테이블에는, 사용가능한 임의의 스토리지엔진을 사용할수 있다. 디스크 스토리지는 저가로 수명이 길지만, 메모리는 보다 고속이다.

스토리지 엔진의 특징은 다음과 같다.

1.     InnoDB:트랜잭션이 사용되기 때문에, 읽기 쿼리와 쓰기 쿼리를 모두 쓰는 경우에 적합.

InnoDB, MySQL의 테이블향 디폰트의 다목적(읽기집중형, 읽기/쓰기, 트랜잭션)스토리지 엔진이다.

2.     MyISAM:데이터의 읽기가 대부분으로, 갱신은 거의 없는 경우에 적합.


3.     MEMORY:모든 데이터가 메모리에 저장된다.


4.     NDB:이중화되고 확장성이 있는 토폴로지에 의해 데이터의 가용성을 높이기 위해, MySQL Cluster로 사용된다.

주의:스토리지 엔진은 , 단순한 스토리지 레이어를 넘어, 스토리지 이외의 것도 구성할수 있다. 그외의 구조와 실전메커니즘도 준비하고 있다.

'IT > MySQL' 카테고리의 다른 글

MySQL Connectors and APIs  (0) 2016.10.05
[MySQL] OPTIMIZE TABLE  (0) 2016.10.05
MySQL Communication Layer(SQL Layer)  (0) 2016.10.04
MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL의 Replication  (0) 2016.10.04
블로그 이미지

swhwang

,

접속이 확립되면, MySQL서버에서는 다음과 같은 처리를 한다.

인가 및 파서:구문이 정확한지를 확인. 그후, 허가에 의해, 접속한 유저가 특정의 쿼리를 실행하는 권한을 가지고 있는지를 검증.


옵티마이져:각 쿼리의 실행계획을 작성.그 실행계획은, 쿼리의 최적에 실행하기 위한 방법을 지시한 명령셋. 어느 인덱스를 사용해서, 테이블을 어떤 순서로 처리할지를 결정하는 작업은 이 단계이며, 아주중요.


쿼리실행:각 쿼리의 실행 계획을 실행


쿼리/캐쉬:실행된 쿼리와 결과를 기억하기(및바로 되돌려준다) 위해 사용하는 쿼리/캐쉬를 필요에 따라서 구성할수 있습니다.


Query logging:실행된 쿼리를 추적할 때에 유효로 하는 것이 가능.

주의:슬라이드 내의 그림은, MySQL서버에 의해 SQL문의 처리를 표시하고 있다.

'IT > MySQL' 카테고리의 다른 글

[MySQL] OPTIMIZE TABLE  (0) 2016.10.05
MySQL Communication Layer(Storage Layer)  (0) 2016.10.04
MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL의 Replication  (0) 2016.10.04
MySQL에서 , 데이터베이스 사이즈 확인하는 방법  (0) 2016.10.04
블로그 이미지

swhwang

,

TCP/IP(Transmission Control Protocol/Internet Protocol):인터넷상에 호스트에의 접속에 사용하는 일련의 통신 프로토콜입니다.리눅스OS의 경우,TCP/IP OS에 결합되어, 인터넷에서 사용되기 때문에, 네트워크를 잇는 데이터전송에 사실상의 표준이 됨.이것은 윈도우에 최적의 접속타입이다.


유닉스 소켓:일종의 프로세스간 통신. 같은 서버에서 실행되는 프로세스간의 양방향통신 링크의 일단을 형성하기 위해 사용. 소켓을 사용하기 위해서는, 로컬시스템상에  물리 파일이 필요하다. 이것은 리눗스에 최적의 접속 타입


공유메모리:프로그램간에 데이터를 전달하는 데 효율적인 수단.

프로그램이 다른 프로세스(허가된 경우)가 액세스할수 있는메모리 영역을 작성.윈도우의 명시적인 passive모드는 단일 윈도우 서버내에서만 기능. 공유메모리는 디폴트로 무효. 공유 메모리접속을 유효로 하는 것에는  --shared-memory옵션을 사용해서 서버를 기동할 필요가 있다.


Named pipe: Named pipe의 설계는, 클라이언트/서버간 통신을 중심으로 하고 있기 때문에, 소켓과 아주 닮은 꼴이다.읽기와 쓰기의 동작이외에, 윈도우의 Named Pipe  서버/어플리케이션향의 명시적인 passive모드도 서포트한다.

이 프로토콜은, 단일(윈도우)서버내에서만 기능. Named pipe는 디폴트로 무효로 되어있음.접속을 유효로 하는 것에는, --enable-named-pipe옵션을 사용해서 서버를 기동할 필요가 있다.

블로그 이미지

swhwang

,

MySQL의 Replication

IT/MySQL 2016. 10. 4. 18:54

MySQL에 Replication이 레포트 된 것은 2000년 5월에 릴리즈 된 3.23으로부터, 4.0에 그 구조가 일부, 고쳐진것으로, 비교적 [시든]기능으로, 필자의 감촉으로는 안정성과 신뢰성은 충분히 높다고 할수 있다.

또, MySQL본체에 Replication의 기능이 들어가있는것도 특색이며, Replication을 위해 외부 어플리케이션을 준비할 필요가 없이, 설정도 비교적 간단하므로,가볍게 Replication을 구성하는 것이 가능하다.

본문에는, MySQL의 Replication의 특색과 구조를 소개한 후, Replication의 설정, 상태확인, 트러블 슈팅보다 실전적인 내용의 설명을 한다.

또, 본문의 동작확인은, 다음의 환경에서 실시했다.

OS:Linux(Fedora Core 2)

MySQL:4.0.20(MySQL AB의 rpm패키지)

 

Replication의 개요

 

Replication이란

일반적으로, Replication이란, 다른 서버에 데이터베이스를 복제하는 것을 말한다.

복제는 LAN과 인터넷등 네트워크를 경유해서 행해지므로, 물리적으로 떨어진 장소에 있는 서버에 데이터베이스를 Replicate하는 것이 가능하다.

복제방법의 종류

복제의 방법에는 동기와 비동기의 2종류가 있다.

동기 복제의 경우는, Replication을 구성하는 모든 서버에 항상 모두 동일한 데이터를 갖는 것이 보장되지만, 한편으로 데이터의 동기를 취하기 위해 다른 서버의 응답을 기다릴 필요가 있으므로, 서버의 대수가 많으지면, 많아질수록, 전체의 응답성이 낮아질 가능성이 있다.

반대로, 비동기복제는, 서버대수의 증가에 의한 성능의 저하는 거의 없지만, 짧은 시간에 관찰하면, 서버간 데이터의 동기가 보장되지 않는다는 문제가 있다.

구성의 종류

주로 Replication의 구성에는 마스터슬레이브와 멀티마스터가 있다.

마스터슬레이브구성은, 갱신계의 쿼리를 받는 것은 마스터서버뿐이며, 슬레이브는 마스터로부터

전파된 것 이외의 갱신처리는 할수없다.


멀티마스터는, 어떤 서버에도 갱신계의 쿼리를 받아들일수 있는 구성이다.

                                     

복제방법과 구성의 조합

대표적인 Replication의 형태는, 복제의 방법과 구성의 조합으로 4가지를 생각할수 있습니다만,

비동기마스터슬레이브가 나쁘고, 동기 멀티마스터가 좋다는 것이 아니라, 각각 장단점이 있으므로, 요건에 맞게 나누어 보자.

MySQL의 Replication으로 가능한것

 

부하분산

부하분산기능을 통해서, 슬레이브서버군에 참조계의 쿼리를 부하분산하는 것이 가능하다.

다만, 위에 기술한대로, MySQL의 Replication은 비동기인것에 주의할 필요가 있다.

구체적으로는, 전혀 갱신하지않은 테이블, 또는 클라이언트접근이 없는 야간의 배치처리에만 있는 마스터 테이블에 대한 참조계의 쿼리와 같은, 슬레이브에의 전파의 지연이 문제가 되지않는 쿼리는  부하분산하는 것이 가능하지만, 유저정보의 갱신을 마스터에 대해서 행한직후에 슬레이브에 그 유저의 정보를 질의하는 경우에는, 얻은 결과가 다른 위험성이 있다.

고가용성

마스터에 어떤 장애가 발생해서 서비스불능이 된 경우, 슬레이브가 대신에 서비스를 하는것으로,

짧은 다운타임에 서비스를 재개하는 것이 가능하다.

그러나, 불행히도, 마스터의 절체를 자동으로 행하는 기능은 MySQL본체에는 들어있지않으므로, 절체처리는 수동으로 하던가, 절체프로그램을 만들 필요가 있다.

http://dev.mysql.com/doc/mysql/ja/Replication_Features.html

백업

데이터의 정합성을 가지면서 백업을 하는것에는, MySQL을 정지해서 오프라인 백업을 하던가,

쓰기 락을 해서 온라인 백업을 할 필요가 있다.

그러나, Replication구성이라면, 슬레이브의 데이터가 백업데이터가 되며, 풀백업을 하는 경우에는 슬레이브의 데이터를 백업하면, 마스터가 제공하고 있는 서버스에는 일절 영향없이 백업을 하는것이 가능하다.

MySQL의 Replication으로 불가능한 것

 

갱신계의 부하분산


갱신계 쿼리의 부하를 복수의 서버에 분산하는 것은 불가능하다.

우선, 단순한 마스터슬레이브 구성에는 마스터는 1대밖에 없으므로, 갱신계의 쿼리는 이 마스터에 집중시키는 것 밖에 없다.

다음으로 듀얼마스터 구성을 생각해보자.MySQL의 Replication에는 슬레이브는 다른 슬레이브의 마스터로 되는 것이 가능하므로, 그림3과 같은 듀얼 마스터구성으로 하는 것이 가능하다.

그러나, 마스터간에 갱신처리가 경합할 가능성이 있으므로,  보다상위의 레이어로 갱신대상이 되는테이블에 쿼리의 발행처의 마스터를 구별하는등의 연구가 필요하다.

예를 들어 유저정보의 갱신은 마스터A에 제품정보의 갱신은 마스터B에 와 같은 것이다.

이것으로, 갱신계의 쿼리를 분산하는 것이 가능합니다만, 사실, 부하의 분산으로는 될수없다.

마스터A에 대해서행해진 갱신처리는, Replication에 의해 마스터 B에도 실행되므로,결국, 양 마스터에 갱신계의 쿼리가 실행되는것에 의해, 갱신계 쿼리의 분산은 되어도 갱신처리의 부하를 분산한 것은 아니기 때문이다.

                            

 

슬레이브의 부하경감

앞절의 갱신계의 부하분산과 같도록, 갱신계의 쿼리는 Replicate되어 슬레이브에도 처리되므로, 갱신계의 쿼리가 많은 경우는 슬레이브에도 똑 같은 부하가 걸립니다.


'IT > MySQL' 카테고리의 다른 글

MySQL Communication Layer(SQL Layer)  (0) 2016.10.04
MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL에서 , 데이터베이스 사이즈 확인하는 방법  (0) 2016.10.04
MySQL 인스톨(binary 설치)  (0) 2016.10.04
MySQL의 특징  (0) 2016.10.04
블로그 이미지

swhwang

,
MySQL에서 , 데이터베이스 사이즈 확인하는 방법


SQL에서 확인하는 방법

SELECT  table_schema
       , SUM(data_length+index_length) /1024 /1024 as MB
FROM information_schema.tables
GROUP BY table_schema
ORDER BY SUM(data_length+index_length) DESC


결과


+--------------------+-------------+
| table_schema       | MB          |
+--------------------+-------------+
| foo                | 21.95312500 |
| footest            |  8.41354179 |
| mysql              |  0.54660702 |
| kakeibo            |  0.31250000 |
| information_schema |  0.00878906 |
| hoge               |  0.00460625 |
| performance_schema |  0.00000000 |
+--------------------+-------------+

du 커맨드로 확인하는 방법

# du /var/lib/mysql/* -s | sort -nr

43056   /var/lib/mysql/ibdata1
9440    /var/lib/mysql/footest
5132    /var/lib/mysql/ib_logfile1
5132    /var/lib/mysql/ib_logfile0
932     /var/lib/mysql/mysql
632     /var/lib/mysql/foo
212     /var/lib/mysql/performance_schema
48      /var/lib/mysql/hoge
44      /var/lib/mysql/kakeibo
4       /var/lib/mysql/mysql_upgrade_info
0       /var/lib/mysql/mysql.sock


'IT > MySQL' 카테고리의 다른 글

MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL의 Replication  (0) 2016.10.04
MySQL 인스톨(binary 설치)  (0) 2016.10.04
MySQL의 특징  (0) 2016.10.04
MySQL이란  (0) 2016.10.04
블로그 이미지

swhwang

,

 MySQL 설치 방법

MySQL Binary source 파일로 설치한다.

 

1.3.1 user group 생성

[root@testdb ~]# groupadd -g 501 dba

[root@testdb ~]# useradd -g dba -u 501 mysql

[root@testdb ~]#

[root@testdb ~]# cat /etc/group | grep dba

dba:x:501:

[root@testdb ~]#

[root@testdb ~]# cat /etc/passwd | grep mysql

mysql:x:501:501::/home/mysql:/bin/bash

 


1.3.2 MySQL 엔진 심볼릭 링크 생성 및 압축 풀기

[root@testdb MYSQL]# ls

LOG  lost+found  mysql-5.5.25a-linux2.6-x86_64.tar.gz

[root@testdb MYSQL]# tar xvf mysql-5.5.25a-linux2.6-x86_64.tar.gz

[root@testdb MYSQL]# ln -s mysql-5.5.25a-linux2.6-x86_64 mysql

[root@testdb MYSQL]# ls -al

합계 182212

drwxr-xr-x  5 root root      4096 11 28 11:45 .

drwxr-xr-x 27 root root      4096 11 28 11:00 ..

drwxr-xr-x  3 root root      4096 11 26 23:24 LOG

drwx------  2 root root     16384 11 26 23:24 lost+found

lrwxrwxrwx  1 root root        29 11 28 11:45 mysql -> mysql-5.5.25a-linux2.6-x86_64

drwxr-xr-x 13 root root      4096 11 28 11:44 mysql-5.5.25a-linux2.6-x86_64

-rw-r--r--  1 root root 186355822 11 28 11:40 mysql-5.5.25a-linux2.6-x86_64.tar.gz

 


1.3.3. 디렉토리 권한 설정

chown 을 사용하여 MySQL 관련 디렉토리를 mysql 계정 dba 그룹으로 설정한다

[root@testdb ~]# chown -R mysql.dba /MYSQL/mysql-5.5.25a-linux2.6-x86_64

[root@testdb ~]# chown -R mysql.dba /MYSQL_DATA/DATA/

[root@testdb ~]# chown -R mysql.dba /MYSQL/LOG/

[root@testdb mysql]# ls -al /MYSQL/mysql-5.5.25a-linux2.6-x86_64

합계 84

drwxr-xr-x 13 mysql dba   4096 11 28 11:44 .

drwxr-xr-x  5 root  root  4096 11 28 11:45 ..

-rw-r--r--  1 mysql dba  17987  6 29 21:48 COPYING

-rw-r--r--  1 mysql dba   7604  6 29 21:48 INSTALL-BINARY

-rw-r--r--  1 mysql dba   2552  6 29 21:48 README

drwxr-xr-x  2 mysql dba   4096 11 28 11:43 bin

drwxr-xr-x  4 mysql dba   4096 11 28 11:43 data

drwxr-xr-x  2 mysql dba   4096 11 28 11:42 docs

drwxr-xr-x  3 mysql dba   4096 11 28 11:43 include

drwxr-xr-x  3 mysql dba   4096 11 28 11:43 lib

drwxr-xr-x  4 mysql dba   4096 11 28 11:44 man

drwxr-xr-x 10 mysql dba   4096 11 28 11:44 mysql-test

drwxr-xr-x  2 mysql dba   4096 11 28 11:44 scripts

drwxr-xr-x 27 mysql dba   4096 11 28 11:43 share

drwxr-xr-x  4 mysql dba   4096 11 28 11:44 sql-bench

drwxr-xr-x  2 mysql dba   4096 11 28 11:44 support-files

.


1.3.4 mysql_install_db 실행

mysql_install_db 실행하여 database를 생성한다.

[root@testdb mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/MYSQL_DATA/DATA/

Installing MySQL system tables...

OK

Filling help tables...

OK

 

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

 

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

 

./bin/mysqladmin -u root password 'new-password'

./bin/mysqladmin -u root -h testdb password 'new-password'

 

Alternatively you can run:

./bin/mysql_secure_installation

 

which will also give you the option of removing the test

databases and anonymous user created by default.  This is

strongly recommended for production servers.

 

See the manual for more instructions.

 

You can start the MySQL daemon with:

cd . ; ./bin/mysqld_safe &

 

You can test the MySQL daemon with mysql-test-run.pl

cd ./mysql-test ; perl mysql-test-run.pl

 

Please report any problems with the ./bin/mysqlbug script!

 


MYSQL_DATA 디렉토리 DB 생성을 확인한다. (mysql, test, performance_schema)

[root@testdb mysql]# ls -al /MYSQL_DATA/DATA/

합계 20

drwxr-xr-x 5 mysql dba  4096 11 28 11:59 .

drwxr-xr-x 4 root  root 4096 11 28 11:52 ..

drwx------ 2 mysql root 4096 11 28 11:59 mysql

drwx------ 2 mysql dba  4096 11 28 11:59 performance_schema

drwx------ 2 mysql root 4096 11 28 11:59 test

 


1.3.5 파라미터 설정

표준 파라미터 적용은 /etc/my.cnf 에서 한다

1.3.5.1

[client]

port = 3306

socket = /tmp/mysql.sock

 

[mysqld]

port = 3306

socket = /tmp/mysql.sock

basedir = /MYSQL/mysql

datadir = /MYSQL_DATA/DATA

 

 

# query_cache 설정 (사용하지 않음)

query_cache_type = 0

query_cache_size = 16M

query_cache_limit = 2M

 

# Log 파일 설정

log-error = /MYSQL/LOG/mysql.err

slow_query_log = 1

slow_query_log_file = /MYSQL/LOG/mysql-slow-query.log

long_query_time = 3

 

# Time out 설정

wait_timeout = 28800

interactive_timeout = 600

 

# transaction 격리수준 설정

transaction_isolation = READ-COMMITTED

 

# 기타 환경 설정

back_log = 1024

max_connections = 1024

max_connect_errors = 1024

table_open_cache = 2048

max_allowed_packet = 16M

max_heap_table_size = 1024M

sort_buffer_size = 2M

join_buffer_size = 2M

thread_cache_size = 8

thread_concurrency = 36

tmp_table_size = 1024M

 

# 문자셋 설정 (기본값은 utf8로 설정하나 서비스에 따라 euckr로 변경)

init_connect = "SET collation_connection = utf8_general_ci"

init_connect = "SET NAMES utf8"

character-set-server = utf8

 

# innodb 설정

innodb_lock_wait_timeout = 50

innodb_file_per_table

innodb_thread_sleep_delay = 0

innodb_commit_concurrency = 36

innodb_doublewrite = 0

innodb_flush_log_at_trx_commit = 2

innodb_additional_mem_pool_size = 50M

innodb_thread_concurrency = 36

innodb_log_files_in_group = 3

 

# /MYSQL_DATA/DATA 파티션 크기에 따른 분류

innodb_data_file_path = ibdata1:1024M;ibdata2:1024M;ibdata3:10M:autoextend

innodb_log_file_size = 256M

 

# H/W RAM 용량에 따른 분류

# RAM < 8GB

innodb_buffer_pool_size = 2G

innodb_log_buffer_size = 32M

# RAM > 8GB

innodb_buffer_pool_size = 4G

innodb_log_buffer_size = 32M

 

# MyISAM 사용시

key_buffer_size = 512

read_buffer_size = 2M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 2G

myisam_repair_threads = 1

myisam_recover

 

# innodb 사용시

key_buffer_size = 32M

read_buffer_size = 2M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1

myisam_recover

 

[mysqldump]

quick

 

[mysqlhotcopy]

interactive-timeout

 

[mysqld_safe]

open-files-limit = 8192

 


1.3.6 MySQL 실행

MySQL 엔진 디렉토리에서 mysqld_safe 실행하여 mysql 실행한다.

[root@testdb mysql]# ./bin/mysqld_safe --user=mysql &

[1] 5350

[root@testdb mysql]# 121128 13:58:13 mysqld_safe Logging to '/MYSQL/LOG/mysql.err'.

121128 13:58:14 mysqld_safe Starting mysqld daemon with databases from /MYSQL_DATA/DATA

 


1.4 보안 적용

1.4.1 기본 보안 적용

MySQL Binary source에서 제공하는 mysql_secure_installation 스크립트를 이용해 기본 보안 적용

root 패스워드 설정, 익명 사용자 삭제, test db 삭제

[root@testdb mysql]# ./bin/mysql_secure_installation

 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

 

Set root password? [Y/n] Y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!

 

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] Y

 ... Success!

 

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] n

 ... skipping.

 

By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] Y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] Y

 ... Success!

 

Cleaning up...

 

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

 

Thanks for using MySQL!

 


1.4.2 /etc/my.cnf 권한은 640, 사용자 및 그룹은 mysql.dba로 설정

chmod chown 을 사용하여 권한 및 사용자 그룹을 변경한다.

[root@testdb mysql]# chmod 640 /etc/my.cnf

[root@testdb mysql]# chown mysql.dba /etc/my.cnf

[root@testdb mysql]# ls -al /etc/my.cnf

-rw-r----- 1 mysql dba 1816 11 28 13:57 /etc/my.cnf

 


1.4.3 mysqld_safe mysql.server의 권한은 750으로 설정

chmod를 사용하여 권한을 750으로 변경한다.

[root@testdb mysql]# ls -al support-files/mysql.server

-rwxr-x--- 1 mysql dba 10650  6 29 23:29 support-files/mysql.server

[root@testdb mysql]# ls -al bin/mysqld_safe

-rwxr-x--- 1 mysql dba 23184  6 29 23:29 bin/mysqld_safe

 


1.4.4 $datadir 디렉토리 및 데이터 파일 접근제한 설정

데이터 파일의 권한이 600 또는 640

$datadir의 접근 권한은 750 이하로 설정

[root@testdb mysql]# cd /MYSQL_DATA/DATA/

[root@testdb DATA]# chmod 750 /MYSQL_DATA/DATA/


drwxr-x--- 4 mysql dba        4096 11 28 14:04 .

drwxr-xr-x 4 root  root       4096 11 28 11:52 ..

-rw-rw---- 1 mysql dba           5 11 28 14:00 testdb.pid

-rw-rw---- 1 mysql dba   268435456 11 28 14:00 ib_logfile0

-rw-rw---- 1 mysql dba   268435456 11 28 13:59 ib_logfile1

-rw-rw---- 1 mysql dba   268435456 11 28 14:00 ib_logfile2

-rw-rw---- 1 mysql dba  1073741824 11 28 14:00 ibdata1

-rw-rw---- 1 mysql dba  1073741824 11 28 13:59 ibdata2

-rw-rw---- 1 mysql dba    10485760 11 28 13:59 ibdata3

drwx------ 2 mysql root       4096 11 28 11:59 mysql

drwx------ 2 mysql dba        4096 11 28 11:59 performance_schema

[root@testdb DATA]# chmod 640 ib_logfile0 ib_logfile1 ib_logfile2 ibdata1 ibdata2 ibdata3[root@testdb DATA]# cd mysql

[root@testdb mysql]# chmod 640 *

[root@testdb mysql]# cd ..

[root@testdb DATA]# cd performance_schema/

[root@testdb performance_schema]# chmod 640 *

[root@testdb DATA]# chmod 640 testdb.pid

[root@testdb DATA]# ls -al

합계 2896696

drwxr-x--- 4 mysql dba        4096 11 28 14:04 .

drwxr-xr-x 4 root  root       4096 11 28 11:52 ..

-rw-r----- 1 mysql dba           5 11 28 14:00 testdb.pid

-rw-r----- 1 mysql dba   268435456 11 28 14:00 ib_logfile0

-rw-r----- 1 mysql dba   268435456 11 28 13:59 ib_logfile1

-rw-r----- 1 mysql dba   268435456 11 28 14:00 ib_logfile2

-rw-r----- 1 mysql dba  1073741824 11 28 14:00 ibdata1

-rw-r----- 1 mysql dba  1073741824 11 28 13:59 ibdata2

-rw-r----- 1 mysql dba    10485760 11 28 13:59 ibdata3

drwx------ 2 mysql root       4096 11 28 11:59 mysql

drwx------ 2 mysql dba        4096 11 28 11:59 performance_schema


 

'IT > MySQL' 카테고리의 다른 글

MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL의 Replication  (0) 2016.10.04
MySQL에서 , 데이터베이스 사이즈 확인하는 방법  (0) 2016.10.04
MySQL의 특징  (0) 2016.10.04
MySQL이란  (0) 2016.10.04
블로그 이미지

swhwang

,

MySQL의 특징

IT/MySQL 2016. 10. 4. 00:33

2016년 2월 현재, 최신 버젼은 2015년 10월에 공개된 MySQL5.7이다.

오픈소스이면서 다른 RDBMS제품에 뒤지지않는 기능/성능을 갖추고 있다.


고성능의 스토리지엔진 [InnoDB]

스토리지엔진이란, DBMS가 데이터베이스로부터 데이터의 읽기, 데이터베이스에의 쓰기에 사용되는 MySQL독자의 Component이다.

MySQL에는 여러 스토리지 엔진을 서포트하고 있어, 이전은 트랜잭션비대응 대신

참조가 고속인 MyISAM이 사용되었다.


현재는 ACID에 준거한 강고한 트랜잭션서포트를 실현하고 있는 InnoDB가 디폴트로 되어있다.

ACID : Atomic(원자성), Consistent(일관성), Isolated(독립성), Durable(영속성)의 앞글자를 딴것.


Replication

Replication이란, 데이터베이스서버(Master)의 데이터를 한개 또는 복수의 데이터베이스 서버(Slave)에 복제한느것이다.

이것에 의해, 부하분산, 백업, 슬레이브의 정보분석등이 가능하게 된다.


MySQL의 Replication에는

  • 비동기Replication : Master는, 이벤트가 Slave에 도달했는지는 확인하지않는다.마스터와 슬레이브의 데이터가 틀릴 가능성이 있다.
  • 준동기 Replication : 마스터의 트랜잭션이 커밋된 후, 적어도 한개의 슬레이브가 이벤트를 받을때까지 대기한다.
  • (완전) 동기 Replication : 마스터의 트랜잭션이 커밋된후, 모든 슬레이브가 이벤트를 받을때까지 대기한다.
가 있다.
MySQL에는 디폴트로 비동기 Replication을 채용하고 있어, 플러그인으로 준동기 Replication이 실전된다. MySQL Cluster에는 동기Replicaton이다.







'IT > MySQL' 카테고리의 다른 글

MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL의 Replication  (0) 2016.10.04
MySQL에서 , 데이터베이스 사이즈 확인하는 방법  (0) 2016.10.04
MySQL 인스톨(binary 설치)  (0) 2016.10.04
MySQL이란  (0) 2016.10.04
블로그 이미지

swhwang

,

MySQL이란

IT/MySQL 2016. 10. 4. 00:12

웹 업계를 목표로 하는사람이라면 우선 들어본적있는 MySQL

세계적으로 유명하니까 알아둬야 한다고 생각해도, 데이터베이스, 

게다가 오픈소스라는 것에 주저하는 사람이 있을지도 모른다.



MySQL이란?

오픈소스의 Relational Database Management System(RDBMS)이다.

오픈소스로써는 세계적으로 아주 많이 사용되고 있다.




MySQL의 파란만장한 역사

초기의 버젼은 1994년에 개발되어, 1995년에 등장했다.

당초는 스웨덴의 기업 [MySQL AB]의 괄할 아래 있었지만, 2008년

에 썬 마이크로시스템즈(SUN)사가 MySQL AB를 매수, 2010년에 Oracle사가 썬

마이크로시스템즈사를 매수하는것에, 지금은 Oracle사의 관할아래에 있다.


InnoDB의 기술을 보유하고 있던 핀란드의 기업 [Innobase oy]거 먼저 Oracle사에 매수된것에 InnoDB개발부대와 MySQL개발부대가 합병해서, 1개의 조직으르써

개발이 진행되고 있다.

MySQL로 유명한것이라고 하면 [LAMP]라는 오픈소스의 기술로 구성된 환경.

LAMP는 OS에 Linux, 웹서버에 Apache, 데이터베이스에 MySQL, 프로그래밍에 PHP/Perl/Python, 각각의 앞글자를 딴 명칭으로, 웹사이트의 구축에 많이 채용되고 있다.


현재 많은 기업에서 채용

Facebook, Twitter, YouTube, Amazon, Wikioedia등, 유명기업이 도입하고 있다.

DeNA, SCSK, Cyboz등의 일본기업에도 도입사례가 있다.

공식사이트에는 웹사이트와 데이터웨어하우스향이라고 명기되어있지만, 조건이 맞으면 기반업무시스템에도 이용가능으로, 경비삭감이 예상된다.









'IT > MySQL' 카테고리의 다른 글

MySQL Communication layer(TCP/IP)  (0) 2016.10.04
MySQL의 Replication  (0) 2016.10.04
MySQL에서 , 데이터베이스 사이즈 확인하는 방법  (0) 2016.10.04
MySQL 인스톨(binary 설치)  (0) 2016.10.04
MySQL의 특징  (0) 2016.10.04
블로그 이미지

swhwang

,