Hướng dẫn khắc phục sự cố dịch vụ MariaDB
MariaDB là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, được sử dụng rộng rãi trong nhiều ứng dụng khác nhau. Mặc dù MariaDB thường hoạt động ổn định, nhưng trong một số trường hợp, bạn có thể gặp phải sự cố dịch vụ hoặc vấn đề về hiệu suất. Bài viết này sẽ hướng dẫn chi tiết cách khắc phục sự cố dịch vụ MariaDB trên ServBay, bao gồm các vấn đề phổ biến, các bước chẩn đoán và giải pháp. ServBay chạy trên hệ điều hành macOS và tích hợp nhiều phiên bản MariaDB khác nhau, do đó trong một số lệnh, bạn cần chỉ định tệp cấu hình và thư mục đặc thù của phiên bản.
Các vấn đề phổ biến và giải pháp
1. Dịch vụ MariaDB không khởi động được
Nguyên nhân có thể
- Lỗi tệp cấu hình
- Cổng bị chiếm dụng
- Vấn đề về quyền
Giải pháp
Kiểm tra tệp cấu hình: Đảm bảo tệp cấu hình
my.cnf
có cú pháp chính xác, với đường dẫn:bash/Applications/ServBay/etc/mariadb/11.3/my.cnf
1Sử dụng lệnh sau để xác minh tệp cấu hình:
bashmysqld --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf --validate-config
1Kiểm tra cổng bị chiếm dụng: Đảm bảo rằng cổng MariaDB sử dụng (mặc định là 3306) không bị tiến trình khác chiếm dụng. Dùng lệnh sau để kiểm tra tình trạng cổng:
bashlsof -i :3306
1Kiểm tra quyền: Đảm bảo quyền truy cập vào thư mục dữ liệu và tệp cấu hình của MariaDB là chính xác. Sử dụng các lệnh sau để kiểm tra quyền:
bashls -l /Applications/ServBay/db/mariadb/11.3 ls -l /Applications/ServBay/etc/mariadb/11.3/my.cnf
1
2Khởi động lại dịch vụ: Thử khởi động lại dịch vụ MariaDB:
bashservbayctl restart mariadb 11.3
1
2. Không thể kết nối đến MariaDB
Nguyên nhân có thể
- Dịch vụ MariaDB không chạy
- Tường lửa chặn kết nối
- Vấn đề về quyền người dùng
Giải pháp
Kiểm tra trạng thái dịch vụ: Đảm bảo rằng dịch vụ MariaDB đang chạy:
bashservbayctl status mariadb 11.3
1Kiểm tra cài đặt tường lửa: Đảm bảo rằng tường lửa cho phép cổng MariaDB (mặc định là 3306):
bashsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mysqld
1
2Kiểm tra quyền người dùng: Đảm bảo rằng người dùng có đủ quyền để kết nối đến cơ sở dữ liệu:
sqlSHOW GRANTS FOR 'your_username'@'localhost';
1Kiểm tra kết nối: Sử dụng lệnh sau để kiểm tra kết nối:
bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p -h localhost -P 3306
1
3. Vấn đề về hiệu suất
Nguyên nhân có thể
- Truy vấn không tối ưu
- Cấu hình bộ nhớ đệm không hợp lý
- Thiếu chỉ mục
Giải pháp
Tối ưu hóa truy vấn: Sử dụng
EXPLAIN
để phân tích hiệu suất truy vấn và thực hiện các tối ưu hóa tương ứng:sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1Điều chỉnh bộ nhớ đệm: Điều chỉnh cài đặt bộ nhớ đệm trong
my.cnf
, ví dụ:[mysqld] query_cache_size = 64M innodb_buffer_pool_size = 1G
1
2
3Tạo chỉ mục: Đảm bảo rằng các cột được sử dụng trong truy vấn thường xuyên có chỉ mục:
sqlCREATE INDEX idx_column_name ON your_table_name(column_name);
1
4. Cơ sở dữ liệu gặp sự cố
Nguyên nhân có thể
- Lỗi phần cứng
- Xung đột phần mềm
- Cấu hình lỗi
Giải pháp
Kiểm tra nhật ký lỗi: Xem nhật ký lỗi của MariaDB để tìm nguyên nhân cụ thể dẫn đến sự cố. Đường dẫn nhật ký lỗi là:
bash/Applications/ServBay/logs/mariadb/11.3.err
1Sửa chữa cơ sở dữ liệu: Sử dụng công cụ
mysqlcheck
để sửa chữa cơ sở dữ liệu:bashmysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p --auto-repair --all-databases
1Khôi phục dữ liệu: Nếu tệp cơ sở dữ liệu bị hỏng, bạn có thể khôi phục dữ liệu từ bản sao lưu. Đường dẫn tệp sao lưu là:
bash/Applications/ServBay/backup/mariadb/11.3
1
5. Vấn đề về sao lưu và khôi phục
Nguyên nhân có thể
- Tệp sao lưu bị hỏng
- Lệnh khôi phục sai
Giải pháp
Kiểm tra tệp sao lưu: Đảm bảo rằng tệp sao lưu hoàn chỉnh và không bị hỏng. Sử dụng lệnh sau để kiểm tra kích thước và tính toàn vẹn của tệp sao lưu:
bashls -lh /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1Khôi phục cơ sở dữ liệu đúng cách: Sử dụng công cụ
mysql
để khôi phục cơ sở dữ liệu đúng cách:bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p your_database < /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1
Vấn đề đặc thù: ib_logfile0 was not found
và InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
Nguyên nhân có thể
- Lỗi trong phiên bản MariaDB 11.5.1
Nhật ký lỗi
240618 22:37:46 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 22:37:46 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 3323
2024-06-18 22:37:46 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 22:37:47 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 22:37:47 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 22:37:47 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 22:37:47 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 22:37:47 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 22:37:47 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 22:37:47 0 [ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
2024-06-18 22:37:47 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 22:37:47 0 [Note] InnoDB: Starting shutdown...
2024-06-18 22:37:47 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 22:37:47 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 22:37:47 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 22:37:47 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 22:37:47 0 [ERROR] Aborting
240618 22:37:48 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
240618 23:22:28 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 23:22:28 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 6667
2024-06-18 23:22:28 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 23:22:29 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 23:22:29 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 23:22:29 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 23:22:29 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 23:22:29 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 23:22:29 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 23:22:29 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Log scan aborted at LSN 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 23:22:29 0 [Note] InnoDB: Starting shutdown...
2024-06-18 23:22:29 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 23:22:29 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 23:22:29 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 23:22:29 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 23:22:29 0 [ERROR] Aborting
240618 23:22:29 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Giải pháp
Tham khảo bài viết chỉnh sửa cài đặt MariaDB, tìm tệp my.cnf
, sau đó làm theo các bước chi tiết sau:
Thêm
innodb_force_recovery = 6
vào phần[mysqld]
trongmy.cnf
Chỉnh sửa tệp cấu hình
my.cnf
, tìm[mysqld]
, thêm dòng sau:iniinnodb_force_recovery = 6
1Khởi động MariaDB
Sử dụng lệnh sau để khởi động MariaDB:
bashservbayctl start mariadb 11.5
1Sao lưu MariaDB
Sử dụng lệnh
mysqldump
để sao lưu toàn bộ cơ sở dữ liệu:bashmysqldump -uroot -p --all-databases --opt > /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1Ngừng dịch vụ MariaDB
Trong bảng điều khiển quản lý của ServBay, ngừng dịch vụ MariaDB 11.5
Xóa
innodb_force_recovery = 6
khỏimy.cnf
Chỉnh sửa tệp cấu hình
my.cnf
, xóa dòng sau:iniinnodb_force_recovery = 6
1Đổi tên thư mục
11.5
Đổi tên thư mục dữ liệu MariaDB
11.5
thành11.5.bak
:bashmv /Applications/ServBay/db/mariadb/11.5 /Applications/ServBay/db/mariadb/11.5.bak
1Thay phiên bản MariaDB khác
Thay đổi lại MariaDB về phiên bản không gặp vấn đề như 11.5.0 hoặc các phiên bản khác như 11.3 hay 11.4.
Khôi phục sao lưu MariaDB
Sử dụng lệnh
mysql
để khôi phục cơ sở dữ liệu:bashmysql -uroot -p < /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1
Kết luận
MariaDB là một hệ quản trị cơ sở dữ liệu mạnh mẽ và linh hoạt, nhưng trong quá trình sử dụng có thể gặp phải nhiều vấn đề khác nhau. Thông qua bài viết này, bạn có thể nắm được cách khắc phục sự cố dịch vụ MariaDB, bao gồm chẩn đoán và giải pháp cho các vấn đề phổ biến. Hy vọng bài viết này sẽ giúp ích cho bạn, nếu bạn có bất kỳ câu hỏi nào hoặc cần hỗ trợ thêm, vui lòng liên hệ với chúng tôi.