mysqldump bug on MariaDB 10.0
환경
OS : CentOS-6.7 (64bit)
DB : MariaDB-10.0.21 / 설치형태 : 소스컴파일
내용
같은문자열을 가졌으나 문자열중 대/소문자를 구분하는 테이블들이 존재할 경우
mysqldump 를 이용한 백업시 ”CREATE TABLE”구문에 사용되는 테이블명이 중복되는 문제
(말로 푸는것이 어려우니 아래 내용을 봅시다)
예시
1. DB정보
db name : test table name : AbDc aBDc aBdc abdC
2. 테이블생성
mysql (test)> create table abdC (kk int(3), kk2 text); mysql (test)> create table aBdc (kk int(3), kk2 text); mysql (test)> create table aBDc (kk int(3), kk2 text); mysql (test)> create table AbDc (kk int(3), kk2 text);
3. DUMP
mysqldump -uroot test AbDc > AbDc.sql mysqldump -uroot test aBDc > aBDc.sql mysqldump -uroot test aBdc > aBdc.sql mysqldump -uroot test abdC > abdC.sql
4. 백업 데이터 확인
# grep CREATE *.sql AbDc.sql:CREATE TABLE `AbDc` ( aBDc.sql:CREATE TABLE `AbDc` ( aBdc.sql:CREATE TABLE `AbDc` ( abdC.sql:CREATE TABLE `AbDc` (
mysqldump로 생성된 sql파일의 ”CREATE TABLE” 구문에는 각각
AbDc
aBDc
aBdc
abdC
4개의 테이블명이 들어있어야 하지만.. 각각의 파일 모두 ’AbDc’ 라는 이름으로 존재함
보통은 같은문자열을 대/소문자 구별해서 사용하는 사례가 거의 없겠으나
사용을 하고 있는 시스템에서 데이터 이관등의 작업시 상당한 에로사항이 발생할 수 있음.
5. 그 외 버전
mysql-5.7
mariadb-10.1
에서는 동일한 조건으로 테스트시 문제가 발생하지 않았음