Bài 13: Database cơ bản cho SysAdmin

Bài 13: Database cơ bản cho SysAdmin

Bài này giúp anh kiểm tra trạng thái database, kết nối, port, log và backup cơ bản ở vai trò SysAdmin.

Sau bài này anh sẽ biết:

  • SysAdmin cần biết gì về database.
  • Kiểm tra MySQL/MariaDB/PostgreSQL service.
  • Kiểm tra port, log và kết nối.
  • Backup/restore cơ bản.

Chốt ý nhanh

Chủ đề Điểm cần nhớ
Vai trò SysAdmin Không cần thành DBA, nhưng phải biết service DB sống hay chết và vì sao app không kết nối được.
Rủi ro lớn DB đầy disk, mở public sai cách, không backup hoặc không test restore.
Phản xạ đúng Kiểm tra service, port, user, log, disk trước khi động vào dữ liệu.

1. SysAdmin có cần biết database không?

Có. Không cần thành DBA ngay, nhưng cần biết service DB có chạy không, disk có đầy không, app có kết nối được không, backup có restore được không.

2. Kiểm tra service và port

systemctl status mysql || systemctl status mariadb
systemctl status postgresql
ss -tulpn | grep -E '3306|5432'

3. Kết nối MySQL/MariaDB

mysql -u root -p
SHOW DATABASES;
SELECT USER, HOST FROM mysql.user;
EXIT;

4. Kết nối PostgreSQL

sudo -u postgres psql
\l
\du
\q

5. Đọc log database

journalctl -u mysql --since "1 hour ago" || journalctl -u mariadb --since "1 hour ago"
journalctl -u postgresql --since "1 hour ago"

6. Backup cơ bản

mysqldump -u root -p database_name > database_name.sql
pg_dump database_name > database_name.sql

Backup xong cần kiểm tra file có dung lượng hợp lý và nên test restore.

7. Tình huống thực tế

App báo “cannot connect to database”. Anh kiểm tra DB service, port listen, credential, firewall nội bộ, disk có đầy không và log DB.

8. Lỗi thường gặp

  • Mở database public ra Internet.
  • Không test restore.
  • Backup nằm cùng server production duy nhất.
  • Không theo dõi disk khiến DB dừng ghi.
Lưu ý production: Không chạy lệnh xóa/sửa dữ liệu nếu chưa backup và chưa hiểu impact.

9. Checklist database

  • Service active.
  • Port listen đúng interface.
  • Disk còn đủ.
  • Backup có lịch và có test restore.
  • User app có quyền tối thiểu cần thiết.

10. Bài tập

  1. Kiểm tra service database trên máy lab.
  2. Liệt kê database/user.
  3. Tạo một file dump test.
  4. Viết checklist xử lý app không kết nối DB.

Phần thực hành mở rộng: database theo góc nhìn vận hành hạ tầng

Database là thành phần mà chỉ cần một lỗi nhỏ cũng có thể làm ứng dụng dừng toàn bộ. Vì vậy bài này nên tập trung vào cách quan sát an toàn, không sa đà vào tối ưu sâu như DBA.

Lab 1: Kiểm tra DB service và cổng mạng

systemctl status mysql || systemctl status mariadb
systemctl status postgresql
ss -tulpn | grep -E '3306|5432'

Mục tiêu là xác định DB có đang chạy không, có listen đúng cổng không, và đang bind trên interface nào.

Lab 2: Kiểm tra kết nối nội bộ

mysql -u root -p -e 'SHOW DATABASES;' 
sudo -u postgres psql -c '\l'

Nếu kết nối local còn lỗi, chưa cần nghĩ tới firewall ngoài; hãy xử lý service, socket, credential hoặc permission trước.

Lab 3: Backup dump nhỏ và kiểm tra file output

mysqldump -u root -p database_name > /tmp/database_name.sql
ls -lh /tmp/database_name.sql
head -20 /tmp/database_name.sql

Hoặc với PostgreSQL:

pg_dump database_name > /tmp/database_name.sql
ls -lh /tmp/database_name.sql

Một file dump có dung lượng 0 byte hoặc nhỏ bất thường là tín hiệu phải kiểm tra lại ngay.

Lab 4: Đọc log khi app không nối DB được

journalctl -u mysql --since "1 hour ago" --no-pager || journalctl -u mariadb --since "1 hour ago" --no-pager
journalctl -u postgresql --since "1 hour ago" --no-pager

Kết hợp thêm log ứng dụng để phân biệt lỗi credential, timeout, connection refused hay too many connections.

Tình huống thực tế

Một ứng dụng báo “database connection failed”. Đôi khi lỗi nằm ở DB service down, đôi khi là disk đầy khiến DB không ghi được, đôi khi là app deploy sai biến môi trường. Người vận hành tốt phải kiểm từng lớp, không đoán mò.

Lỗi phổ biến

  • Mở MySQL/PostgreSQL public ra Internet không kiểm soát.
  • Có backup nhưng chưa từng test restore.
  • Backup nằm ngay trên cùng máy production.
  • Động vào dữ liệu khi chưa backup hoặc chưa hiểu impact.

Kết bài

Sau bài này, anh chưa cần trở thành DBA, nhưng đã có đủ khung để chăm một database dưới góc nhìn SysAdmin: biết nó có chạy không, app có nối được không, log đang nói gì và backup có đáng tin không. Bài kế tiếp sẽ nối thẳng sang một kỹ năng sống còn của vận hành: backup và restore.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *