Sử dụng LocalWP tôi mất dữ liệu database trên 29 site

unnamed 1 1

Cảnh báo: Tôi mất dữ liệu database trên 29 site — Đây là những gì đã xảy ra và cách bảo vệ bản thân


Chuyện gì đã xảy ra

Tôi dùng Local by Flywheel lâu rồi với 29+ site WordPress, tất cả lưu trên ổ riêng (F:WebserverSource). Một ngày đẹp trời mở Local lên thì mọi site đều không start được với cùng một lỗi:

Uh-oh! Unable to start site.
mysqladmin: connect to server at '::1' failed
Can't connect to MySQL server on '::1' (10061)

Không update Windows, không cài phần mềm mới, không dùng công cụ dọn rác. Chỉ qua một đêm là hỏng.


Nguyên nhân #1: Port bị trùng trong sites.json (MySQL crash)

Sau khi đọc log tại:

C:Users<tên>AppDataRoamingLocallocal-lightning.log

Phát hiện lỗi nghiêm trọng: site code-wp.com bị tất cả các service dùng chung một port 10774 — có thể do Local bị crash trong lúc tạo site. Điều này khiến MySQL crash khi khởi động và kéo theo tất cả site khác không lên được.

Cách fix: Sửa thủ công sites.json, gán port riêng biệt cho từng service.


Nguyên nhân #2: Database lưu trong AppData — rất dễ mất

Đây là vấn đề quan trọng hơn tôi muốn cảnh báo mọi người.

Local lưu database MySQL/MariaDB thật sự tại:

C:Users<tên>AppDataRoamingLocalrun<id ngẫu nhiên>

Trong 29 site của tôi, chỉ còn 7 thư mục trong run — số còn lại biến mất không rõ lý do.

Các file appsqllocal.sql trong thư mục source? Đó chỉ là file SQL mặc định lúc cài WordPress, không phải backup data thật. Đừng tin vào chúng.

Điều này có nghĩa là:

  • File WordPress (theme, plugin, uploads) an toàn nếu lưu ở ổ riêng
  • Database — bài viết, đơn hàng, cài đặt, tài khoản — có thể mất hoàn toàn

Những gì Local KHÔNG làm mặc định

  • ❌ Không tự động backup DB khi tắt site
  • ❌ Không cảnh báo khi thư mục run của site bị mất
  • ❌ Không phát hiện port trùng trong sites.json
  • ❌ DB lưu trong AppData — nơi dễ bị công cụ dọn rác xóa nhất

Cách bảo vệ bản thân

  1. Export site thường xuyên qua tính năng Export của Local
  2. Cài UpdraftPlus hoặc All-in-One WP Migration trên mọi site quan trọng, backup tự động ra Google Drive hoặc ổ ngoài
  3. Loại trừ thư mục Local khỏi phần mềm dọn rác — whitelist AppDataRoamingLocal
  4. Backup thủ công thư mục run định kỳ sang ổ khác
  5. Kiểm tra sites.json sau mỗi lần Local crash để phát hiện port trùng

Đề xuất cho Local team

  1. Tự động export SQL khi stop site
  2. Cảnh báo port trùng trước khi start
  3. Cho phép người dùng tự chọn nơi lưu database
  4. Hiển thị cảnh báo khi thư mục run bị thiếu

Hy vọng bài này giúp được người khác tránh khỏi tình huống tương tự. Luôn giữ backup bên ngoài — đừng tin tưởng hoàn toàn vào bất kỳ công cụ dev local nào để bảo vệ data của bạn.