Hướng dẫn chuyển storage engine của MySQL từ MyISAM sang InnoDB và ngược lại

Bài viết này sẽ hướng dẫn chuyển storage engine của MySQL từ MyISAM sang InnoDB và ngược lại.
1. Giới thiệu
  - MyISAM và InnoDB là các storage engine (cơ chế lưu trữ) của MySQL. Mỗi cơ chế sẽ lưu dữ liệu trên ổ cứng theo mỗi cách khác nhau và có ưu nhược điểm riêng. Một số tính năng của từng loại cơ chế:
  a. MyISAM:
                 + Chỉ có thể đọc table đồng thời mà không thể ghi đồng thời
                 + Tự sữa chữa và phục hồi dữ liệu tốt sau khi hệ thống bị crash.
                 + Hỗ trợ tìm kiếm full-text index.
                 + Tăng tốc độ ghi nhờ không ghi dữ liệu vào ổ cứng ngay mà ghi vào buffer trên RAM trước, sau một khoảng thời gian mới ghi vào ổ cứng.
                 + Hỗ trợ nén dữ liệu giúp tăng tốc độ đọc dữ liệu nhưng dữ liệu sau khi nén không thể cập nhật được.
  b. InnoDB:
                 + Có khả năng phục hồi, sửa chữa tốt.

                 + Là engine phức tạp nhất trong các engine của MySQL.
                 + Hỗ trợ MVCC (Multiversion Concurrency Control) do đó table có thể đọc và ghi đồng thời.
                 + Sử dụng clustered index do đó hiệu năng tìm kiếm theo primakey rất cao.
                 + Lưu dữ liệu trên 1 file (thuật ngữ gọi là tablespace).
                 + Hỗ trợ transactions.

2. Cách chuyển MyISAM sang InnoDB và ngược lại
  - Sử dụng cú pháp MySQL sau để chuyển từng table MyISAM sang InnoDB: ALTER TABLE table_name ENGINE = MyISAM;
  - Sử dụng cú pháp MySQL sau để chuyển từng table InnoDB sang InnoDB: ALTER TABLE table_name ENGINE = InnoDB;
  - Hướng dẫn chuyển tất cả table của một database từ MyISAM sang InnoDB:
     + Tạo file script: "vi script"
     + Thêm nội dung sau vào file script
         #!/bin/sh
         DBNAME="your-database"
         DBUSER="your-username"
         DBPWD="your-password"for t in $(mysql -u$DBUSER -p$DBPWD --batch --column-names=false-e "show tables" $DBNAME);do
         echo "Converting table $t"
         mysql -u$DBUSER -p$DBPWD -e "alter table $t engine=InnoDB" $DBNAME;done
         Trong đó "your-database" là database cần chuyển, "your-username" là user name của được gán quyền cho database, "your-password" là password của user.

    + Thêm quyền thực thi cho file script: "chmod +x script
    + Chạy file script: ./script

  - Khách hàng có thể sử dụng script trên để chuyển InnoDB sang MyISAM với script trên bằng cách sửa dòng "mysql -u$DBUSER -p$DBPWD -e "alter table $t engine=InnoDB" $DBNAME;done" thành "mysql -u$DBUSER -p$DBPWD -e "alter table $t engine=MyISAM" $DBNAME;done"

Câu trả lời có hữu ích với bạn?

 In bài viết này

Bài viết liên quan

Cấu hình remote database trên vps/máy chủ riêng

Bài viết này sẽ hướng dẫn bạn cách cấu hình remote database trên vps/máy chủ riêng.Bước 1: Ssh...

Làm thế nào để tôi kết nối đến CSDL MySQL từ xa?

"Làm thế nào để tôi kết nối đến CSDL MySQL từ xa?" - đó là một câu hỏi khá phổ biến của khách...

Tạo MySQL database và user thông qua command line

Bài viết sau sẽ hướng dẫn bạn cách tạo MySQL database và user thông qua command line. Các bước...

Hỗ trợ định dạng quản lý cơ sở dữ liệu

Bài viết này sẽ cung cấp các thông tin hỗ trợ định dạng quản lý cơ sở dữ liệu.1. Giới thiệu Hiện...

Quản lý cơ sở dữ liệu với SSH

Bài viết này sẽ hướng dẫn bạn cách quản lý cơ sở dữ liệu với SSH.1. Giới thiệu Bạn có thể kết...

Powered by WHMCompleteSolution