본문 바로가기

기타/디지털

MySQL 팁 정리

1. InnoDB 백업 및 복구

Case Study )

MySQL 3.23.55 -> MySQL 4.0.21
MySQL 3.23.55 : MyISAM + InnoDB
3.23.55의 my.cnf와 4.0.21의 my.cnf가 다를 경우

1) 서버 Shutdown
2) 바이너리 백업
3) 두 버전 사이의 my.cnf 비교

innodb 테이블 파일 사이즈와 로그 파일 사이즈 체크
기존 하위 버전의 테이블 파일 사이즈와 로그 파일 사이즈로 같게 설정
데이터베이스 복구
mysqld 데몬 시작 및 에러 체크

Ref ) http://dev.mysql.com/doc/mysql/en/Backing_up.html

2. innodb 또는 로그 파일을 추가


Ref ) http://dev.mysql.com/doc/mysql/en/Adding_and_removing.html

3. UNION vs OR in SELECT 구문

SELECT * FROM tbl_name WHERE col_name='val' OR col_name='val'
->
SELECT * FROM tbl_name WHERE col_name='val'
UNION
SELECT * FROM tbl_name WHERE col_name='val'
테이블이 클 경우 UNION이 OR보다 더 빠르다.

4. 테이블 권한

Tables_priv 권한을 줄 때,
Update 권한은 Table_priv에 Select 권한과 함께 주어야 한다.
Update 권한만 있으면 Update 되지 않는다.

5. SQL Parsing 순서

FROM 절
WHERE 절
GROUP BY 절
HAVING 절
SELECT 절
ORDER BY 절

6. root 패스워드 분실시

(1) ./killall mysqld (데몬을 모조리 죽임)
(2) ./bin/safe_mysqld --skip-grant &
(3) mysql> UPDATE user SET Password=PASSWORD('newpasswd') WHERE
user='root';
(4) mysql> FLUSH PRIVILEGES;

7. MySQL to MSSQL Migration

Requirement : MySQL ODBC Driver
Tool : MS SQL Server DTS (Data Transformation Services) Wizard