디비 덤프 시 아래와 같은 오류가 있는경우 체크 할 사항 # 덤프 시 에러내용 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
# 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 -> 데몬 재시작으로 적용한다
mysqlcheck --check --databases [database name]
cubrid 에서 슬로우 쿼리 뽑기(cubrid slow query) 명령어는 큐브리드 브로커 로그가 있는 곳에서 실행한다. # 하나의 로그 파일에서 슬로우 쿼리 뽑기 broker_log_top broker1_1.sql.log # 모든 로그 파일에서 슬로우 쿼리 뽑기 broker_log_top *.log # 특정 기간동안 슬로우 쿼리 뽑기 - 11월 11일부터 11월 12일까지 생성된 SQL 로그에서 슬로우 쿼리 뽑기 - 월과 일은 공백으로 구분한다 - Windows에서는 "*.sql.log"를 인식하지 않으므로 SQL 로그 파일들을 공백으로 구분해서 나열해야 한다. broker_log_top -t -F "11 11" -T "11 12" *.sql.log # 결과 확인 $CUBRID_PATH/log_top.q 파일에 생성 됨
// mysql root password 등록 [root@linux mysql]# mysql -u root -p mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 1 to server version: 4.0.23-Max Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> update user set password=password('비밀번호입력') where user='root'; Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> flush privileges; <== mysql 재시동 Query OK, 0 rows affected (0
[콘솔에서 커넥션수 알아내기] # mysqladmin -u root -p 비밀번호 | grep max_connection | max_connections | 100 [mysql에서 커넥션수 알아내기] show variables like '%max%';
cubrid 특정 테이블 unloaddb, loaddb 명령어 사용법 # 특정 테이블 unloaddb 하기백업하고자 하는 디비명을 파일에 기록하고 명령어를 수행하면 된다. cubrid unloaddb -i 파일명 데이터베이스명 # 특정 테이블 loaddb 하기스키마와 인덱스를 제외한 오브젝트 파일만 loaddb 하면 된다. cubrid loaddb -u dba -d mynews3_ezyecono_objects mynews3_solo
mysql replication 동기화 늦어지는 문제 skip-networking 옵션값을 off시켜야 한다. # etc/my.cnf 파일에서 아래처럼 주석처리 하면 된다. #skip-networking
# 업데이트UPDATE 데이터베이스명.테이블명 SET 변경될컬럼 ='변경될컬럼값' WHERE 변경할컬럼값='변경할컬럼값';
alter table 을 이용해서 기존의 생성된 테이블의 엔진(Heap, MyIsam, InnoDB...)을 변경하기 [테이블의 엔진 변경하기] 형식) ALTER TABLE [테이블명] ENGINE=[변경할 타입명] 형식) ALTER TABLE `tc_BlogStatistics` ENGINE = InnoDB 형식) ALTER TABLE `tc_BlogStatistics` ENGINE = MyIsam