디비 덤프 시 아래와 같은 오류가 있는경우 체크 할 사항 # 덤프 시 에러내용 root@web:/var/lib/mysql5# mysqldump -u root -p database> database.sql Enter password: mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064) # 체크 할 사항 설치된 데이터베이스 서버와 클라이언트툴의 버전이 맞는지 체크한다. 서버의 경우 소스 컴파일하여 5.6.x를 설치하였지만 클라이언트툴은 rpm 으로 기본 설치된 5.0.x의 클라이언트툴이 PATH에 먼저 잡히면서 덤프 시 위와같은 오류가 있는 경우가 많다. 실제 설치한 경로에 있는 mysqldump 명령어를 활용하면 해결될 수 있따.
#####vi /etc/logrotate.d/mysql /var/lib/mysql5/db-slow.log {dailyrotate 7missingokpostrotate/opt/webapps/mysql5/bin/mysqladmin flush-logsendscript}################################################# #daily : 로그파일을 날짜별로 변환#rotate : 지정 갯수 이상되면 예전 log파일 삭제#missingok : 로그파일이 없더라도 오류를 발생시키지 않음#postrotate-endscript :사이에 들어있는 명령어 실행 ################################################# ####메일 스크립트#!/bin/bashYEAR=`date +%Y`MONTH=`date +%m`DAY=`date +%d`SUBJECT="$YEAR$MONTH$DAY DB 슬로우쿼리입니다"EMAIL="메일주소"EMAILMESSAGE="/var/lib/mysql5/db-slow.log-$YEAR$MONTH$DAY" /bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSA
# cubrid broker 주요 설정값 모음 [%BROKER1]SERVICE =ONBROKER_PORT =33000MIN_NUM_APPL_SERVER =10MAX_NUM_APPL_SERVER =100APPL_SERVER_SHM_ID =33000LOG_DIR =log/broker/sql_logERROR_LOG_DIR =log/broker/error_logAUTO_ADD_APPL_SERVER =ONSQL_LOG =NOTICETIME_TO_KILL =100SESSION_TIMEOUT =10KEEP_CONNECTION =AUTOSQL_LOG_MAX_SIZE =50000LONG_QUERY_TIME =0.8LONG_TRANSACTION_TIME =0.8 # 브로커 제공 파라미터(기본값)MASTER_SHM_ID int 30001 ADMIN_LOG_FILE string log/broker/cubrid_broker.log SERVICE string ON BROKER_PORT int 30000(최대값 : 65535) MIN_NUM_APPL_SERVER int 5 M
마스터 + 배포 + 슬레이브 서버로 구성 구성후 복제에이전트를 구동하면 슬레이브 디비에 연결되지 못하고 에이전트가 다운됨 배포서버에 이런 에러가 나옵 [Tue Aug 3 13:45:42 2010] : ERROR(178023): can't connect to the slave. - demodb2 [Tue Aug 3 14:15:30 2010] : ERROR(178023): can't connect to the slave. - demodb2 [Tue Aug 3 14:39:14 2010] : ERROR(178023): can't connect to the slave. - demodb2 [Tue Aug 3 17:16:32 2010] : ERROR(178023): can't connect to the slave. - demodb2 확인할 사항 1 배포DB에 dba 로 접속해서 select * from slave_info 결과 중 master_ip 값이 실제 슬레이브DB의 정보와 동일한지 확인 필요 확인할 사항 2 마스터 서버와 슬래이브 서버간 통신 상태를 확인. 배포데이터베이스 구성시 복제 서버 포트를 지정했을 것인데 관련 포트의 연결이 가능한지를 확인해 본다. 또한…
mysql 대용량 파일 insert 하기 (load data) LOAD DATA INFILE '로드 할 파일명' INTO TABLE 테이블명FIELDS TERMINATED BY '|'LINES TERMINATED BY ' '(컬럼명 쭉~~~~~~~~~`); FIELDS TERMINATED BY '|' : 컬럼을 구분자 구분자 지정LINES TERMINATED BY ' ' : 라인(줄)을 구분해줄 구분자. 보통 지정ignore 1 line : 등록할 파일명의 첫줄을 무시하고 insert LOAD DATA INFILE '로드 할 파일명' INTO TABLE 테이블명FIELDS TERMINATED BY '|'LINES TERMINATED BY ' 'ignore 1 line (a, b, c, d, e, f`);
# Linux9 + oracle9i 시스템에서 DB생성하가다 발생한 에러 [oracle@server oracle]$ ./dbca Initializing Java Vertual Machine from /tmp/OraInstall/jre/bin/jre. Pleae wait... /tmp/OraInstall/jre/bin/../lib/i686/green_threads/libzip.so: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference (libzip.so) Unable to initialize threads: cannot find class java/lang/Thread Could not create Java VM I tried setting LD_ASSUME_KERNEL=2.4.1 but it still doesn't work.Please help. Thanks # 해결방법 [oracle@server oracle]$ export LD_ASSUME_KERNEL=2.4.1
INSERT INTO mysql.user(User, Host, Password, ssl_cipher, x509_issuer,x509_subject) VALUES('유저아이디t', 'localhost', Password('패스워드'), '', '', ''); INSERT INTO `mysql`.`db` (`Host` ,`Db` ,`User` ,`Select_priv` ,`Insert_priv` ,`Update_priv` ,`Delete_priv` ,`Create_priv` ,`Drop_priv` ,`Grant_priv` ,`References_priv` ,`Index_priv` ,`Alter_priv` ,`Create_tmp_table_priv` ,`Lock_tables_priv` ,`Create_view_priv` ,`Show_view_priv` ,`Create_routine_priv` ,`Alter_routine_priv` ,`Execute_priv` ,`Event_priv` ,`Trigger_priv`)VALUES ('localhost', '디비명', '유저아이디', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
ERROR 2006 (HY000) at line 2631: MySQL server has gone away 정해진 패킷 사이즈 또는 timeout 을 초과하게 되면 아래와 같은 오류를 발생 이에 대한 해결책은 아래처럼 값을 임의로 조정. # vi /etc/my.cnf <-- 수정 max_allowed_packet = 1000M wait_timeout = 1200000 interactive_timeout = 10 connect_timeout = 100000
mysql strict mode off 구동 스크립트에서 "start" 부분에 off 옵션을 넣는다. $bindir/mysqld_safe --sql-mode="" --datadir="$datadir" ~~~~~~~~~~
mysql Replication 이용 중 마스터 디비의 데이터가 슬래이브 디비의 데이터에 반영되지 않을 경우 슬래이브 상태를 확인했을 때 아래와 같은 에러가 발생할 수 있다. 101008 19:48:58 [ERROR] Slave: Error 'Duplicate entry '222' for key 1' on query. Default database: 'M_SERVICE'. Query: 'INSERT INTO T_LOTTO_MY ( MY_SEQ,USERNO,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6,GAME_NUM,RANK,PRIZE,UPDATE_DATE ) VALUES ( null,'620013149754',4,18,25,44,16,8,409,'0',0,NOW() )', Error_code: 1062 원인은 슬래이브 데이터베이스에 갱신된 데이터를 쓰로고 할때 발생하는 에러이다. 슬래이브는 에러가 발생하면 더이상 마스터로부터 갱신된 데이터를 반영하지 않는다. 하지만 다행스럽게도 마스터에서의 갱신 정보는 슬래이브에 쌓여있어 위 문제를 해결하여 Replication을 정상화 시킬 수 있다. 해결책) 1. 슬래이브 상태를 멈춘다
# SQL처리 시 Temporary Table이 디스크에 사용되지 않도록 해야한다.# Temporary Table 현황 모니터링# Created_tmp_files 이 많다면 tmp_table_size를 늘려주기mysqladmin -uroot -p extended-status -r -i 1 | grep -E 'Created_tmp|--' 일부 쿼리는 Temporary Table을 메모리에 사용하지 않고 디스크를 바로 사용하는 경우가 있다.쿼리 자체를 수정하여 디스크를 사용하지 않도록 해야겠다. 임시 꼼수로.통계성 쿼리 질의 전에 세션 변수 설정(2G로 할당)을 한 후 해본다. 디스크 사용을 줄이기 위한 목적이지만 쿼리 자체를 수정하는게 더 좋은 방법임.set session tmp_table_size = 2 * 1024 * 1024 * 1024;set session max_heap_table_size = 2 * 1024 * 1024 * 1024;
# Mysql bin log 로테이션 방법 vi /etc/my.cnf ------------------------------------- log-bin=mysql-bin binlog_cache_size = 1M max_binlog_size = 100M expire_logs = 7 ------------------------------------- 로그파일 사이즈를 100M로 하고 갯수는 7개로 제한하는 설정이다. /etc/init.d/mysqld restart -> 데몬 재시작으로 적용한다