Các Công Cụ Quản Trị Cơ Sở Dữ Liệu MySQL

Hệ thống cơ sở dữ liệu MySQL đi kèm với một bộ sưu tập các công cụ mạnh mẽ và cơ sở dữ liệu hệ thống chuyên dụng, giúp quản lý và duy trì hoạt động hiệu quả. Bài viết này sẽ giới thiệu tổng quan về các cơ sở dữ liệu mặc định và các tiện ích dòng lệnh thiết yếu cho việc quản trị MySQL.

Các Cơ Sở Dữ Liệu Hệ Thống

Sau khi cài đặt MySQL, một số cơ sở dữ liệu được tạo tự động, mỗi cơ sở có một vai trò cụ thể trong hoạt động nội bộ và quản lý hệ thống:

  • information_schema: Đây là một cơ sở dữ liệu ảo, cung cấp quyền truy cập vào siêu dữ liệu (metadata) của tất cả các cơ sở dữ liệu khác. Nó chứa thông tin chi tiết về các bảng, cột, kiểu dữ liệu, quyền truy cập, và các đối tượng cơ sở dữ liệu khác.
  • mysql: Cơ sở dữ liệu này lưu trữ thông tin hệ thống quan trọng, bao gồm tài khoản người dùng, quyền truy cập, các hàm người dùng định nghĩa, múi giờ, và các thiết lập cấu hình máy chủ.
  • performance_schema: Cung cấp thông tin chi tiết về hoạt động hiệu suất của máy chủ MySQL. Nó thu thập dữ liệu về các sự kiện thực thi SQL, khóa, IO, và các hoạt động khác, giúp quản trị viên phân tích và tối ưu hóa hiệu suất.
  • sys: Cơ sở dữ liệu sys cung cấp một tập hợp các đối tượng (ví dụ: các thủ tục lưu trữ, hàm và chế độ xem) để truy vấn dữ liệu từ performance_schema một cách dễ hiểu và thân thiện hơn, giúp đơn giản hóa việc phân tích hiệu suất.

Các Công Cụ Dòng Lệnh Phổ Biến

1. Tiện ích mysql

Công cụ mysql không phải là dịch vụ máy chủ MySQL mà là giao diện dòng lệnh (CLI) chính để tương tác với máy chủ MySQL. Nó cho phép bạn thực thi các câu lệnh SQL, truy vấn dữ liệu và quản lý cơ sở dữ liệu.

Cú pháp:
mysql [tùy chọn] [tên_cơ_sở_dữ_liệu]

Các tùy chọn chính:
-u, --user=tên_người_dùng   # Chỉ định tên người dùng MySQL
-p, --password[=mật_khẩu] # Chỉ định mật khẩu (nếu bỏ trống, hệ thống sẽ nhắc nhập)
-h, --host=địa_chỉ_máy_chủ # Chỉ định địa chỉ IP hoặc tên máy chủ MySQL
-P, --port=cổng             # Chỉ định cổng kết nối (mặc định là 3306)
-e, --execute=câu_lệnh_sql  # Thực thi một câu lệnh SQL và thoát ngay lập tức

Tùy chọn -e đặc biệt hữu ích cho các tác vụ tự động hóa hoặc script batch, cho phép thực thi SQL mà không cần mở phiên tương tác:

Ví dụ:
# Truy vấn dữ liệu từ bảng 'danh_sach_sinh_vien' trong cơ sở dữ liệu 'hoc_tap'
mysql -u nguoidung_chinh -p my_secret_pass hoc_tap -e "SELECT ma_sv, ten_sv FROM danh_sach_sinh_vien LIMIT 3;"

2. Tiện ích mysqladmin

mysqladmin là một công cụ tiện ích quản trị được thiết kế để thực hiện các thao tác quản lý cơ bản trên máy chủ MySQL. Bạn có thể sử dụng nó để kiểm tra cấu hình máy chủ, trạng thái hiện tại, tạo hoặc xóa cơ sở dữ liệu.

Để xem tất cả các tùy chọn:
mysqladmin --help

Cú pháp:
mysqladmin [tùy chọn] lệnh ...

Các tùy chọn phổ biến:
-u, --user=tên_người_dùng   # Chỉ định tên người dùng MySQL
-p, --password[=mật_khẩu] # Chỉ định mật khẩu
-h, --host=địa_chỉ_máy_chủ # Chỉ định địa chỉ IP hoặc tên máy chủ
-P, --port=cổng             # Chỉ định cổng kết nối
Ví dụ:
# Xóa một cơ sở dữ liệu tạm thời có tên 'csdl_tam'
mysqladmin -u root -p my_root_pass drop 'csdl_tam';

# Hiển thị phiên bản máy chủ MySQL
mysqladmin -u root -p my_root_pass version;

3. Tiện ích mysqlbinlog

Các tệp nhật ký nhị phân (binary log) của MySQL được lưu trữ dưới định dạng nhị phân. Công cụ mysqlbinlog giúp bạn đọc và hiển thị nội dung của các tệp này dưới dạng văn bản dễ đọc, rất hữu ích cho việc khôi phục dữ liệu hoặc kiểm tra hoạt động của máy chủ.

Cú pháp:
mysqlbinlog [tùy chọn] tệp_binlog1 [tệp_binlog2 ...]

Các tùy chọn quan trọng:
-d, --database=tên_cơ_sở_dữ_liệu # Chỉ hiển thị các hoạt động liên quan đến cơ sở dữ liệu được chỉ định.
-o, --offset=#                # Bỏ qua N dòng lệnh đầu tiên trong nhật ký.
-r, --result-file=tên_tệp      # Xuất nhật ký văn bản ra một tệp cụ thể.
-s, --short-form              # Hiển thị định dạng đơn giản, bỏ qua một số thông tin chi tiết.
--start-datetime=thời_gian1   # Hiển thị các sự kiện từ thời điểm được chỉ định.
--stop-datetime=thời_gian2    # Hiển thị các sự kiện đến thời điểm được chỉ định.
--start-position=vị_trí1     # Hiển thị các sự kiện từ vị trí byte được chỉ định.
--stop-position=vị_trí2      # Hiển thị các sự kiện đến vị trí byte được chỉ định.
Ví dụ:
# Xem nội dung của tệp nhật ký nhị phân 'mysql-bin.000007'
mysqlbinlog mysql-bin.000007

# Xem nội dung nhật ký dưới dạng ngắn gọn hơn
mysqlbinlog -s mysql-bin.000007

4. Tiện ích mysqlshow

mysqlshow là một công cụ hữu ích để nhanh chóng kiểm tra cấu trúc của cơ sở dữ liệu, bảng, cột hoặc chỉ mục. Nó cung cấp một cách nhanh chóng để lấy thông tin tổng quan về các đối tượng trong MySQL.

Cú pháp:
mysqlshow [tùy chọn] [tên_csdl [tên_bảng [tên_cột]]]

Các tùy chọn:
--count                     # Hiển thị số lượng bảng và số lượng hàng trong mỗi bảng (áp dụng cho CSDL hoặc bảng).
-i, --status                # Hiển thị thông tin trạng thái chi tiết của CSDL hoặc bảng được chỉ định.
Ví dụ:
# A. Xem số lượng bảng và số lượng hàng cho tất cả các cơ sở dữ liệu
mysqlshow -u admin -p secure_pwd --count

# B. Xem thông tin thống kê của cơ sở dữ liệu 'quan_ly_san_pham'
mysqlshow -u admin -p secure_pwd quan_ly_san_pham --count

# C. Xem thông tin chi tiết của bảng 'danh_muc_sp' trong CSDL 'quan_ly_san_pham'
mysqlshow -u admin -p secure_pwd quan_ly_san_pham danh_muc_sp --count

# D. Xem thông tin của cột 'ma_san_pham' trong bảng 'danh_muc_sp'
mysqlshow -u admin -p secure_pwd quan_ly_san_pham danh_muc_sp ma_san_pham --count

5. Tiện ích mysqldump

mysqldump là một công cụ client mạnh mẽ được sử dụng để sao lưu cơ sở dữ liệu MySQL hoặc chuyển dữ liệu giữa các máy chủ. Nó tạo ra các tệp SQL chứa các câu lệnh CREATE TABLE để tạo cấu trúc bảng và các câu lệnh INSERT để chèn dữ liệu.

Cú pháp:
mysqldump [tùy chọn] tên_csdl [bảng_1 bảng_2 ...]
mysqldump [tùy chọn] --database/-B csdl_1 [csdl_2 csdl_3 ...]
mysqldump [tùy chọn] --all-databases/-A

Các tùy chọn kết nối:
-u, --user=tên_người_dùng   # Chỉ định tên người dùng MySQL
-p, --password[=mật_khẩu] # Chỉ định mật khẩu
-h, --host=địa_chỉ_máy_chủ # Chỉ định địa chỉ IP hoặc tên máy chủ
-P, --port=cổng             # Chỉ định cổng kết nối

Các tùy chọn xuất:
--add-drop-database         # Thêm câu lệnh DROP DATABASE trước mỗi câu lệnh CREATE DATABASE.
--add-drop-table            # Thêm câu lệnh DROP TABLE trước mỗi câu lệnh CREATE TABLE (mặc định là bật).
-n, --no-create-db          # Không bao gồm các câu lệnh CREATE DATABASE.
-t, --no-create-info        # Không bao gồm các câu lệnh CREATE TABLE (chỉ sao lưu dữ liệu).
-d, --no-data               # Không bao gồm dữ liệu (chỉ sao lưu cấu trúc bảng).
-T, --tab=đường_dẫn_thư_mục # Tự động tạo hai tệp: một tệp .sql cho cấu trúc bảng và một tệp .txt cho dữ liệu.

A. Sao lưu toàn bộ một cơ sở dữ liệu

Để tạo bản sao lưu hoàn chỉnh của cơ sở dữ liệu du_lieu_app, bao gồm cấu trúc và dữ liệu:

mysqldump -u sao_luu_user -p secure_pw du_lieu_app > du_lieu_app_backup.sql

Tệp du_lieu_app_backup.sql sẽ chứa các câu lệnh xóa, tạo bảng và chèn dữ liệu.

B. Sao lưu chỉ dữ liệu (không bao gồm cấu trúc bảng)

Nếu bạn chỉ cần sao lưu dữ liệu từ cơ sở dữ liệu du_lieu_app mà không cần cấu trúc bảng, sử dụng tùy chọn -t (hoặc --no-create-info):

mysqldump -u sao_luu_user -p secure_pw -t du_lieu_app > du_lieu_app_data_only.sql

Tệp du_lieu_app_data_only.sql sẽ chỉ chứa các câu lệnh INSERT.

C. Sao lưu cấu trúc và dữ liệu thành các tệp riêng biệt

Để tách cấu trúc bảng và dữ liệu thành hai tệp riêng biệt, sử dụng tùy chọn -T (hoặc --tab). Điều này yêu cầu thư mục đầu ra phải là một thư mục an toàn được MySQL cho phép (được cấu hình bởi biến hệ thống secure_file_priv).

# Ví dụ: Sao lưu bảng 'don_hang' từ CSDL 'he_thong_ban_hang' vào thư mục '/var/lib/mysql-files'
mysqldump -u sao_luu_user -p secure_pw -T /var/lib/mysql-files he_thong_ban_hang don_hang

Thao tác này sẽ tạo ra hai tệp trong thư mục /var/lib/mysql-files: don_hang.sql (chứa cấu trúc bảng) và don_hang.txt (chứa dữ liệu của bảng dưới dạng văn bản được phân tách).

6. Tiện ích mysqlimport và lệnh source

Để phục hồi hoặc nhập dữ liệu vào cơ sở dữ liệu MySQL, bạn có thể sử dụng mysqlimport hoặc lệnh source.

1). mysqlimport

mysqlimport là một công cụ dòng lệnh được thiết kế để nhập các tệp văn bản (thường là tệp được tạo bởi mysqldump -T) vào các bảng MySQL. Nó hoạt động hiệu quả với các tệp dữ liệu được định dạng rõ ràng.

Cú pháp:
mysqlimport [tùy chọn] tên_csdl tệp_văn_bản1 [tệp_văn_bản2 ...]

Ví dụ:
# Nhập dữ liệu từ tệp 'users_data.txt' vào cơ sở dữ liệu 'app_users'
mysqlimport -u user_importer -p importer_pass app_users /tmp/users_data.txt --local

Tùy chọn --local cho phép máy chủ đọc các tệp từ hệ thống tệp của client, rất hữu ích khi tệp dữ liệu không nằm trên máy chủ MySQL.

2). Lệnh source

Khi bạn cần thực thi một tệp SQL chứa nhiều câu lệnh (ví dụ: một tệp sao lưu được tạo bởi mysqldump), bạn có thể sử dụng lệnh source trực tiếp trong phiên làm việc của client mysql.

Cú pháp (trong client mysql):
source /đường/dẫn/đến/tệp_sql.sql

Ví dụ:
mysql> source /home/admin/backup/full_database_restore.sql;

Thẻ: mysql database administration command line tools Backup and Restore Binary Log

Đăng vào ngày 21 tháng 7 lúc 19:28