DBMS 2
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
Mysqlhotcopy는 Perl 스크립트로서 Tim Bunce이 작성한 프로그램이다. 이것은 데이터 베이스 백업을 빠르게 실행하기 위해 LOCK TABLES, FLUSH TABLES, 그리고 cp 또는 scp를 사용한다. 이것은 데이터 베이스 또는 단일 테이블을 백업하는데 가장 빠른 방법이기는 하지만, 데이터 베이스 디렉토리가 설치되어 있는 동일 머신에서만 구동을 한다. Mysqlhotcopy는 MyISAM 및 ARCHIVE 테이블 백업만을 할 수 있다. 이것은 유닉스와 NetWare에서 구동이 된다. 레귤러 수식과 매치가 되는 주어진 데이터 베이스에 있는 테이블을 백업한다: 테이블 이름에 대한 레귤러 수식은 (‘~’)를 앞에 사용해서 이름을 무시하도록 할 수 있다: mysqlhotcopy는 아래의 옵션을 지원한다: mysqlhotcopy는 옵션 파일에서 [client] 와 [mysqlhotcopy] 옵션 그룹을 읽는다. mysqlhotcopy를 실행하기 위해서는, 여러분이 백업을 하는 테이블에 대한 파일에 접속을 해야 하고, 그러한 테이블에 대한 SELECT 권한, RELOAD 권한 (FLUSH TABLES를 실행하기 위해서), 그리고 LOCK TABLES 권한 (테이블을 잠그기 위해서)을 가지고 있어야 한다. --checkpoint 와 --record_log_pos 옵션에 필요한 테이블의 구조에 관한 정보를 포함해서 mysqlhotcopy에 대한 추가적인 정보를 얻고자 한다면, perldoc를 사용하도록 한다: mysqlimport 클라이언트 프로그램은 LOAD DATA INFILE SQL 명령문에 대해서 명령어 라인 인터 페이스를 제공한다. mysqlimport에 대한 대부분의 옵션은 LOAD DATA INFILE 신텍스 구문과 직접적으로 상관이 된다. Section 13.2.5, “LOAD DATA INFILE 신텍스”를 참조할 것. mysqlimport는 다음과 같이 호출한다: 명령어 라인에서 지정을 한 각각의 텍스트 파일의 경우, mysqlimport는 파일 이름에서 확장자를 떼어 낸 다음에 그 값을 파일의 내용물을 임포트 할 테이블 이름으로 판단한다. 예를 들면, patient.txt, patient.text, 그리고 patient는 모두 patient 라는 이름의 테이블에 임포트가 된다. mysqlimport는 아래의 옵션을 지원한다: 아래에서는 mysqlimport의 사용 사례를 보여 준다 mysqlshow 클라이언트는 어떤 데이터 베이스가 있고, 어떤 테이블, 어떤 테이블 컬럼 또는 인덱스가 있는지를 쉽게 보여주는 프로그램이다. mysqlshow는 몇몇 SQL SHOW 명령문에 대해서 명령어 라인 인터 페이스를 제공한다. Section 13.5.4, “SHOW 신텍스”를 참조할 것. 이와 같은 명령어를 직접 사용해서도 동일한 정보를 얻을 수가 있다. 예를 들면, 여러분은you can issue them from the mysql 클라이언트 프로그램에서 이것들을 입력할 수가 있다. mysqlshow는 아래와 같이 호출한다: 결과 값으로는 여러분이 권한을 가지고 있는 데이터 베이스, 테이블, 또는 컬럼만을 출력한다. 만일 마직막 인수가 쉘 또는 SQL 와일드 카드 문자 (‘*’, ‘?’, ‘%’, or ‘_’)를 가지고 있다면, 와일드 카드와 매치가 되는 이름만이 나오게 된다. 만일 데이터 베이스의 이름에 밑줄(underscore)이 들어가 있으면, 이러한 이름들은 올바?레시(어떤 유닉스 쉘에서는 이줄 백슬레시가 필요함)를 사용해서 이스케이스 되어야 한다. ‘*’ 및 ‘?’ 문자는 SQL에서 ‘%’ 과 ‘_’ 와일드 카드 문자로 변환된다. 이것은 여러분이 테이블 이름에 ‘_’ 가 있는 테이블을 위해서 컬럼을 출력하고자 할 때 혼란스러움을 야기 시킬 수도 있는데, 그 이유는 이와 같은 경우, mysqlshow는 이 패턴과 매치되는 테이블 이름만을 출력하기 때문이다. 이 문제는 명령어 라인에서 여분의 ‘%’를 추가해서 이것을 구분 인수로 사용하면 간단하게 해결할 수가 있다. mysqlshow은 아래의 옵션을 지원한다: mysql_zap은 패턴과 일치하는 프로세스를 죽이는 프로그램이다. 이것은 ps 명령어 및 유닉스 신호를 사용하기 때문에, 유닉스와 유닉스와 유사한 시스템에서 구동이 된다. mysql_zap은 아래와 같이 호출한다: ps 명령어로부터 나오는 결과 값이 패턴을 가지고 있다면 프로세스는 매치가 된다. 디폴트로는, mysql_zap은 각 프로세스에 대해서 확답을 묻는다. y로 답을 하면 그 프로세스를 죽이라는 것이며, 또는 q 는 mysql_zap를 종료하라는 것이다. 이외의 다른 응답에 대해서는, mysql_zap는 프로세스를 죽이지 않는다. 만일 -signal 옵션을 주게 되면, 이것은 각 프로세스에 전달하기 위한 신호의 이름 또는 번호를 지정하는 것이다. 이 옵션을 주지 않게 되면, mysql_zap는 우선 TERM (signal 15)를 시도하고 그 다음에 KILL (signal 9)를 시도한다. mysql_zap는 아래의 옵션을 지원한다: 대부분의 시스템 에러의 경우, MySQL은 내부 텍스트 메시지와 더불어, 아래의 스타일 중의 한 형태로 시스템 에러 코드를 출력하다: 여러분은 시스템 설명서 또는 perror 유틸리티를 사용해서 각 에러 코드가 의미하는 내용을 알아 볼 수가 있다. perror는 시스템 에러 코드 또는 스토리지 엔지(테이블 핸들러) 에러 코드에 대한 설명을 출력한다. perror는 아래와 같이 호출한다: MySQL 클러스터 에러 코드에 대한 에러 메시지를 얻기 위해서는, perror를 --ndb 옵션과 함께 사용한다: 시스템 에러 메시지의 의미는 여러분이 사용하는 OS에 관련이 되어 있다는 점을 알기 바란다. 주어진 에러 코드는 OS별로 틀리게 나올 수도 있다. replace 유틸리티 프로그램은 파일 또는 표준 입력 값에서 스트링을 변경 시킨다. 아래의 방법 중에 하나를 사용해서 replace를 호출한다: from 은 변경을 고려하는 스트링을 의미하며 to 는 대체할 스트링을 의미한다. 하나 또는 여러 쌍의 스트링이 존재할 수 있다. -- 옵션을 사용해서 스트링 대체가 어디에서 끝이 나고 파일 이름이 어디에서 시작이 되는지를 가리킬 수가 있다. 이와 같은 경우, 명령어 라인에서 지정된 파일은 그 자리에서 수정이 되며, 따라서 여러분은 변환을 하기 전에 원본을 복사하는 것이 좋다. replace는 실제로 수정이 되는 입력 파일에 대한 내용을 출력한다. 만일 - 옵션이 주어지지 않으면, replace는 표준 입력 값을 읽게 되고 표준 결과 값을 작성하게 된다. replace는 유한 상태 머신(finite state machine)을 사용해서 보다 긴 스트링을 우선 매치한다. 이것은 스트링을 스왑(swap)하기 위해서도 사용될 수 있다. 예를 들면, 아래의 명령어는 주어진 파일 file1 과 file2에 있는 a 와 b를 스왑한다. replace 프로그램은 msql2mysql에 의해서 사용될 수 있다. Section 22.9.1, “msql2mysql - Convert mSQL Programs for Use with MySQL”를 참조할 것. replace는 아래의 옵션을 지원한다:mysqlhotcopy, mysqlimport, mysqlshow, mysql_zap, perror, replace
mysqlhotcopy - 데이터 베이스 백업 프로그램
shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
shell> mysqlhotcopy db_name./regex/
shell> mysqlhotcopy db_name./~regex/
도움말을 출력하고 빠져 나온다.
목적 디렉토리(존재 한다면)의 이름을 변경하지 않는다; 단순히 파일을 여기에 추가만 한다.
목적 디렉토리가 있으면 종료를 하지 않는다; _old 접미사를 추가해서 이것의 이름을 변경 시킨다.
체크 포인트 엔트리를 지정 데이터 베이스 db_name 와 테이블 tbl_name에 삽입한다.
mysqld이 연산을 하는 chroot 자일(jail)의 베이스 디렉토리. path 값은 mysqld에 주어지는 --chroot 옵션과 매치가 되어야 한다.
디버그 결과 값을 활성화 시킨다.
액션(action)을 실행하지 않고 레포트만 한다.
모든 테이블이 잠긴 후에 로그를 플러시한다.
로컬 서버에 TCP/IP접속을 만들기 위해 사용할 로컬 호스트의 호스트 이름. 디폴트로는, 유닉스 소켓 파일을 사용해서 localhost에 접속을 하게 된다.
실행을 마친 후에 이전(변경된) 목적 디렉토리를 삭제하지 않는다.
파일 복사를 위한 방법 (cp 또는 scp).
백업에 전체 인덱스 파일을 포함 시키지 않는다. 이렇게 하면 백업 파일이 작아지고 속도가 빨라진다. 다시 읽혀지는 테이블에 대한 인덱스는 나중에 myisamchk -rq를 사용해서 구조를 변경 시킬 수가 있다.
서버에 접속을 할 때 사용할 패스워드. 이 옵션의 경우에는 다른 MySQL 프로그램과는 달리 패스워드를 반드시 지정해야 한다는 점을 알아두기 바란다. 여러분은 옵션 파일을 사용해서 패스워드를 지정할 수 있다.
로컬 서버에 접속을 할 때 사용할 TCP/IP 포트 번호.
에러가 아니면 침묵 모드를 유지한다.
마스터 및 슬레이브의 상태를 지정 데이터 베이스 db_name 과 테이블 tbl_name에 기록한다.
주어진 레귤러 수식과 매치가 되는 이름을 사용해서 모든 데이터 베이스를 복사한다.
모든 테이블을 잠근 다음에 바이너리 로그를 리셋 시킨다.
모든 테이블을 잠근 다음에 master.info 파일을 리셋 시킨다.
접속에 사용할 유닉스 소켓 파일.
복사된 데이터 베이스의 이름에 사용할 접미사.
임시 디렉토리. 디폴트는 /tmp.
서버에 접속을 할 때 사용할 MySQL 사용자 이름.
shell> perldoc mysqlhotcopy
mysqlimport - 데이터 임포트 (Import) 프로그램
shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
?
도움말을 출력하고 빠져 나온다.
문자 셋이 설치되어 있는 디렉토리. Section 5.11.1, “데이터 및 정렬을 위해 사용되는 문자 셋”을 참조할 것.
이 옵션은 콤마로 구분된 컬럼 이름 리스트를 자신의 값으로 가져간다. 컬럼 이름의 순서는 데이터 파일 컬럼을 테이블 컬럼과 어떻게 매치를 시켜야 하는지를 나타낸다.
클라이언트와 서버가 압축을 지원한다면 두 서버간에 전달되는 정보를 압축한다.
디버깅 로그를 작성한다. debug_options 스트링은 'd:t:o,file_name'.
디폴트 문자 셋으로 charset_name를 사용한다. Section 5.11.1, “데이터 및 정렬을 위해 사용되는 문자 셋”을 참조할 것.
텍스트 파일을 임포팅 하기 전에 테이블을 비운다.
이 옵션들은 LOAD DATA INFILE에 대해서 상응되는 구문들과 같은 의미를 가지고 있다. Section 13.2.5, “LOAD DATA INFILE 신텍스”를 참조할 것.
에러를 무시한다. 예를 들면, 만일 텍스트 파일에 대한 테이블이 존재하지 않는다면, 남아 있는 파일들에 대한 처리를 계속 진행한다. --force를 사용하지 않으면, 테이블이 존재하지 않을 경우에는 mysqlimport가 종료된다.
주어진 호스트 상에 있는 MySQL 서버에 데이터를 임포트 한다. 디폴트 호스트는 localhost.
--replace 옵션에 대한 설명을 보여 준다.
데이터 파일의 첫 번째 N 라인을 무시한다.
클라이언트 호스트로부터 로컬에서 입력 파일을 읽는다.
텍스트 파일을 처리하기 전에 쓰기를 위해 모든 테이블을 잠근다. 이것은 모든 테이블이 서버에서 동기화 되도록 해 준다.
테이블을 읽을 때 LOW_PRIORITY 를 사용한다.
서버에 접속을 할 때 사용할 패스워드. 만일 여러분이 축약형 옵션 폼 (-p)을 사용한다면, 패스워드와 옵션 사이에는 스페이스를 두지 말아야 한다. 명령어 라인에서 --password 또는 -p 옵션 다음에 패스워드를 지정하지 않으면, 프롬프트가 나오게 된다.
--port=port_num, -P port_num
?
?
?
?
?
?
?
shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100 Max Sydow
101 Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000 1 0 0 \t M a x S y d o w \n 1 0
0000020 1 \t C o u n t D r a c u l a \n
0000040
shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id | n |
+------+---------------+
| 100 | Max Sydow |
| 101 | Count Dracula |
+------+---------------+
mysqlshow - 데이터 베이스, 테이블, 그리고 컬럼 정보 표시하기
shell> mysqlshow [options] [db_name [tbl_name [col_name]]]
도움말을 출력하고 빠져 나온다.
문자 셋이 설치되어 있는 디렉토리. Section 5.11.1, “데이타 및 정렬을 위해 사용되는 문자 셋”을 참조할 것.
클라이언트 및 서버가 압축을 지원하면 둘 사이에 전달되는 정보를 압축한다.
테이블 당 열 수를 보여준다. 이것은 non-MyISAM 테이블에 대해서는 속도가 느리다. 이 옵션은 MySQL 5.0.6에서 추가되었다.
디버깅 로그를 작성한다. debug_options 스트링은 'd:t:o,file_name'.
charset_name 를 디폴트 문자 셋으로 사용한다. Section 5.11.1, “데이타 및 정렬을 위해 사용되는 문자 셋”를 참조할 것.
주어진 호스트에 있는 MySQL 서버에 접속을 한다.
테이블 인덱스를 보여준다.
서버에 접속을 할 때 사용하는 패스워드.
접속을 위해서 사용할 TCP/IP 포트 번호.
접속 프로토콜.
테이블 타입을 가리키는 컬럼을 보여준다. SHOW FULL TABLES과 동일하다. 이 타입은 BASE TABLE 또는 VIEW가 된다. 이 옵션은 MySQL 5.0.4에서 추가되었다.
localhost에 접속할 때 사용하는 유닉스 소켓 파일 또는 윈도우의 네임드 파이프 이름.
각 테이블의 추가적인 정보를 출력한다.
서버에 접속할 때 사용하는MySQL 사용자 이름.
버보스 모드(Verbose mode). 프로그램이 실행하는 정보를 자세히 보여준다. 이 옵션을 여러 번 사용하면 보다 많은 정보를 얻을 수가 있다.
버전 정보를 출력하고 빠져 나온다.mysql_zap - 패턴과 일치하는 프로세스 죽이기(Kill)
shell> mysql_zap [-signal] [-?Ift] pattern
perror - 에러 코드 설명
message ... (errno: #)
message ... (Errcode: #)
shell> perror [options] errorcode ...
예제:
shell> perror 13 64
Error code 13: Permission denied
Error code 64: Machine is not on the network
shell> perror --ndb errorcode
perror는 아래의 옵션을 지원한다:
도움말을 출력하고 빠져 나온다.
MySQL 클러스터 에러 코드에 대한 에러 메시지를 출력한다.
침묵 모드(Silent mode). 에러 메시지만을 출력한다.
버보스 모드 (Verbose mode). 에러 코드와 메시지를 출력한다. 이것이 디폴트 임.
버전 정보를 출력하고 빠져 나온다.replace - 스트링-대체 유틸리티
shell> replace from to [from to] ... -- file [file] ...
shell> replace from to [from to] ... < file
shell> replace a b b a -- file1 file2 ...
출처 : MySQL 코리아
도움말을 출력하고 빠져 나온다.
디버깅 로그를 작성한다. debug_options 스트링은 'd:t:o,file_name'.
침묵 모드(Silent mode).
버보스 모드(Verbose mode).
버전 정보를 출력하고 빠져 나온다.