Update Database khi trang web đang chạy ở host
Xin chào mọi người, hôm nay em muốn hỏi một câu hỏi mà em đã suy nghĩ 2 ngày rồi ạ. Vẫn chưa có câu trả lời và chưa có hướng đi ạ.
Em đang xây dựng một website, đã public lên host nhưng bây giờ, khách hàng yêu cầu bổ sung thêm thông tin (columns) cho 1 số bảng và liên kết với nhau...
Như vậy thì làm thế nào để có thể UPDATE DB trog trường hợp này để không ảnh hưởng gì đến DATA ạ?
Em xin cám ơn.
3 CÂU TRẢ LỜI
Chỉnh sửa lại cấu trúc DB trong Laravel thì cứ migration mà táng thôi bạn. Bạn dùng git chứ? Sử dụng git rồi checkout code hiện tại ở master ra một branch khác, bạn sửa code trên branch đấy sao cho web hoạt động bình thường, không bị lỗi. Dữ liệu cũ vẫn được đảm bảo tồn tại và tương thích trên cấu trúc mới. Sau tất cả, chỉ cần merge branch này về master và thực hiện deploy thôi.
Còn nếu web nhỏ, chỉ deploy trên hosting thì ở bước deploy, bạn phải làm sửa cấu trúc thủ công thôi. Chuyển web về chế độ maintain mode, download cái database đó về, sau đó migrate ở local. Xong đâu đấy thì upload code mới lên, import database mới và tắt chế độ maintain mode.
Ồ... cám ơn a Kim
Anh có thể cho e xin link cách sử dụng Git cho migration in laravel được không ạ...
@minhtuancnttk39 Cách dùng migration thì có trong doc laravel bạn có thể tham khảo.
Nếu bạn có thể SSH lên host để thực hiện command line migrate lúc deploy thì ngon lành cành đào. Còn không thì bước deploy phải làm thủ công như mình mới bổ sung trong answer:
Còn nếu web nhỏ, chỉ deploy trên host thì bạn ở bước deploy, bạn phải làm sửa cấu trúc thủ công thôi. Chuyển web về chế độ maintain mode, download cái database đó về, sau đó migrate ở local. Xong đâu đấy thì upload code mới lên, import database mới và tắt chế độ maintain mode.
@minhtuancnttk39 Còn về Git, nếu chưa biết gì bạn có thể tham khảo bí kíp của mình: https://viblo.asia/p/so-tay-git-co-ban-can-phai-biet-khi-di-lam-WAyK8M0nZxX
Làm được chưa bạn ơi? Dùng migration là được thôi mà, không ảnh hưởng gì đến data cả, mình vẫn làm suốt.
Website chạy trên hosting thì thường nhà cung cấp sẽ không cho mình quyền SSH hay thực hiện command line chạy được các lệnh artisan
của laravel. Chắc là chủ thớt biết là dùng migration nhưng tới đây chưa biết hướng giải quyết ra sao để migrate
database được đó bạn.
Thông thường host luôn lưu dữ liệu database website 1 tuần 1 lần. Nên bạn có thể đổi được mà không sợ mất dữ liệu. Dữ liệu trên host luôn được backup. Lúc trươc trang web http://minhgiahuy.com/san-xuat-ao/co-so-may-ao-thun-ca-sau/ của mình cũng bị lỗi và update lại bình thường
theo ngu ý của mình thì cứ backup lại rồi làm thôi có gì đâu nhỉ, việc sửa database trong quá trình làm website là bình thường mà
@vuongthai95 Cách đó em đã nghĩ đến ạ, nhưng chưa khả thi nhất vì lý do như sau ạ:
views
của bảng nào đó.. thì e sẽ không nhận biết được và ảnh hưởng đếnranking
của bài viết cũng như video nào đó... Đó là vấn đề em đang gặp phải ạ@minhtuancnttk39 hóa ra là thế
Không biết bạn đang sử dụng ngôn ngữ hay framework gì? Trước mình có làm laravel thì mình sử dụng cách này:
B1: Tạo CSDL mới với các bảng và quan hệ mới theo yêu cầu.
B2: Viết các API để lấy dữ liệu từ các bảng trên cơ sở dữ liệu cũ
B3: Viết các command để đồng bộ dữ liệu cũ vào các bảng tương ứng trên dữ liệu mới (Lưu ý là bước này phải map dữ liệu giữa hai CSDL với nhau, vì thường primary key là ID nhưng lại được sinh tự động, có thể bị mất một số bản ghi khi bị xóa, bạn có thể sử dụng một trường unique khác trong bảng để làm căn cứ) => không ảnh hưởng đến
rank
....Tất nhiên là làm trên local rồi, bao giờ ngon nghẻ rồi thì update lên server thôi.
Chúc bạn thành công!
@ducbao.phan Cách của bạn thật sự rất hay..
Cám ơn bạn vì điều đó nhé... Mình sẽ thử sức xem thế nào?