14.5.7 InnoDB 로그 파일의 크기 변경 및 InnoDB 테이블 스페이스의 크기 변경
이 섹션에서는 InnoDB
의 Redo 로그 파일의 수 또는 크기를 변경하는 방법과 InnoDB
의 시스템 테이블 공간 의 크기를 증가 또는 감소하는 방법을 설명합니다.
InnoDB 로그 파일의 크기 나 변경
MySQL 5.6.7 이전 버전에서는 InnoDB
의 Redo 로그 파일의 수 또는 크기를 변경하려면 다음 단계를 수행합니다.
innodb_fast_shutdown
가 2로 설정되어있는 경우innodb_fast_shutdown
을 1로 설정합니다.mysql>
SET GLOBAL innodb_fast_shutdown = 1;
innodb_fast_shutdown
가 2로 설정되어 있지 않은지 확인한 후, MySQL 서버를 중지하고 오류없이 종료 될 (로그에 처리되지 않은 트랜잭션에 대한 정보가없는 것)을 확인합니다.종료하는 동안 문제가 발생하여 테이블 스페이스를 복구하기 위해 오래된 로그 파일이 필요한 경우에 대비하여 이러한 로그 파일을 안전한 위치에 복사합니다.
로그 파일 디렉토리에서 오래된 로그 파일을 삭제합니다.
my.cnf
를 편집하여 로그 파일의 구성을 변경합니다.MySQL을 다시 시작합니다. mysqld가 시작할 때
InnoDB
로그 파일이 존재하지 않는 것으로 나타 새 로그 파일이 만들어집니다.
MySQL 5.6.8의 시점에서는 InnoDB
로그 파일의 수 또는 크기를 변경할 때 innodb_fast_shutdown
설정 관련 않습니다. 또한 오래된 로그 파일을 제거해야 없습니다. 그러나 백업으로 오래된 로그 파일을 안전한 위치에 복사 할 수 있습니다. InnoDB
로그 파일의 수 또는 크기를 변경하려면 다음 단계를 수행합니다.
MySQL 서버를 중지하고 오류없이 종료되는 것을 확인합니다.
my.cnf
를 편집하여 로그 파일의 구성을 변경합니다. 로그 파일의 크기를 변경하려면innodb_log_file_size
을 구성합니다. 로그 파일의 수를 더하려면innodb_log_files_in_group
을 구성합니다.MySQL 서버를 다시 시작합니다.
InnoDB
에서 innodb_log_file_size
가 Redo 로그 파일의 크기와 다른 것을 감지 된 경우 로그 체크 포인트를 기록, 이전 로그 파일이 닫혀에서 삭제 된 요청 된 크기에서 새로운 파일이 만들어지고 그 새로운 로그 파일이 열립니다.
InnoDB 테이블 스페이스의 크기 증가
InnoDB
시스템 테이블 스페이스의 크기를 크게하는 가장 쉬운 방법은 처음부터 자동 확장으로 구성하는 것입니다. 테이블 공간 정의의 마지막 데이터 파일에 autoextend
속성을 지정합니다. 이는 InnoDB
가 공간이 부족하면 파일의 크기가 자동으로 8M 바이트 씩 증가합니다. innodb_autoextend_increment
시스템 변수의 값을 설정하면 증분의 크기를 변경할 수 있습니다. 이 사이즈는 M 바이트 단위로 측정됩니다.
다른 데이터 파일을 추가하면 시스템 테이블 스페이스를 정의 된 양만큼 확대 할 수 있습니다.
MySQL 서버를 종료합니다.
이전의 마지막 데이터 파일이
autoextend
라는 키워드를 사용하여 정의 된 경우는 실제로 증가했다 크기에 따라 크기가 고정되어 사용되도록 정의를 변경합니다. 데이터 파일의 크기를 확인하고 그것을 1024 × 1024 바이트 (= 1M 바이트)에 가장 가까운 배수로 반올림이 반올림 크기를innodb_data_file_path
에 명시 적으로 지정합니다.새로운 데이터 파일을
innodb_data_file_path
의 말미에 추가합니다. 이렇게하면 옵션 파일이 자동 확장됩니다.innodb_data_file_path
에서 자동 확장으로 지정할 수는 마지막 데이터 파일뿐입니다.MySQL 서버를 다시 시작합니다.
예를 들어, 테이블 스페이스는 ibdata1
라는 하나의 자동 확장 데이터 파일 만 존재하지 않습니다.
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
이 데이터 파일은 시간이 지남에 988M 바이트까지 증가했다고 가정합니다. 다음 고정 크기가 사용되도록 원본 데이터 파일을 변경하고 새로운 자동 확장 데이터 파일을 추가 한 후 구성 행을 나타냅니다.
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
새로운 데이터 파일을 시스템 테이블 공간 구성에 추가 할 때 해당 파일 이름이 기존의 파일을 참조하지 않는지 확인하십시오. InnoDB
는 서버를 시작할 때 파일을 만들고 초기화합니다.
InnoDB 테이블 스페이스의 크기 감소
현재는 시스템 테이블 스페이스에서 데이터 파일을 삭제할 수 없습니다. 시스템 테이블 공간의 크기를 줄이려면 다음 단계를 사용합니다.
mysqldump를 사용하여 MySQL 데이터베이스에 배치되는
InnoDB
테이블을 포함한 모든InnoDB
테이블을 덤프합니다. 5.6의 시점에서는, MySQL 데이터베이스에 5 개의InnoDB
테이블이 포함되어 있습니다.mysql> select table_name from information_schema.tables where table_schema='mysql' and engine='InnoDB'; +----------------------+ | table_name | +----------------------+ | innodb_index_stats | | innodb_table_stats | | slave_master_info | | slave_relay_log_info | | slave_worker_info | +----------------------+ 5 rows in set (0.00 sec)
서버를 중지합니다.
ibdata
와ib_log
파일을 포함한 모든 기존의 테이블 스페이스 파일 (*.ibd
)를 제거합니다. MySQL 데이터베이스에 배치되어있는 테이블*.ibd
파일도 지워야합니다.InnoDB
테이블의 모든.frm
파일을 삭제합니다.새 테이블 스페이스를 구성합니다.
서버를 다시 시작합니다.
덤프 파일을 가져옵니다.
데이터베이스에서 InnoDB
엔진 만 사용되는 경우 모든 데이터베이스를 덤프하여 서버를 중지하고 모든 데이터베이스와 InnoDB
로그 파일을 제거하고 서버를 다시 시작하여 덤프 파일을 가져온 것이 간단한 수 있습니다.