반응형
반응형
반응형



# mysql root계정으로 접속

$> mysql –uroot –p


# 입력한 시간 이전의 bin로그를 삭제

mysql> purge binary logs before '2014-03-01 00:00:00’;





반응형

'Database > Mysql' 카테고리의 다른 글

[API] 앱 버전 체크 시 사용할 만한 쿼리  (1) 2017.10.11
mysql 에서 unix time 구하기  (0) 2015.09.23
mysql dump  (0) 2014.03.24
[mysql] InnoDB  (1) 2014.03.24
사용자 추가  (0) 2013.09.04
반응형


DB전체 덤프

mysqldump -u[아이디] -p[비밀번호] -all-databases > [저장될 파일명]


DB만 덤프

mysqldump -u[아이디] -p[비밀번호] [디비명] > [저장될 파일명]


테이블 구조만

mysqldump -u[아이디] -p[비밀번호] --no-data [디비명] [테이블명] > [저장될 파일명]


테이블구조를 제외한 데이터만 덤프

mysqldump -u[아이디] -p[비밀번호] --no-create [디비명] [테이블명] > [저장될 파일명]



==복구 ==

덤프파일을 이용한 복구

mysql -u[아이디] -p[암호][디비명] < [파일명]


패스워드 동시 입력시 복구 안되면

mysql -u[아이디] -p[공백][디비명] < [파일명]



/etc/my.cnf

 - datadir=/var/lib/mysql



반응형

'Database > Mysql' 카테고리의 다른 글

mysql 에서 unix time 구하기  (0) 2015.09.23
mysql bin log 삭제.  (0) 2014.05.15
[mysql] InnoDB  (1) 2014.03.24
사용자 추가  (0) 2013.09.04
루트 비밀번호 설정, 변경.  (1) 2013.09.04
반응형


1. MyISAM

 1) 예전의 MySQL 의 Storage Engines 으로 MyISAM 을 사용했었습니다.

    예를 들자면 블로그라던지, 게시판 처럼 한사람이 글을 쓰면 다른 많은 사람들이 글을 읽는 방식에

    최적의 성능을 발휘를 하지요. 지금도 많이 사용하고 있는 방식입니다.


 2) 제공하는 웹서비스다 그닥 크지 않다면 이것을 사용해도 괜찮다고 생각을 합니다.



2. InnoDB

 1) 트랜잭션-세이프 스토리지 엔진입니다.


 2) MyISAM 과 비슷하지만 ORACLE 처럼 많은 기능을 지원을 합니다.

   (* commit, rollback, 장애복구, row-level locking, 외래키 등)


 3) 다수의 사용자 동시접속과 퍼포먼스가 증가하여 대용량 데이터를 처리할 때 최대의 퍼포먼스를 내도록 설계되었습니다.

   CPU효율은 어느 디스크 기반의 데이터 베이스와 비교해도 손색이 없고

   자체적으로 메인 메모리 안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀(pool)을 관리합니다.


 4) 테이블과 인덱스를 테이블 스페이스에 저장을 하고 테이블 스페이스는 몇개의 서버파일이나 디스크 파티션으로

   구성되어있습니다. 이것은 MyISAM 과 다른 점인데, MyISAM은 테이블과 인덱스를 각각 분리된 파일로 관리합니다.

   여기서 중요한것이 이제 InnoDB 를 제대로 사용을 하기 위해서는 테이블 스페이스 라는 개념을 파악을 하셔야합니다.

   이것에 대해서는 밑에서 따로 언급을 하겠습니다.


 5) InnoDB 테이블은 OS의 파일 사이즈 한계가 2GB이더라도 상관없이 어느 크기나 가질 수 있습니다.


 6) InnoDB는 높은 퍼포먼스가 필요한 대용량 사이트에 적합합니다.



3. InnoDB 사용하기

 1) InnoDB 는 MyISAM 과 공유하는 메모리도 있지만 별도의 Buffer pool을 가지고 있으니까

   InnoDB 전용 DB를 구성한다면 MyISAM 이 사용하는 record_boffer 과 key_buffer 에 너무 많은 메모리를 할당하지 마세요


 2) InnoDB 설정

   ㄱ) MySql 을 설치한 폴더 아래에 ibdata 와 iblogs 폴더를 생성합니다.

   ㄴ) my.ini 파일 설정을 변경

      * innodb_buffer_pool_size

        - 현재 자신의 시스템 메모리의 50~80% 사이로 만듭니다.

           x86 시스템에서는 2G 이상 설정을 할 수 없습니다.

      * innodb_additional_mem_pool_size

        - 데이터 사전정보 나 내부의 데이터 구조 정보를 담는 메모리 입니다.

           보통 2M 정도 잡아주면 아주 많은 테이블을 사용한다면 좀 늘려주시면 됩니다.

           만약 메모리공장이 부족하면 error log 에 warning 메서지를 남기니 그때 늘려주세요

      * innodb_flush_log_at_trx_commit

        - insert, update 등 데이터 삽입과 관계가 있습니다.

           commit 을 하였을때 그 즉시 commit 된 데이터를 log file 에 기록할지 안할지를 설정합니다.

           로그파일을 기록할 경우 갑작스러운 경우 데이터 손실을 막을 수 있지만 매번 로그를 기록하므로 속도가 저하됩니다.

           1 일경우 기록을 하는것이고, 0일 경우 기록을 안하는것입니다.

      * innodb_log_file_size

        - 트랜잭션을 기록하는 로그 파일의 크기를 결정하는 옵션입니다.

           inno_buffer_pool_size 옵션은 성능을 위한것이지만 시스템이 다운되었을 경우 데이터가 손실이 되므로

           이것을 방지하기 위해 log file 을 만들어서 commit 될때마다 로그에 기억을 하고 자동복구를 합니다.

           로그파일은 무한정 계속 커지는 것이 아니라 일정한 크기와 갯수를 가지고 순환식으로 처리되므로 크기는 

           inno_buffer_pool_size 의 15% 정도로 설정을 합니다.

           만약 메모리가 1기가이면 inno_buffer_pool_size = 512M 이고, innodb_log_file_size = 80M 가 됩니다.

      * innodb_log_buffer_size

        - 로그 파일을 기록하기 위한 버퍼 사이즈입니다.

          트랜잭션이 작거나 거의 없다면 크게 잡는것은 낭비이므로 보통 1M~8M 사이로 설정을 합니다.


      [mysqld]


      innodb_data_home_dir="C:/MySQL/MySQL Server 5.0/ibdata/"

      innodb_log_group_home_dir="C:/MySQL/MySQL Server 5.0/iblogs"

      innodb_data_file_path=ibdata1:10M:autoextend:max:1000M

      innodb_additional_mem_pool_size=3469K

      innodb_flush_log_at_trx_commit=1

      innodb_log_buffer_size=2M

      innodb_buffer_pool_size=256M

      innodb_log_file_size=40M

      innodb_thread_concurrency=8

      innodb_log_archive=0


   ㄷ) my.ini 을 수정했으면 mysql 서버를 재시작합니다.


 3) InnoDB 테이블 만들기

   create table test_inno (

   ~

   )type=innodb;

   으로 맨 마지막에 type=innodb; 라고 명시해주시면 됩니다.


 4) InnoDB 트랜잭션 사용

  ㄱ) 트랜잭션을 사용하기 위해서는 처음에 set autocommit=0; 이나 begin; 을 선언해야 합니다.

      선언 후 데이터 변경이 있을 때, 이상이 없을 경우는 commit를 하고, 이상이 있을 경우 rollback을 실행합니다.

      오라클이랑 비슷하다고 보시면 되요


      mysql>set autocommit=0; //begin; 같음

      mysql>insert into test_inno values (1,'aaa');

      mysql>select * from test_inno; //현재창에서는 입력한 내용이 보이지만 다른창에서는 보이지않음

      mysql>commit; //다른창에서 select를 할경우 입력한 값이 보임 



4. InnoDB 테이블 스페이스

 좀전에 MyISAM 과 차이점이 InnoDB 는 테이블과 인덱스를 테이블 스페이스 라는곳에 저장을 한다고 하였습니다.

 그런데 사용을 하다보니 점차 DB가 늘어나서 테이블 스페이스가 FULL 이 발생하는 경우가 생깁니다.


 4.0.x 버전부터는 일일이 할 필요가 없다는 글이 있는데 그래도 FULL이 발생하였을 때 대처방법을 알면 좋겠죠


 my.ini 에서 아래와 같이 추가를 해주면 안됩니다.

 innodb_data_file_path = /ibdata/ibdata1:1000M:autoextend 라고 할 경우 

 innodb_data_file_path = /ibdata/ibdata1:1000M;/ibdata/ibdata2:1000M:autoextend 라고 ibdata2를 추가하면 안됩니다.


 아래와 같은 과정대로 하세요


 1. Use mysqldump to dump all your InnoDB tables. 

 2. Stop the server. 

 3. Remove all the existing tablespace files. 

 4. Configure a new tablespace. 

 5. Restart the server. 

 6. Import the dump files. 


 즉, 일단 mysqldump 로 InnoDB 테이블의 전체 덤프뜬 다음 MySQL 서버를 중지시킵니다.

 그다음 테이블스페이스 파일을 모두 지우고 테이블스페이스를 아래와 같이 추가를 합니다.

 innodb_data_file_path = /ibdata/ibdata1:1000M;/ibdata/ibdata2:1000M:autoextend

 그다음 MySQL 서버를 구동시킨다음 처음에 덤프뜬 파일을 import 하시면 됩니다.

 


5. 마지막으로

 위의 단계처럼 참 어렵게 설정을 하였지만, mysql.com 사이트에 들러보시면 MySQL GUI Tools 라는 프로그램이 있습니다.

 물론 무료로 다운로드 가능하고요, 이 프로그램을 설치를 하면 MySQL Administrator 라는 것이 있는데 이것을 통해서

 아주 쉽게 MySQL 의 설정을 변경하실 수 있습니다.


반응형

'Database > Mysql' 카테고리의 다른 글

mysql bin log 삭제.  (0) 2014.05.15
mysql dump  (0) 2014.03.24
사용자 추가  (0) 2013.09.04
루트 비밀번호 설정, 변경.  (1) 2013.09.04
[php] db 사용량 구하기.  (1) 2012.12.13
반응형

# altibase 계정으로 접속.


# 서버 구동.

$ cd $ALTIBASE_HOME/bin

$ ./server start



# 관리가 계정으로 접속

$ isql -s 127.0.0.1 -u sys -p manager


# 사용자 비번 변경.

iSQL> alter user web identified by user_name;



반응형
반응형


// sysdba 로그인

$ is


// 메모리 table 인지 disk table 인지 확인

// table space 에서 확인 가능

isql> desc tb_name

TABLESPACE : SYS_TBS_MEMORY



// 남은 메모리 확인

isql> select mem_free_page_count from v$database;


// 할당된 메모리 확인

isql> select mem_max_db_size from v$database;




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

---- 할당 메모리 크기 수정 ----

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


// altibase 계정으로 접속

su - altibase


// config 파일 수정

vi altibase_home/conf/altibase.properties


// 해당 부분 수정

MEM_MAX_DB_SIZE


반응형

'Database > Altibase' 카테고리의 다른 글

[Altibase] alter table 컬럼 변경.  (2) 2019.10.29
[altibase] 구동 및 사용자 비번 변경.  (0) 2014.03.24
[altibase] 테이블스페이스 관리.  (0) 2014.03.24
[altibase] lock 걸린 쿼리 확인.  (0) 2014.03.24
altibase export  (3) 2014.03.24
반응형

# Altibase 버전

$ altibase -v



# tablespace 생성

iSQL> create tablespace 테이블스페이스명 datafile '파일명(tbs_users01.dbf)' size 10M autoextend on next 1M maxsize 100M;



# memory tablespace 사용량을 조회

iSQL> select 'MEM TOTAL SIZE' tablespace_name, round(MEM_MAX_DB_SIZE/1024/1024)  as 'max size(M)'   ,

round((MEM_MAX_DB_SIZE - MEM_ALLOC_PAGE_COUNT*32*1024)/1024/1024) as 'free size(MB)',

round(MEM_ALLOC_PAGE_COUNT*32*1024/1024/1024)  as 'alloc size(MB)',

round((MEM_MAX_DB_SIZE - MEM_ALLOC_PAGE_COUNT*32*1024)/MEM_MAX_DB_SIZE*100, 2) as 'free %'

from v$database

union all

select SPACE_NAME tablespace_name, 

case2(space_id =1, 0, round(case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE)/1024/1024)) as 'total size(MB)',

case2(space_id =1, 0, trunc((case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE) - CURRENT_SIZE)/1024/1024)) as 'free size(MB)',

round(ALLOC_PAGE_COUNT*32*1024/1024/1024)  as 'alloc size(MB)',

case2(space_id =1, 0, trunc((case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE) - CURRENT_SIZE)/case2(MAXSIZE=0,CURRENT_SIZE,MAXSIZE)*100,2)) 'free %'

from  v$mem_tablespaces

where SPACE_ID <> 0;



# user memory tablespace 사용량

# current_size 는 '테이블스페이스의 현재 크기' : 100M 의 테이블스페이스를 만들었다면  current_size는 100M

# 테이블스페이스의 실 사용량 : (ALLOC_PAGE_COUNT - FREE_PAGE_COUNT)*32/1024 (MB)

iSQL> SELECT 

UF.SPACE_NAME SPACENAME, 

ROUND(UF.MAXSIZE/1024/1024, 3)||' MB' MAXSIZE , 

ROUND(UF.ALLOC_PAGE_COUNT*32/1024, 3)||' MB' CURRSIZE, 

NVL(to_char(ROUND((UF.ALLOC_PAGE_COUNT - UF.FREE_PAGE_COUNT)*32/1024,3)),'N/A')||' MB' USEDSIZE, 

ROUND((UF.ALLOC_PAGE_COUNT-UF.FREE_PAGE_COUNT) / UF.ALLOC_PAGE_COUNT * 100, 3) ||' %' USAGE 

FROM 

V$MEM_TABLESPACES UF




# 메모리 테이블 스페이스에 속한 인덱스의 사용율

iSQL> SELECT  C.USER_NAME index_owner,

        E.INDEX_NAME index_name,

        case2(E.INDEX_TYPE=1,'B-TREE', E.INDEX_TYPE=2,'R-TREE') INDEX_TYPE

        , '(Memory)'||'16 bytes * ROWCOUNT ' 'allocate(M)'

        , table_name

FROM X$INDEX B,

     SYSTEM_.SYS_USERS_ C,

     V$MEM_TABLESPACES D,

     SYSTEM_.SYS_INDICES_ E,

     SYSTEM_.SYS_TABLES_ F

WHERE B.INDEX_ID = E.INDEX_ID

  AND E.USER_ID = C.USER_ID

  AND F.USER_ID = E.USER_ID

  AND F.TBS_ID = D.SPACE_ID

  AND F.TABLE_OID = B.TABLE_OID

  and c.user_id <> 1;



# 메모리 테이블 스페이스에 속한 테이블의 사용율

iSQL> SELECT USER_NAME table_owner, TABLE_NAME table_name, ROUND((FIXED_ALLOC_MEM + VAR_ALLOC_MEM)/1024/1024 ) 'allocate(M)', 'MEMORY' as TYPE

FROM SYSTEM_.SYS_TABLES_ A, SYSTEM_.SYS_USERS_ B,

     V$MEMTBL_INFO C

WHERE A.USER_ID = B.USER_ID

  AND A.TABLE_OID = C.TABLE_OID

  AND B.USER_ID <> 1

  AND TABLE_TYPE = 'T';




# 메모리 테이블 스페이스 크기 변경

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

$ altibase_home/conf/altibase.properties

MEM_MAX_DB_SIZE 값 설정


$ server restart

iSQL> select name, value1 from v$property where name like '%MEM_MAX%';

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


# Disk 테이블 스페이스 크기 변경.

iSQL> select id, name from v$tablespaces;

iSQL> select spaceid, name from v$datafiles;

iSQL> alter tablespace tbsname alter datafile 'datafile path' size 10G;





============================ 테이블 스페이스 확인 및 추가 =============================

iSQL> set linesize 300

iSQL> set colsize 50



used size 가 alloc size 보다 작은데 table space full 에러가 발생하는 이유.

 - 특정 테이블이 allocation 을 잡아놓고 free 해놓아서 그 테이블만의 공간으로 할당되어 있어서.




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

############ 테이블 별 table space 사용 내역. ############

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


select d.user_name||'.'||c.table_name as NAME,

a.name as tablespace_name ,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_TOTAL_COUNT)/1024/1024||' MB'  as allocSize,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_FULL_COUNT)/1024/1024||' MB'  as usage

from v$tablespaces a, v$segment b, system_.sys_tables_ c, system_.sys_users_ d 

where a.id = b.space_id 

and c.table_oid = b.table_oid 

and c.user_id=d.user_id 

group by a.name, name, d.user_name||'.'||c.table_name order by NAME asc;




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

############ table space 파일 내역. ############

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


select ID, NAME, MAXSIZE, CURRSIZE, AUTOEXTEND, STATE from v$datafiles;




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

############ table space 사용 내역. ############

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


select a.name, a.TOTAL_PAGE_COUNT*8/1024||' MB' as MAXSIZE,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_TOTAL_COUNT)/1024/1024||'MB'  as allocSize,

sum(a.a_EXTENT_PAGE_COUNT*a.page_size*b.EXTENT_FULL_COUNT)/1024/1024||'MB'  as usage 

from v$tablespaces a, v$segment b, system_.sys_tables_ c, system_.sys_users_ d 

where a.id = b.space_id and c.table_oid = b.table_oid and c.user_id=d.user_id group by a.name, a.TOTAL_PAGE_COUNT*8/1024;




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

############ table space 파일 추가. ############

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


alter tablespace tbs_data add datafile '/DATA/altibase/dbs/tbs_data_10.dbf' size 2G autoextend off;



autoextend off

 - 데이터들이 insert 될 때마다 , OS 에다가 파일에 대한 exetend 를

   요청하게 되면 , 그 extend 를 받아 오기 위한 i/o 및 부하가 발생을 해서

   성능이 지연되는 현상이 발생할 수 잇어요

   그래서 데이터 파일은 미리 2G 를 만들어 놓고 내부적으로 사용하는게 좋습니다. 


DB2 에도 추가.

 - 테이블 create , index create 등의 스키마(DDL) 작업은 이중화 안됩니다





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

############ 메모리 table space 확인. ############

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


select 

trunc(mem_max_db_size/1024, 2) as max_mem_kb,

trunc(mem_alloc_page_count*32, 2) as alloc_mem_kb,

trunc(mem_free_page_count*32, 2) as free_mem_kb 

from v$database;




4.3.9 는 메모리테이블 스페이스가 하나밖에 없음.

MEM_DB_MAX_SIZE : DB 내부 프로퍼티로 데이터 사용 제한 값.

메모리 테이블 스페이스가 부족하면 해당 프로퍼티를 수정하고 재구동.

 - /home1/altibase/altibase_home/conf/altibase.properties



반응형
반응형

쿼리 타임 아웃 발생.

 - lock 걸린 테이블, 쿼리 확인 하는 방법.




############ ADMIN 접속.

#######################


[altibase@db1 ~]$ is




############ timeout 설정 확인.

##############################


iSQL> select name, value1 from v$property where name like '%TIMEOUT%';

QUERY_TIMEOUT                   600  



############ LOCK 걸려있는 테이블 확인.

######################################


iSQL> select * from v$lock;

TABLE_OID            TRANS_ID             LOCK_DESC                       LOCK_CNT    IS_GRANT             

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

9964328              3724279844           IS_LOCK                         1           1                    

9978448              2457200667           IX_LOCK                         1           1                    

9981272              3724279844           IS_LOCK                         1           1   




iSQL> select TABLE_NAME from system_.sys_tables_ where TABLE_OID in (select TABLE_OID from v$lock);

TABLE_NAME                      

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

XXX_GENERAL                     

XXX_RESULT_CONTENTS             

XXX_SPAM                        

3 rows selected.




############ LOCK 걸린 쿼리 확인.

#################################


iSQL> select QUERY, SESSION_ID from v$statement where tx_id in (select TRANS_ID from v$lock);

QUERY                                               SESSION_ID           

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

SELECT *  FROM   XXX_GENERAL        LEFT OUTER JOI  6381588              

N XXX_PAMS ON RECIPIENT_ADDRESS = TEL WHERE  (RESE                       

RVE_TRANS_TIME IS NULL OR RESERVE_TRANS_TIME < SYS                       

DATE )        AND (STATUS_TYPE = '00'                                    

OR STATUS_CHANGE_DATE < (SYSDATE-(TRUNC(10)/24/60)                       

)            )                                                           

UPDATE XXX_RESULT_CONTENTS SET    CONTENT_SIZE = ?  6381588              

  WHERE  CONTENT_ORGIN_NAME = ?                                          

2 rows selected.



############ 주의) 해당 쿼리 종료.

#################################

alter database mydb session close 세션id

반응형
반응형

// 데이터베이스 구조 추출

# aexport -s 127.0.0.1 -u iscp -p iscp1


// 데이터 추출

# sh run_il_out.sh


// 대상 데이터베이스에 데이터베이스 구조 생성

# sh run_is.sh


// 대상 데이터베이스에 데이터 로딩

# sh run_il_in.sh


// 대상 데이터베이스에 인덱스 및 외래키 생성

# sh run_is_index.sh

# sh run_is_fk.sh


iSQL> create tablespace my_test_tbspace datafile 'my_test.dbf' size 100M autoextend on next 5M;

iSQL> create user my_test identified by myt1 default tablespace my_test_tbspace;

iSQL> grant all privileges to my_test;


/home/altibase/altibase_home/bin server start


반응형
반응형

 

username 사용자생성 & dbname 데이터베이스에 권한 부여.

 

mysql> grant all privileges on [dbname].* to [username]@localhost identified by 'password' with grant option;
mysql> FLUSH PRIVILEGES;

반응형

'Database > Mysql' 카테고리의 다른 글

mysql dump  (0) 2014.03.24
[mysql] InnoDB  (1) 2014.03.24
루트 비밀번호 설정, 변경.  (1) 2013.09.04
[php] db 사용량 구하기.  (1) 2012.12.13
외래키 설정 방법.  (0) 2012.04.10
반응형


mysql> use mysql;
mysql> update user set password=password('123456') where user='root';
mysql> flush privileges;

 

반응형

'Database > Mysql' 카테고리의 다른 글

[mysql] InnoDB  (1) 2014.03.24
사용자 추가  (0) 2013.09.04
[php] db 사용량 구하기.  (1) 2012.12.13
외래키 설정 방법.  (0) 2012.04.10
[jdbc] connection 연결시 캐릭터셋 설정.  (0) 2012.02.29

+ Recent posts