[Hỏi] Có rsync database thay vì dump?

Discussion in 'Hỏi Đáp Kỹ Thuật' started by Nai, May 18, 2019.

  1. Nai

    Nai MiddleMan Staff Member

    Topic gần đây nhất của em có nói đến vụ CPU tăng cao và nâng cấp nhầm VPS ấy mọi người. Và trưa nay em đã tiến hành move nó sang VPS có gói thấp hơn để.. còn có cái mà ăn.
    Và các bước em làm move database và source code như sau:
    1. Backup tất cả các thư mục public_html từng file .gz
    2. Backup tất cả file nginx của từng web
    3. Move các file backup (1) + (2) ra bằng rsync
      Chi tiết cài đặt và sử dụng rsync tại đây
      HTML:
      https://www.digitalocean.com/community/tutorials/how-to-copy-files-with-rsync-over-ssh
    4. Rsync tất cả các thư mục cache qua server mới luôn
    5. Vậy còn hơn 70GB database thì sao?
    Do em không thể dùng lệnh mysqldump nên bèn dùng cách của anh nào trên stackoverflow.com bằng cáh rsync luôn thư mục mysql qua và.. em đã làm theo.
    Mọi chuyện sẽ kết thúc tốt đẹp và em sẽ xách đầu đi lên những site mới nếu mysql không down sau khi em xóa cái VPS cũ đi

    Vâng, và nó đã down ngay khi em xóa VPS cũ với 1 giấc ngủ trưa nhẹ nửa tiếng. Và giờ thì toàn bộ lô web chỉ
    • Hoạt động với cache và crawl real time.
    • Luôn có báo lỗi khi tới các dòng kết nối mysql (vì mysql down rồi thì làm sao mà kết nối)
    • Start mysql service thì báo ok mà kết nối đến mysql thì không được.
    Hiện tại đang đang nghi vấn:
    • Rsync nguyên thư mục /var/lib/mysql chưa đúng cách (Vì lúc rsync là dịch vụ mysql trên 2 server đều run nên có thể có những file không rsync).
    • Nghi ngờ enable IP private của DO (Đang snapshot ra VPS khác để test coi sao chứ disable không được).
    Cuối cùng là nếu cái nghi vấn 2 nếu sai là site tạm thời phải crawl lại từ đầu chờ đến lúc xử lý thư muc /var/lib/mysql đã rsync chưa chuẩn kia.

    Check status khi start mysql
    upload_2019-5-18_18-38-24.png
    Update cách khắc phục
    Tình hình là đã khắc phục được khoảng 99% (Còn 1% thì ko chắc vì không biết xót không)
    Sau đây là các bước fix lại mớ file .idb (Trong thư mục /var/lib/mysql/<tên table>
    • Bước 1: Chuẩn bị một server khác (Srv B) tương tự server mysql down (Server A) (Không biết tận dụng server hiện tại bằng cách tạo 1 database với tên khác được không vì mình chưa test với ổ cứng của VPS ko cho phép làm điều đó).
    • Bước 2: Tạo các table có cấu trúc tương tự bản gốc (cột, index các kiểu)
    • Bước 3: Thực thi câu lệnh sau trong mysql
      HTML:
      ALTER TABLE mytable DISCARD TABLESPACE;
      
      

    • Bước 4: Copy /var/lib/mysql/<tên data>/<tên table>.ibd từ srv A sang srv B
    • Bước 5: Run command sau trong mysql

      Code:
      ALTER TABLE mytable IMPORT TABLESPACE;
      
      
    • Bước 6: Kiểm tra lại các table có select được hết không (count, sum, where các kiểu).
      Nếu trường hợp các có table ko count được hoặc ko duyệt được hết ở nhiều rows thì qua bước 7 (Mình gặp ở table product, có thể do dữ liệu có sự sai sốt do quá trinhf sync cả 2 srv mysql đều run)
    • Bước 7: Dùng mysqldump ra từng nhóm dòng (service này sẽ tự loại bỏ các rows có vấn đề (không select được)). Câu lệnh mình sử dụng như sau:

      Code:
      mysqldump -t -u root -p {database_name} {table_name} --where="id > 12000000 AND id <= 13000000" > /path/{data_name}.sql
    Cách làm dựa trên bài hướng dẫn sau (Mình làm theo cách này không được nên phải bỏ vài bước trong hướng dẫn) và tự hoàn thiện các vấn đề còn gặp phải. Nên khi gặp phải vấn đề trên thì ưu tiên cách làm của tác giả cho đúng chắc ăn nhá
    https://www.voxteneo.com/restoring-tables-mysql-database-frm-ibd-files-available/
     
    Last edited: May 20, 2019
    hyperlight and automan like this.
  2. money

    money Hương Chủ

    Backup mysql db theo kiểu copy file (rsync) thì data engine phải là myISAM và cấp quyền cho mysql trên folder mới tạo ra.
     
    Nai likes this.
  3. Nai

    Nai MiddleMan Staff Member

    Hiz vậy là ko fix được đúng ko anh. Vì data em dùng không phải myISAM dù đã phân quyền thư mục lại sau khi copy
     
  4. money

    money Hương Chủ

    Nếu innodb engine thì anh méo biết vì ít đụng nó lắm. Hóng các pé nào xài innodb vào sửa.
     
    Nai likes this.
  5. Nai

    Nai MiddleMan Staff Member

    {too_sad} Hết đêm nay fix ko xong thì site em lại mới toanh {sure}. Chắc ông trời tạo cơ hội làm mới mình đây,
     
  6. sincos

    sincos Bang Chúng

    Cụ có dùng tính năng gì của innodb vậy. Thằng này trùm phiền phức.
     
    Nai likes this.
  7. Nai

    Nai MiddleMan Staff Member

    Em có dùng tính năng gì của nó đâu. Em dùng script VPSSIM, mặc định nó dùng innodb nên em dùng thôi à.
    Hiện tại em đang làm theo bài hướng dẫn này, có gì update kết quả sau :D
    HTML:
    https://www.voxteneo.com/restoring-tables-mysql-database-frm-ibd-files-available/
     
  8. thitgaluoc

    thitgaluoc Hương Chủ

    Sao bác ko dump mẹ nó sang vps mới luôn, ý em là tạo db mới ở vps B rồi dump qua luôn cho nhẹ nhàng??
     
  9. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    căng nhỉ.
     
  10. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

  11. Nai

    Nai MiddleMan Staff Member

    Em biết thì đâu làm cái kiểu này bác. Bác cho em xin câu lệnh với nhé
     
  12. Nai

    Nai MiddleMan Staff Member

  13. thitgaluoc

    thitgaluoc Hương Chủ

    Nai likes this.
  14. money

    money Hương Chủ

    DB hàng thửa mất mới lo chứ db crawl thì crawl lại mấy hồi. Để đầu óc mà làm việc khác.
     
    Nai likes this.
  15. Nai

    Nai MiddleMan Staff Member

    Thank bác. Lần sau có cơ hội sẽ áp dụng cách này.
    Victim của em nó chặn ip kinh lắm anh ơi. rotate proxy mà em phải curl 3 - 4 lần mới được 1 page đó anh.
    Mà hiện tại thì em restore cũng sắp xong rồi. Giờ đang test lại. Khi nào thấy ổn thiệt update cho ai lỡ dại như em.
     
    Le Hieu likes this.
  16. money

    money Hương Chủ

    Đâu đâu ... đưa anh xem victim xem nào?
     
  17. Nai

    Nai MiddleMan Staff Member

    ANh tò mò thiệt inbox đi em đưa cho :D
     
  18. thitgaluoc

    thitgaluoc Hương Chủ

    em cũng chưa thấy site nào chặn ip cỡ đó, bác inbox cho em mắt thấy tai nghe với
     
  19. money

    money Hương Chủ

    Ơ đang rảnh nên anh hỏi để lấy số post thôi chứ biết victim làm gì {embarrassed}
     
  20. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Củng thật sự chưa bao h gặp 1 site nó chặn kinh tới vậy đó