“Tay không” sao lưu và phục hồi database cho blog WordPress

[Cập nhật] : Trước khi thực hiện việc backup, bạn hãy xem bài viết “Gỡ bỏ “post revision” của WordPress” để loại bỏ dữ liệu thừa ra khỏi database, giúp việc backup nhanh hơn và database nhẹ hơn. Ngoài ra, bởi vì có 1 bạn thực hiện không thành công nên tôi xin khuyến cáo là : trước khi thực hiện, bạn hãy backup lại toàn bộ thư mục lưu trữ blog trên host của bạn và quan trọng nhất là đừng xóa database. Khi gặp sự cố, bạn chỉ việc phục hồi lại blog là xong.

Khi bạn đọc được bài viết này thì tôi đã hoàn thành việc cài lại blog và chuyển dữ liệu (bài viết, comment, category…) từ database cũ sang database mới. Mất cả một buổi tối tập trung làm việc bởi vì nếu sai sót, toàn bộ dữ liệu trên blog gần 2 năm qua sẽ mất sạch !

Như đã nói, tôi đã tìm đủ mọi cách để backup database nhưng đều thất bại :

– Công cụ backup của 000webhost ( nơi lưu trữ của blog hiện tại ) không hoạt động do dung lượng blog lớn hơn 100Mb.

– Sử dụng mọi plugin của WordPress liên quan đến việc backup database nhưng đều thất bại, không công cụ nào xài được cả !

– Tự làm bằng tay theo các hướng dẫn trên mạng : sử dụng tính năng Export và Import database trong phần quản trị database (phpMyAdmin) để backup database -> thất bại thảm hại. Tức là ở chỗ, tôi export dữ liệu nhưng đến khi import thì nó lại báo lỗi, hết lỗi này đến lỗi khác -> điên máu !

Cuối cùng, tôi cũng thực hiện thành công cách thứ 3 nhưng không phải cách mà “giang hồ” đồn đại, phải làm qua nhiều bước mới thành công. Kịch bản tôi viết bài này như sau : tôi sẽ xóa hết toàn bộ blog cũ trên host (xóa blog, không phải xóa database nhé) > tạo một database mới > cài WordPress lên database mới đó > chuyển dữ liệu từ database cũ sang database mới.

Trước tiên, về cách cài đặt blog WordPress, cách tạo database và mọi thứ cơ bản liên quan, bạn xem trong loại bài về cài đặt blog WordPress sau :

Phần 1 – Chọn host

Phần 2 – Cài đặt

Phần 3 – Cấu hình và cài giao diện

Phần 4 – Cài đặt các plugin cần thiết

Phần 4 – Cài đặt các plugin cần thiết (tiếp theo)

Phần 5 – Một số biện pháp bảo mật cơ bản cho Blog

Phần 6 – Đăng ký và sử dụng tên miền rút gọn miễn phí

Lưu ý trong quá trình cài đặt blog trên database mới : bạn còn nhớ phần tạo tiền tố cho các bảng trong database khi cài blog ? Đó chính là giá trị bạn đặt ở dòng “$table_prefix” trong tập tin wp-config.php. Bạn xem trong phần 2 của loạt bài cài đặt WordPress bên trên, mục “2.Cấu hình ban đầu cho Blog”. Để cho tiện thì ở blog cũ bạn đặt như thế nào thì blog mới đặt y chang như vậy để tránh mệt mỏi sau này.

Sau khi bạn đã xóa blog cũ và cài WordPress mới trên database mới thành công. Bạn tiến hành chuyển dữ liệu từ database cũ sang database mới như sau :

1. Backup database cũ :

Truy cập vào phần quản trị host > vào phpMyAdmin và truy cập vào database cũ :

Backup and restore wordpress database

Giao diện hiện ra như sau :

Backup and restore wordpress database

Bạn sẽ tiến hành backup lại từng bảng trong database này. Nếu bạn đã từng thử làm thì sẽ thấy “giang hồ” toàn xúi bạn backup toàn bộ database 1 lúc -> backup thì được nhưng restore lại có mà đến…kiếp sau mới được ! Tôi đã thực hiện thành công cách của mình và tôi tin là bạn cũng sẽ thành công 100% nếu làm đúng như tôi hướng dẫn trong bài này là : tiến hành export dữ liệu của từng bảng, trong đó có vài bảng quan trọng như bảng posts (chứa toàn bộ thông tin về bài viết), postmeta(chứa các tag của bài viết), comments (chứa toàn bộ comment của blog), options(chứa toàn bộ thiết lập của blog, của plugin, của theme…v..v…)

Lưu ý, trong trường hợp của tôi, tôi đã xác định là cài lại mới, cài lại plugin và thiết lập lại các thông số cho blog nên tôi sẽ không backup bảng “options”. Và nếu bạn muốn backup bảng này thì trước khi xóa blog cũ, bạn phải vào phần quản trị của blog > vô hiệu hóa toàn bộ plugin và chuyển blog về theme mặc định của WordPress. Nếu bạn không làm vậy, có thể bạn sẽ gặp rắc rối sau khi phục hồi dữ liệu cho database.

Cách backup từng bảng như sau : Bấm chuột vào tên bảng ở cột bên tay trái (1) > chờ một chút để nó load nội dung lên > bấm vào thẻ “Export” (2) > giao diện hiện ra như sau :

Backup and restore wordpress database

Bạn chú ý vào những phần mà tôi đánh dấu, chỉ chọn đúng nhiêu đó, còn lại bỏ chọn hết, chọn theo các vị trí được đánh dấu trong hình. Xong bấm nút “Go”, nó sẽ hiện lên hộp thoại download để bạn tải về một tập tin dạng “têndatabse_tênbảng.sql.zip”. Bạn làm tương tự cho tất cả các bảng có trong database cũ, tải về và lưu chúng vào một thư mục, khi hoàn tất thì giải nén toàn bộ để được các tập tin có phần mở rộng là “.sql”

2. Phục hồi dữ liệu

Có thể bạn sẽ nghĩ là tôi sẽ dùng tính năng “Import” của phpMyAdmin ? Không, bởi vì đây là tính năng…cùi bắp, import toàn bị lỗi nên tôi không dùng. Bạn tiến hành đăng nhập vào database mới và tiến hành phục hồi dữ liệu cho từng bảng theo thứ tự từ trên xuống cho dễ. Cách làm như sau :

– Bấm chuột vào bảng muốn phục hồi ở cột bên trái > chờ nội dung load lên hết, bạn bấm nút “Empty” để xóa toàn bộ nội dung hiện có, tránh bị lỗi khi phục hồi sau này. Hộp thoại cảnh báo hiện ra bạn bấm nút OK.

Backup and restore wordpress database

– Tiếp theo bấm vào thẻ “SQL” > chờ nó load lên giao diện, bạn xóa toàn bộ nội dung hiện ra ở ô nhập liệu. Bạn mở tập tin “.sql” tương ứng đã backup bên trên. Ví dụ tôi muốn phục hồi dữ liệu cho bảng “comments” thì tôi sẽ mở tập tin tương ứng đã backup là “…_comments.sql”. > copy từ dòng “Insert into….” đầu tiên cho đến hết file > dán vào phần ở ô nhập liệu trên web và bấm nút “Go”.

Backup and restore wordpress database

Lưu ý rất quan trọng : Với những bảng có nhiều dữ liệu như bảng “comment” hoặc bảng “posts”, bạn không nên copy hết một lần và thực thi việc insert dữ liệu vào database 1 lần -> việc làm này có thể làm treo trình duyệt và thậm chí là treo máy, hơn nữa, bạn sẽ không thực hiện thành công. Do đó bạn hãy copy và insert từng phần. Mỗi dòng “Insert into….” sẽ kết thúc bằng dấu “;” như hình bên trên. Mỗi lần bạn chỉ nên copy một ít > “dán” vào ô dòng lệnh SQL trên web và bấm nút “Go” > đợi đến khi nó thực thi xong thì copy tiếp và làm tiếp, làm cho đến khi hết file và chuyển qua bảng tiếp theo để làm. Nhớ bấm nút “Empty” trước khi thực hiện việc Insert dữ liệu vào bảng tương ứng, nếu không sẽ bị lỗi đó.

Backup and restore wordpress database

Backup and restore wordpress database

Sau khi hoàn tất, bạn truy cập vào phần quản trị và sẽ thấy toàn bộ dữ liệu đã được phục hồi. Còn khá nhiều vấn đề liên quan và tôi nghĩ là sẽ viết nó vào một ngày khác và bài khác bởi vì viết xong bài này cũng đuối rồi.

Chúc bạn thành công ! Có gì bạn cứ để lại comment, tôi sẽ giúp nếu được, hehe.

22 Comments
  1. Mình backup được như bạn nói nhưng mà mấy cái tag của bài viết không thể nào xuất hiện trong các post được.Túm lại khi backup như bạn hướng dẫn thì backup được bài viết nhưng Uncategorized và no tag. Bạn giúp mình sửa được k?Cảm ơn nhiều.

  2. Mình chưa back up term nên bị như vậy. Mình back up lại term rồi thì có categorize và tag rồi. Cảm ơn vì những kiến thức bạn đã chia sẻ.

  3. Cám ơn anh vì bài viết này. Em đã mua host ipage và điền anhhangxomonline.net vào chỗ giới thiệu. Ko bít có đúng ko nữa 😛

  4. A cho e hỏi 1 vấn đề nhé
    e đang xài host ipage, nhưng nó cứ mặc định url là có www. Em muốn bỏ www nên đã thử dùng code

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^your-site.com$ [NC]
    RewriteRule ^(.*)$ http://your-site.com/$1 [L,R=301]

    trong .htacess để rewrite sang dạng không có www ==> sau đó em thấy nó báo cứ redirect qua lại liên tục giữa url có www và không có www mà không hề load site, rồi hiện ra trang báo lỗi là redirect nhiều lần quá.
    A có cách nào giải quyết tình trạng này không ạ? có thể giúp e ko? T___T

  5. Theo tôi bạn cứ nghe “giang hồ” backup toàn bộ database 1 lúc đi rồi nếu thích có thể cắt nhỏ file “1 cục” đó ra làm vài phần hoặc dùng bất cứ chương trình nào liên quan đến sql tách nó ra thành từng “bảng”
    Chức năng Import database trong phần quản trị database (phpMyAdmin) của 000webhost cùi thật nhưng hoàn toàn có thể import được 1 cục <5Mb. Cứ import bình thường nó báo không import hết do quá thời gian thì lại làm lại, nó sẽ import phần tiếp theo của cái file "1 cục" đấy. Cứ thế vài lần là xong. "1 cục" 5Mg làm 6-7 lần là xong.
    Chứ làm theo cách của bạn thì tôi thấy thật là "tay không" thật =))

    • Cũng như bạn nói, nó chỉ có thể import được 1 cục <5Mb. Trước khi tới với cách làm này, tôi đã thử làm mọi cách nhưng đều thất bại. Nó không báo thời gian import lâu mà báo lỗi không thể import được, hình như là lỗi liên quan đến dấu nháy kép hay dấu nháy đơn gì đó, nếu tôi nhớ không lầm, và có thể có lỗi khác nữa.

      Tôi cũng đã từng làm theo lời đồn là tải về một chương trình để nó cắt nhỏ file .sql ra làm nhiều phần nhưng vẫn không được. Thực sự là mỗi lần chạy là mỗi lần lỗi, hết lỗi này đến lỗi khác. Lúc đó tôi cũng tự hỏi tại sao thiên hạ người ta làm được ầm ầm nhưng lại không bị lỗi, mình làm y chang thì lại bị lỗi. Khác biệt duy nhất giữa tôi và họ là ngôn ngữ sử dụng trong tập tin sql.

      Và cách mà tôi giới thiệu bên trên thực sự là cách cuối cùng, ít nhất là với trường hợp của tôi và dữ liệu của anhhangxomonline.net

      • Oh sry lâu mới quay lại. Thật ra tôi backup db ở 000 cũng nhiều nhưng cho wordpress thì chưa nên k dám chắc lắm. Nhưng tôi backup nói chung là dễ nên nghĩ cho cái gì cũng thế.
        Tôi chỉ biết vào db chỉnh sửa vài thứ lung tung theo ng` ta nói để sửa cho web/forum thôi chứ k hiểu lắm về các loại ngôn ngữ nên k hiểu câu “Khác biệt duy nhất giữa tôi và họ là ngôn ngữ sử dụng trong tập tin sql” bạn có thể nói rõ đc k. Biết đâu lại tìm đc nguyên nhân.
        Cảm ơn và chúc ăn Tết vui vẻ.

        • Mới đầu làm đủ mọi cách theo các tài liệu nước ngoài hướng dẫn nhưng không thể thành công. Chắc do file SQL của mình là tiếng Việt. Hơn nữa có thể do phần nội dung có quá nhiều dấu nháy kép đơn ‘, nháy kép ” dẫn đến lỗi tùm lum khi nó Import, sửa được chỗ này thì chỗ khác bị lỗi.

          Chúc ăn Tết vui vẻ luôn nhé !

  6. Anh hướng dẫn cách config lại sau khi restore database được không, em thử dùng file backup từ trang wordpress của em về restore cho site wordpress trên localhost, sau khi thực hiện thì toàn bộ link nó đều chạy trên site backup, làm sao để sửa lại mấy cái link đó vậy.

  7. biết bài viết này của anhhhangxom lâu rồi, nhưng h mình cũng đang gặp trường hợp cần phục hồi data
    cái phpadmin của host 5gigs mình đang xài nó không hoạt động (click vào phpadmin trong trang cpanel thì nó báo:
    The page isn’t redirecting properly
    Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
    This problem can sometimes be caused by disabling or refusing to accept
    cookies.
    Vậy là phpadmin không hoạt động được thì làm thế nào để xuất data ra đây?
    mong ahx tư vấn giúp

    • Trước tiên, bạn hãy thử dùng một trình duyệt khác hoặc đổi sang máy khác xem sao. Như máy của mình không thể nào dùng Gmail Drive được bởi vì nó cứ báo trình duyệt không chấp nhận cookies nhưng rõ ràng là có. Cài trên máy ảo hay máy khác thì lại được.

  8. chào anh, em thấy chủ đề anh giới thiệu là blog wordpress, trong khi em lại đang sử dụng blog tại http://wordpress.com
    Vậy 2 cái này là hoàn toàn khác nhau phải k ạ? vì em thấy giao diện cũng khác nữa. Vì em đang muốn khôi phục lại blog cũ đã lỡ tay xóa mất, nên em muốn hỏi việc áp dụng bài này của anh liệu có đúng k ạ? hay còn cách nào khác nữa k?
    hy vọng anh sẽ giúp đỡ, thân.

    • Các blog wordpress nói chung được chia làm 2 loại là loại tự cài và loại có sẵn.
      – Loại có sẵn chính là wordpress.com -> em chỉ cần vào đó đăng ký một tài khoản là có một cái blog theo dạng tên_blog.wordpress.com.
      – Loại tự cài chính là cái blog của anh. Với loại này, em phải đi mua một cái host, mua tên miền rồi tải wordpress về để cài đặt và tự làm mọi thứ khác, ví dụ như tự đi kiếm giao diện về để cài và chỉnh sửa lại cho phù hợp.

      Nếu em đã lỡ xóa cái blog tại WordPress.com thì bó tay, không khôi phục được đâu bởi vì tài khoản của em đã bị xóa rồi.

  9. Anh ơi anh giúp em một tí được ko ạ
    Em muốn tạo spoiler cho bài viết, và tìm được một plugin rất phù hợp. Nó là cái wpspoiler http://wordpress.org/plugins/wpspoiler/ này ạ, rất gọn nhẹ.
    Nhưng em gặp vấn đề là không đổi được title của spoiler. Nó cứ mặc định là Show và Hide.
    Anh có cách nào chỉnh sửa plugin để khi mình dùng, đại loại là [spoiler show=”click vào xem nè” hide=”ẩn đi”] text [/spoiler] thì nó hiện ra “Click vào xem nè” thay cho chữ Show, và “ẩn đi” thay cho chữ Hide mặc định không ạ

    • Em mở tập tin wpSpoiler.php trong thư mục “wpspoiler”. Ngay đầu hàm em sẽ tìm thấy dòng “$showtext = ‘show’;” và dòng “$hidetext = ‘hide’;” .Em chỉ việc thay chữ “show” và chữ “hide” bằng nội dung em muốn, sau đó lưu lại tập tin này, lưu ý là nếu em dùng notepad thì lúc save chọn “Encoding” là “Unicode” thì nó mới hiển thị đúng tiếng Việt đó nhé.

      • Em cám ơn anh, trước đó em đã làm theo cách này rồi, nhưng nó sẽ mặc định chữ “Show” và “Hide” bằng nội dung em muốn mãi. Ý em là nếu em thay như vầy thì ở mỗi cái spoiler nó đều giống nhau, em ko tùy chỉnh được. Có khi muốn ghi là Click vào xem hoặc hiện ra hoặc tóm tắt v.v… có thể tự tùy chỉnh được tùy vào mỗi bài đáy ạ. Mình có thể tùy chỉnh mỗi title của nó, không chỉ có mỗi title mặc định đấy anh.ạ

  10. Anh ơi em đã tìm được cách rùi, em ko làm phiền anh nữa ạ 😀

Ý kiến phản hồi