Blog >> MySQL >> Whitepapers.

InnoDB 마이그레이션 150 150 phobe

InnoDB 마이그레이션

요즘 이노디비 SELECT 가 빨라졌다고 한다.
SELECT 가 빠르다는 이유로 MyISAM 엔진을 고집했는데, 그럴 이유가 없어 졌음.
트랜젝션, 비상 상황에서 대처 등 이유로 InnoDB 로 마이그레이션 결정.
작업의 순서는

  1. 먼저 마이그레이션 할 DB 를 파일로 덤프.
  2. 덤프 파일의 테이블 목록을 InnoDB 형태로 치환. – 엔진, 날짜, 시간
  3. 서버의 설정 파일을 수정 – 설정 검수 – mariadbd –verbose –help > /dev/null
  4. Redo 로그의 크기가 변경됨으로 설정 변경 후 데몬 재 시작
  5. 데몬 재 시작 후 데몬 상태 점검.
  6. 기존 데이터 베이스 드롭 후, 데이터 베이스 생성
  7. 덤프 파일을 해당 데이터 베이스에 입력 – 입력 시 버퍼 사이즈 임시 증가 옵션 포함.
  8. 입력 완료 후 InnoDB 형태의 테이블 확인.
~]$ mysqldump -u root -p --single-transaction --routines --triggers wp_test > wp_test_innodb.sql
~]$ sed -i 's/1970-01-01 00:00:00/1970-01-01 00:00:00/g' wp_test_innodb.sql
~]$ sed -i 's/ENGINE=InnoDB/ENGINE=InnoDB/g' wp_test_innodb.sql
혹은
~]$ mysql wp_test
[mysql]>SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') FROM information_schema.tablesWHERE table_schema = 'wp_test' AND ENGINE = 'MyISAM';

~]$ cp mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf

# 최근 버전의 mariadb : 워드프레스 Zero Date (0000-00-00) 호환성을 위해 Strict 모드 완화 위한
# [mysqld] 섹션에 다음 한 줄을 추가 - 옵션
sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

~]# mariadbd --verbose --help > /dev/null
~]# systemctl status mariadb
~]# systemctl stop mariadb
~]# systemctl start mariadb
~]# systemctl status mariadb

~]# mysql mysql
[mysql]>DROP DATABASE wp_test;
[mysql]>CREATE DATABASE wp_tvdhgb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
[mysql]>exit;

~]$ mysql --max_allowed_packet=256M -u root -p wp_test < wp_test_innodb.sql
~]$ mysql wp_test
[wp_test]>SELECT table_name, engine FROM information_schema.tables WHERE table_schema = 'wp_test';
+----------------------------+--------+
| table_name                 | engine |
+----------------------------+--------+
| wp_users                   | InnoDB |
| wp_posts                   | InnoDB |
| wp_term_taxonomy           | InnoDB |
| wp_clecture                | InnoDB |
| wp_links                   | InnoDB |
| wp_terms                   | InnoDB |
| wp_options                 | InnoDB |
| wp_ctime                   | InnoDB |
| wp_term_relationships      | InnoDB |
| wp_quizmaker_sessions      | InnoDB |
| wp_commentmeta             | InnoDB |
| wp_comments                | InnoDB |
| wp_quizmaker_results       | InnoDB |
| wp_postmeta                | InnoDB |
| wp_termmeta                | InnoDB |
| wp_quizmaker_test_sessions | InnoDB |
| wp_usermeta                | InnoDB |
+----------------------------+--------+
17 rows in set (0.000 sec)