wiki:MariaDB mysqlhotcopy

Version 1 (modified by yongwoo, 4 weeks ago) ( diff )

mysqlhotcopy

mysqlhotcopy는 더이상 지원을 하지 않을 예정이다. 따라서 mysqlhotcopy를 써야 하는 상황이면 mariabackup을 사용하는 것이 낫다.

mysqlhotcopy는 일반적인 응급상황시 대비용으로 백업하는 용도로는 제일 낫다. 데이터베이스 파일 자체를 백업하기 때문에 속도도 빠르고 다루기도 쉽기 때문이다. 더군다나 여러 문자셋이 하나의 데이터베이스에 존재해도 한 번에 데이터베이스 전부를 백업할 수 있다. 하지만 결정적인 단점이 있다.

  • MyISAM 테이블밖에 지원이 되지 않는다.
  • MySQL 버전이 달라지면 백업을 복원해도 제대로 작동하지 않는다. 특히 4.1 미만 버전에서 4.1 버전으로 바뀌었을 때 이 것 때문에 난리가 난 적이 있다.

그 외에도 다음과 같은 단점이 있다.

  • 펄 스크립트이므로 펄이 설치되어있어야 작동한다.
  • 윈도우용 MySQL에서는 해당 명령이 없다. Perl 스크립트이기 때문에 굳이 사용한다면 Perl을 설치하면 가능할 수도 있겠다.

따라서 mysqlhotcopy를 이용해 백업할 것인지 mysqldump를 이용해 백업할 것인지 잘 판단해야 한다.

1. 사용하는 방법

mysqlhotcopy -u [mysql user 이름] -p [암호] —allowold [데이터베이스 이름] [데이터 파일이 저장될 경로명 혹은 새로운 데이터베이스명]

  • 다른 MySQL 명령과는 달리 -p 옵션 다음에 빈칸이 들어가는 점을 주의해야 한다.

mysqlhotcopy -u root -p password --allowold test ~

2. 권한

mysqlhotcopy를 사용하려면 권한이 필요하다.

  • 일단 flush tables 명령을 실행하기 위해서는 [mysql user 이름]에 mysql의 reload 권한이 필요하다.
    mysql> update user set reload_priv='Y' where user='[mysql user 이름]';
    mysql> flush privileges;
    
  • 그리고 백업 파일을 생성하기 위해서는 mysqlhotcopy를 실행하는 사용자에게(MySQL user 이름이 아니다. 혼동하지 말 것) 리눅스의 파일 권한이 필요하다.(MySQL 권한이 아닌 리눅스의 파일 권한이다. 혼동하지 말 것).
    • 우선 백업파일을 생성할 권한이 있어야 하고,
    • mysql 데이터 파일을 읽을 수 있는 권한이 필요하다.
  • 이런 복잡한 권한 때문에 골치아프기 싫다면 root로 명령을 실행하는 것을 추천한다.

[관련 링크] : 처음으로, mysqldump, 증분 백업, mariabackup


Note: See TracWiki for help on using the wiki.