2009년 8월 31일 월요일

로그활용3 - 일반로그

log(--log)
MySQL서버처리를 상세하게 기록하는 로그파일이다. 언제 어떤유저(포함하는 호스트)가 접속해서 어떤 쿼리를 실행했는가가 상세하게 기록된다.
기록은 MySQL서버가 접수한 순서대로 기록된다. 트랜잭션 상태는 고려하는 않는다.
어플리케이션과 연계 디버그나 보안감사에 사용할 수 있다.

이 옵션을 지정하면 general-log옵션이 자동적으로 ON이 된다.
다음처럼 지정한다.

log[=파일명]

파일이름을 생략하면 datadir/호스트명.log파일이 된다. 이 파일은 FLUSH LOGS로는 로테이트되지 않는다. 또 서버 재기동시에도 로테이트하지 않는다.
이 파일을 로테이트하려면 Unix계열에서는 다음처럼 한다.

log를 로테이트한다.
root@shell# mv hostname.log hostname.log.0
root@shell# mysqladmin flush-logs

general-log(--general-log)

general-log는 MySQL5.1이상에서의 기능이다. 이 옵션을 지정하면 mysql.general_log테이블에 General로그가 출력된다.
옵션은 다음처럼 지정한다.

general-log

또, MySQL서버 기동중에 SET문으로 값을 변경하면 유효로 할 수 있다.

MySQL서버기동중에 general-log를 유효로 세팅
mysql> SET GLOBAL general_log=1;

mysql.general_log테이블이 존재하지 않는 경우는 mysql_fix_privilege_tables스크립트를 실행하고 테이블을 작성해야한다. 이 테이블은 CSV스토리지엔진으로 작성되어 있다.
또, 이 옵션이 지정된 경우 보통 --log로 지정된 파일에는 로그를 기록하지 않는다.
주의점은 이 테이블의 캐릭터셋이다.

general_log
CREATE TABLE `general_log`(
...
중략
`command_type` varchar(64) DEFAULT NULL,
`argument` mediumtext
) ENGINE=CSV DEFAULT CHARSET=utf8

이 처럼 실행한 SQL문은 argument헤더에 utf8캐릭터셋으로 기록된다.
만약 UTF-8로 변환불능한 문자가 쿼리에 포함되어 있었을 경우는 이 부분 기록은 옳바르지 않게 된다.
덧붙여 말하면 mysql.general_log테이블에 대해서 DELETE/UPDATE/INSERT문은 실행할 수 없다. FLUSH LOGS를 실행해도 내용은 없어지지 않지만 TRUNCATE TABLE문을 사용해서 내용을 전부 제거하는 것은 가능하다. 또 이 옵션이 무효인 경우(general로그를 출력하지 않을 때)에는 ALTER TABLE문으로 스토리지엔진을 바꾸거나 DROP TABLES문으로 파기하는 것도 가능하다.

log-output(--log-output)

log-output는 general로그와 slow query로그 출력위치를 지정한다.

log-output=값[,값]

값에는 TABLE, FILE, NONE을 지정할 수 있다.

TABLE: mysql.general_log테이블에 쓴다.
FILE: --log옵션으로 지정된 파일에 쓴다.
NONE:로그를 출력하지 않는다. 다른 지정보다 우선도가 높다.

또 , 값을 "," 로 복수 지정하는 것도 가능하다.

log-output=FILE,TABLE

이 경우는 파일과 테이블 양쪽에 출력하게 된다.
log-output는 MySQL서버기동중에 SET문을 사용해서 변경하는 것도 가능하다.

MySQL서버 기동중에 출력위치를 변경
mysql>SET GLOBAL log_output="FILE,TABLE";



2009년 8월 27일 목요일

로그활용2 - 에러로그

log-error(--log-error)

log-error는 실행중의 에러정보와 기동,정지시의 시각을 기록한다.

Unix계의 mysqld는 에러를 표준에러에 출력한다.

출력된 에러는 mysqld_safe와 mysqlmanager가 받아 보존한다.

그러나 mysqld자신이 에러를 파일에 쓰는 옵션이 있다. 다음처럼 지정한다.

log-error[=파일명]

파일명이 생략된 경우 datadir/호스명.err파일이 된다.
FLUSH LOGS를 실행하면 로그는 로테이트가 되어 전에 있던 에러 파일은 로그파일명-old로 이름이 변경된다.

log-warnings(--log-warnings)
log-warnings를 지정하면 에러로그에 쓰여지는 정보가 늘어난다. Replication(복제)를 실행할 때에는 이 옵션을 사용하는 게 좋다.

log-warnings[=level]

[level]에 1이 넘는 숫자를 지정하면 접속이 정상적으로 끊어지지 않았다는 경고메세지 Aborted connections이 출력된다. 기본값은 1이다.




로그활용1

로그의 종류

MySQL로그에는 데이터베이스내에서 일어나는 여러가지 사건들이 기록되기때문에 로그를 읽는 것으로 데이터베이스서버 운용에 빠질 수 없는 중요한 정보를 얻는 것이 가능하게 된다.

MySQL 5.1.12-beta로그에는 다음과같은 것이 있다.
  • 에러로그(log-error/ log-warnings)
  • General로그(log/ general-log)
  • slow query로그(log-slow-queries / slow-query-log)
  • 바이너리 로그(log-bin)
  • ISAM로그(log-isam)
log-isam은 MyISAM 변경을 기록하는 파일이다.
개발자대상 디버그 정보가 기록되기때문에 보통은 사용하지 않는다.

MySQL은 기본적으로는 로그를 기록하지 않기때문에 로그를 기록할 경우는 mysqld 기동시에 기록하고픈 로그를 옵션으로 지정하던지 설정파일 my.cnf(또는 my.ini)의 [mysqld] 그룹에 기술한다.






2009년 8월 26일 수요일

로그의 활용

로그의 로테이트

로그를 로테이트하기위해서는 SQL문을 실행하던지 mysqladmin명령어를 실행한다.

로그의 로테이트
mysql> FLUSH LOGS;
또는
shell$ mysqladmin flush-logs
또는
shell$ mysqladmin refresh




2009년 8월 25일 화요일

MySQL 리커버리

바이너리로그로 리커버리

바이너리로그를 사용하면 point in time recovery(roll forward recovery)라고도 말할 수 있는 리커버리가 가능하다.

바이너리 로그는 mysqlbinlog로 SQL문으로 변환이 가능하다.

shell$ ./bin/mysqlbinlog ./data/host-bin.000001
...
...
shell$ ./bin/mysqlbinlog ./data/host-bin.000001 | mysql -uroot


리커버리를 위한 운용
운용에 있어서 리커버리를 전제로 백업을 생각해 둘 필요가 있다.
단순한 방법은 풀 백업을 작성할 때 한번 MySQL서버를 정지시키는 것이다.
그 다음 기동후부터 바이너리로그를 리커버리에 사용하면 되기 때문이다.

MySQL서버를 정지시키지 않은 상태에서 풀 백업을 실행하고 바이너리 로그를 순환생성(rotate)하고 풀백업후의 바이너리로그 위치를 알기 위해서는 다음과 같은 SQL문을 사용하면 될 것이다.

//리커버리를 고려한 풀 백업 준비
FLUSH TABLES WITH READ LOCK;
SHOW MASTER TABLES;
FLUSH LOGS;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSATION WITH CONSISTENT SNAPSHOT;


권한테이블 이외에 모든 InnoDB의 경우 mysqldump의 다음 옵션으로 실현가능하다.

[mysqldump]
flush-logs
master-data=2
single-transaction

또, 모든 테이블이 MyISAM테이블인 경우에는 mysqldump의 다음 옵션으로 가능하다.

[mysqldump]
flush-logs
master-data=2
lock-all-tables

이것으로 풀백업을 하고 바이너리로그의 위치를 아는 것이 가능하다.
다만 local-all-tables옵션의 경우 READ 록을 건다는 것을 잊지 말길 바란다.


2009년 8월 23일 일요일

MySQL 리스토어 (복구)

운영체제의 명령어로 복사
운영체제의 명령어로 파일 백업을 한 경우는 같은 형식으로 파일을 복사해서 되돌린다.
작업전에는 MySQL서버는 정지시켜둔다.

InnoDB의 경우는 데이터파일의 기술(파일 개수, 순번, 사이즈)를 백업과 동시에 할 필요가 있다.

innodb_data_file_path, innodb_log_files_in_group, innodb_log_files_size의 기술에 주의해야한다.

LOAD DATA, mysqlimport(mysqldump로 SQL문이 아닌 형태로 백업한 경우)
mysqldump의 다음 옵션을 사용해서 SQL문이 아닌 다른 형태(CSV등)로 데이터를 백업한 것을 리스토어하는 SQL문이 LOAD DATA이다.

--tab, --fields-terminated-by=, --fields-enclosed-by=, --fields-optionally-enclosed-by=, --fields-escaped-by=, --lines-terminated-by=

mysqlimport라는 명령어로도 리스토어 가능하다. mysqlimport는 내부에 LOAD DATA문을 실행하고 있다.

◎LOAD DATA
LOAD DATA를 사용할 때에는 다음을 주의해야한다.
  • 테이블은 별도 작성해둘 것
  • 실행에는 FILE권한이 필요.
◎mysqlimport명령어
mysqlimport는 LOAD DATA문을 사용해서 파일의 내용을 테이블에 흘려 넣는다.
필드구분자등의 옵션은 mysqldump을 실행했을 때와 일치시켜줘야한다.
구문은 다음과 같다.

mysqlimport [옵션] 데이터베이스명 파일명

mysqlimport는 my.cnf의 [mysqlimport] [client]그룹을 읽어들인다.

mysql명령어(mysqldump에서 SQL문으로 백업한 경우)
mysqldump로 출력된 내용은 보통 SQL문이다. SQL문이라면 mysql명령어로 리스토어가 가능하다.

mysql명령어로 리스토어
shell$ mysqldump --default-character-set=binary --hex-blob test > test_dump.sql
shell$ mysql --default-character-set=binary test < test_dump.sql

캐릭터셋 지정은 mysqldump, mysql명령어가 같아야한다.

RESTORE TABLE
BACKUP TABLE로 백업한 경우, 리스토어에는 RESTORE TABLE을 사용한다.
BACKUP TABLE과 마찬가지로 MySQL 5.2이후에는 없어질 예정이다. MyISAM테이블에서만 동작한다.
구문은 다음과 같다.

RESTORE TABLE 테이블명[,테이블명]... FROM '/저장될 디렉토리'

디렉토리는 풀 패스로 지정해야한다. 지정된 디렉토리에서 .frm과 .MYD파일을 복사해서 .MYI파일을 작성한다.


MySQL 백업4

InnoDB Hot Backup
InnoDB Hot Backup은 InnoDB개발회사인 Innobase Oy Inc(http://www.innodb.com/)에서 제공되는 유료 백업 툴이다.
이 툴은 서버를 정지하지 않고 InnoDB파일을 백업할 수 있다.
ibbackup이라는 명령어가 상품이다.

또 ibbackup은 /etc/my.cnf파일과 MyISAM테이블등은 백업하지 않는다.
ibbackup은 호출하는 innobackup이라는 Perl스크립트도 제공된다. 이것은 GPL v2이다.

innobackup은 frm파일과 MyISAM파일도 동시에 백업한다.

BACKUP TABLE
MySQL 5.2이후에는 없어질 예정이다. MyISAM테이블에서만 동작한다.

BACKUP TABLE 테이블명 [,테이블명] ... TO '저장할 디렉토리'

디렉토리는 풀 패스로 지정한다.
버퍼를 flush한 후 지정된 디렉토리에 .frm과 .MYD파일을 복사한다.
.MYI파일은 myisamchk 나 REPAIR TABLE USE_FRM으로 언제든지 재작성가능하다.
또, 백업중에는 테이블에 READ lock이 걸린다.


2009년 8월 18일 화요일

mysqldump를 이용한 백업

mysqldump는 논리 백업이다.

SQL문으로 데이터 내용을 얻는 것이 가능하다. 그렇지만 차분만 백업하는 것을 불가능하다.

사용방법은 다음과 같다.

mysqldump 옵션 데이터베이스명 [테이블명 [테이블명...] ]
mysqldump 옵션 --databases 데이터베이스명 [데이터베이스명..]
mysqldump 옵션 --all-databases

mysqldump는 my.cnf 의 [mysqldump] 그룹과 [client]그룹 설정을 읽어들인다.
옵션을 생략했을 경우는 다음과 같은 옵션이 지정된 것과 똑같다.

--opt --comments --tz-utc --set-charset --triggers

mysqldump와 데이터의 일관성
--single-transaction옵션은 InnoDB에 대해서 유효하다. 이 옵션은 다음 SQL를 실행한다.

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION WITH CONSISTENT SNAPSHOT;

이것으로 백업하는 모든 테이블이 InnoDB이면 데이터 일관성이 보증된다.
--master-data=2 옵션을 추가하면 바이너리 위치도 모순없이 기록된다.

InnoDB이외의 테이블 타입의 경우 일관성을 보증하고 싶다면 --lock-all-tables를 지정해서 테이블이 갱신되지 않게 록을 걸어 두어야 한다.

mysqldump와 캐릿터셋, 바이너리 데이터
mysqldump의 표준 캐릭터셋은 utf8이다.
만약 테이블 캐릭터셋이 utf8이 아니고 mysqldump에 --default-character-set=옵션을 지정하지 않으면 데이터의 문자코드 변환이 발생한다.

그러면 소실 혹은 다른 문자로 변환될 가능성이 있다. mysqldump를 사용할 때는 반드시 위 옵션을 지정해야한다.

데이터에 바이너리 컬럼이 포함되는 경우도 주의해야한다.
바이너리 컬럼이 포함되어있는 경우에는 다음과 같은 옵션을 지정한다.

--hex-blob

이것은 BLOB, BINARY필드값을 0xABCD같이 HEX리터널로 출력한다.
HEX리터널이기 때문에 리스토어할 때에 파괴될 걱정이 없어진다.

캐릭터셋은 데이터베이스 단위로 통일 시켜두는 게 좋다. 예를 들어 테이블 단위에 캐릭터셋을 변경한 경우 mysqldump를 실행해서 데이터베이스를 백업하면 다른 캐릭터셋이 혼재되어 출력된다.
SET NAMES의 구현은 불완전하기 때문에 안이하게 신용할 수도 없다.
따라서 캐릭터셋은 테이블 단위나 필드단위로 변경하지 않는 것이 좋다.




2009년 8월 17일 월요일

MySQL 백업3

mysqlhotcopy


1. 복사할 곳이 디렉토리인 경우
mkdir 복사할곳디렉토리/데이터베이스명
LOCK TABLES 테이블 READ;
FLUSH TABLES;
cp -p 테이블명.{frm, MYD, MYI} 복사할곳디렉토리/데이터베이스명/
UNLOCK TABLES;

2.복사할 곳이 데이터베이스인 경우
mkdir datadir/데이터베이스명
LOCK TABLES 테이블 READ;
FLUSH TABLES;
cp -p 테이블명.{frm, MYD, MYI} datadir/데이터베이스명/
UNLOCK TABLES;

3.복사할 곳이 지정이 없는 경우
mkdir datadir/데이터베이스명_copy
LOCK TABLES 테이블 READ;
FLUSH TABLES;
cp -p 테이블명.{frm, MYD, MYI} datadir/데이터베이스명_copy/
UNLOCK TABLES;

데이터베이스명은 복사하는 테이블이 포함되어있는 데이터베이스명이다.

4.옵션
--addtodest : 백업할 곳이 존재하는 경우 멈추지 않고 덮어 씌운다.
--allowold : 백업할 곳이 존재하는 경우 임시로 옮겨놓고 백업이 다 끝난 후 임시로 옮겨논 곳을 지운다.
--keepold : 백업한 곳이 존재하는 경우 임시로 옮겨놓고 백업을 진행한다.
--checkpoint 데이터베이스명.체크포인트테이블명 : 지정한 테이블에 작업기록을 남긴다. 테이블에는 다음과 같은 필드가 필요한다.
time_stamp timestamp not null
src varchar(32)
desc varchar(60)
msg varchar(255)
이 옵션을 지정하면 처음에 이 테이블에 대해서 SELECT가 실행된다.
--flushlog : 테이블 록을 건 다음 FLUSHLOGS를 실행한다.
--method={cp|scp}: scp는 아직 Alpha레벨
--noindices : 인덱스파일 전부를 복사하지 않는다. MYI파일 앞부분 2048바이트까지만 복사한다. myisamchk로 MYI는 작성가능
-q, --quit : 에러만 출력한다.
--record_log_pos 데이터베이스명.체크포인트테이블명 : 복사하기 전에 SHOW MASTER STATUS, SHOW SLAVE STATUS로 얻어진 로그 위치를 지정한 테이블에 기록한다. 테이블에는 다음과 같은 필드가 필요한다.
CREATE TABLE 테이블명 {
host varchar(60) NOT NULL,
time_stamp timestamp(14) NOT NULL,
log_file varchar(32) default NULL, -- SHOW MASTER STATUS의 File
log_pos int(11) default NULL, -- SHOW MASTER STATUS의 Position
master_host varchar(60) NULL, -- SHOW SLAVE STATUS의 master_host
master_log_file varchar(32) NULL, -- SHOW SLAVE STATUS의 master_log_file
master_log_pos int NULL, -- SHOW SLAVE STATUS의 master_log_pos
PRIMARY KEY(host)
}
이 옵션을 지정하면 처음에 이 테이블에 대해서 SELECT가 실행된다.
--resetmaster : 테이블 록을 건 후 복사하기 전에 RESET MASTER를 실행한다.
--resetslave: 테이블 록을 건후 복사하기 전에 RESET SLAVE를 실행한다.
--regexp 패턴 : 패턴에 맞는 데이터베이스를 복사한다.
--regexp /패턴1/./패턴2/ : 패턴1에 맞는 데이터베이스에 , 패턴2에 맞는 테이블을 복사한다.
--suffix= : 기본값은 --suffix=_copy 백업 이름의 접미사.

-u, --user= : 사용자명
-h, --host= : 호스트지정
-p, --password= : 패스워드 지정
-P, --port= : 포트번호 지정
-S, --socket= : 소켓파일지정

--debug : 상세한 정보를 표시
-n, --dryrun : 실제로는 실행하지 않음.




2009년 8월 11일 화요일

MySQL 백업2

mysqlhotcopy를 이용한 백업

mysqlhotcopy는 MyISAM, ARCHIVE테이블에서만 동작하는 Perl로 기술된 스크립트이다.
테이블에 록을 걸고 데이터를 복사한다.
사용하려면 DBD-mysql을 인스톨해야한다. mysqlhotcopy는 my.cnf의 [mysqlhotcopy]그룹과 [client]그룹을 읽어들인다.

사용방법은 다음과 같다.

mysqlhotcopy [옵션]
데이터베이스명[./정규표현/] [데이터베이스명[./정규표현/] ...]
[백업위치 데이터베이스명| 백업위치 디렉토리]

데이터베이스명./정규표현/은 테이블명을 지정하고 싶은 경우 사용한다. /정규표현/에는 테이블명을 선택하기 위한 패턴을 기술한다.

마지막 인수는 백업작성 장소이다 데이터베이스명이나 디렉토리명이나 상관없다. 디렉토리명인경우는 그이름에 [/]이나 [.]가 포함되게 해야한다.

백업위치 데이터베이스명을 생략한 경우에는 [데이터베이스명_copy]이라는 데이터베이스가 백업 데이터베이스 이름이 된다.

1. test데이터베이스를 test_copy데이터베이스에 백업
root@shell# mysqlhotcopy -u root test

2. test데이터베이스를 test_back데이터베이스로 백업
root@shell# mysqlhotcopy -u root test test_back

3. test데이터베이스를 /backup/10/test디렉토리로 백업
root@shell# mysqlhotcopy -u root test /backup/10/test


2009년 8월 6일 목요일

MySQL 백업

백업의 종류는 일반적으로 다음과 같이 분류된다.

  • 물리 백업
  • 논리 백업
  • 콜드(오프라인) 백업
  • 핫(온라인) 백업
MySQL에서는 모든 방법을 지원한다.

운영체제 명령어로 복사
데이터베이스가 사용하고 있는 파일과 파일 시스템을 운영체제 명령어(cp, tar, cpio, dd, dump등)로 복사하는 방법이다. 이 경우 MySQL서버가 작업도중으로 전혀 변경작업이 없는 것을 전제로 한다.

MySQL서버를 멈춰놓고 작업하면 모순없이 복사가능하다. InnoDB경우는 데이터파일이외에도 로그파일과 my.cnf파일도 복사해 놓는다.

MySQL서버운용중에 복사하려면 FLUSH TABLES WITH READ LOCK을 거는 방법도 있다.
모든 테이블이 한번 flush되어 LOCK TABLES READ가 걸린다. lock중에는 테이블변경은 기다려진다.

REPLICATION로 백업
replication을 사용하면 slave서버에는 항상 master의 복사(백업)가 되어있다. 더더욱 백업전용 slave서버를 작성해두면 서버스를 정지시키지 않은채 풀 백업을 slave에 보존할 수 있게 된다.

MySQL slave서버는 멈추든지, 기동하는지 master에는 영향을 끼치지 않는다.
이 성징을 이용해서 slave서버를 멈추게한 다음 mysqldump나 cp등을 이용해서 전체 백업이 가능하다. 이것은 세대관리도 되게 된다.

slave서버를 멈추는데는 STOP SLAVE를 실행한다. 그 다음에 SHOW SLAVE STATUS로 현재의 바이너리 로그 위치를 확인해 두고 FLUSH TABLES WITH READ LOCK등을 실행해 풀 백업을 해두면 좋을 것이다.

slave 서버를 셧다운하는 방법도 있지만 셧다운하는 경우에는 주의가 필요하다.
왜냐하면 임시 테이블(CREATE TEMPORARY TABLE), 메모리 테이블( CREATE TABLE ... ENGINE=MEMORY) 내용은 셧다운하면 전부 없어지지 때문이다.

이런 메모리타입 테이블을 이용하는 SQL이 있으면 셧다운 한 다음 slave 를 재개했을 때 데이터가 이상해지게 된다.





2009년 8월 3일 월요일

Windows에 있어서 mysqlmanager

mysqlmanager를 SCM에 추가
c:\mysql\bin>mysqlmanager --install

SCM등록명은 MySqlManager이다. Windows서비스 표시명은 MySQL Manager로 되어있으나 정식서비스명은 어디까지나 MySqlManager이다.

5.1.12-beta, 5.1.22-rc에서 --install할 때에 서비스명을 지정할 수 없다.
또 --defaults-file=옵션도 지정할 수 없다. 서비스명은 그렇다치더라도 --defaults-file=옵션조차도 지정할 수 없는 것은 사용감이 나쁘고 곤란한 점이다.

mysqlmanager를 SCM에서 삭제
c:\mysql\bin>mysqlmanager --remove


mysqlmanager를 SCM를 이용해서 기동/정지
mysqlmanager를 SCM에 등록한 뒤라면 NET명령어를 이용해서 mysqlmanager의 기동과 정지가 가능하다.

기동예
c:\mysql\bin> NET START MySqlManager

정지예
c:\mysql\bin> NET START MySqlManager


Windows의 mysqlmanager가 읽어들이는 파일
Windows용 mysqlmanager가 읽어들이는 my.cnf파일은 다음 파일뿐이다.
이것도 다른 명령어와는 다르기때문에 혼란을 일으키는 원인이 되고 있다.

  • mysqlmanager.exe파일이 존재하는 디렉토리에 있는 my.ini파일
  • --defaults-file=옵션에서 지정된 파일
또 , mysqlmanager용 패스워드파일은 표준에서는 다음과 같다.

  • mysqlmanager.exe파일이 존재하는 디렉토리에 있는 mysqlmanager.passwd파일

mysqlmanager정지

kill로 정지
root@shell# kill `cat /usr/local/mysql/data/mysqlmanager.pid`

pid파일은 mysqlmanager --help에서 보관위치를 확인할 수 있다.

mysql.server로 정지
만약 mysql.server init스크립트를 use-manager로 동작시키고 있다면 다음처럼 정지한다.
root@shell# mysql.server stop


mysqlmanager 옵션과 표준값

/etc/my.cnf의 [manager]그룹에 mysqlmanager옵션을 적을 수 있다.

[mysqlmanager]그룹이 아니니까 조심하자.

또 /etc/my.cnf에 여러개의 mysqld를 정의할 때도 설명했지만 MySQL 5.0.24/5.1.12-beta의 mysqlmanager는 다음의 파일만 읽어들인다. 다른 명령어처럼 my.cnf를 여러개의 디렉토리에서 찾아다니는 것은 아니니까 주의해야한다.

/etc/my.cnf파일(Windows에서는 mysqlmanager.exe가 존재하는 디렉토리에 있는 my.ini파일)
--defaults-file=옵션으로 지정된 파일

옵션리스트는 --help로 확인가능하다.

mysqlmanager의 옵션
shell$ ./bin/mysqlmanager --help

run-as-service옵션은 mysqlmanager를 데몬으로써 동작시킬 때 필요하다.
이것을 지정하지않으면 front(foreground)로 동작한다. mysqlmanager &로 하는 것도 가능하지만  데몬모드라는 기능이 있으므로 mysqlmanager --run-as-service를 사용한다.

권한등의관계로 /etc/mysqlmanager.passwd파일이 작성할 수 없는 경우에는 password-file옵션으로 패스워드 파일을 지정한다.

TCP포트번호도 port옵션으로 변경가능하다. bind-address옵션으로 Listen하는 IP주소도 지정가능하다.

monitoring-interval은 mysqld가 정지하고 있는가 아닌가 확인하는 간격이다.
default-mysqld-path는 mysqlmanager가 기동시키는 mysqld의 패스 지정이다.

--defaults-file옵션은 인수의 처음으로 하지 않으면 동작하지 않는다.