2009-01-16 48 views
8

Giả sử rằng có 3 cơ sở dữ liệu choStaging cơ sở dữ liệu khó khăn

  • Sản
  • Staging
  • Dev

Theo như tôi biết, Staging cơ sở dữ liệu cần phải được đồng bộ với cơ sở dữ liệu sản xuất Nhưng,

Khi chúng tôi đang phát triển, chúng tôi có thể làm bất cứ điều gì chúng tôi muốn wi th Dev cơ sở dữ liệu và lược đồ thay đổi. Bây giờ ở đây có gà & vấn đề về trứng.

Để kiểm tra trong Dàn dựng, Dàn xếp lược đồ cơ sở dữ liệu cần phải được thay đổi theo các thay đổi được thực hiện trong cơ sở dữ liệu Dev. Nhưng cơ sở dữ liệu Staging cần phải được đồng bộ với Production.

Các bạn gặp vấn đề này như thế nào?

Trả lời

4

Dàn xếp cần phải được đồng bộ hóa với quá trình sản xuất, chỉ đến thời điểm bạn triển khai thay đổi mới.

Điều đó hoặc tạo môi trường thứ 4 được gọi là Kiểm tra nơi nâng cấp mới được xác thực. Chúng ta gọi UAT/Test của chúng ta, và nó thường là một cơ sở dữ liệu thứ hai trên máy chủ Staging.

Phương pháp chính xác sẽ phụ thuộc vào cách bạn giữ mọi thứ được đồng bộ hóa. Bạn thực sự đang sử dụng sao chép? Hoặc chỉ là một bản sao lưu/phục hồi của Prod to Stage?

+0

+1 Rõ ràng, khi bạn đang triển khai các thay đổi của mình, sẽ có một khoảng thời gian mà việc sản xuất và dàn dựng cần phải không đồng bộ. Trừ khi, tất nhiên, bạn triển khai các thay đổi của bạn cho cả hai cùng một lúc, mà hoàn toàn đánh bại mục đích của việc có một môi trường dàn dựng. –

+0

Không có quyết định nào được nêu ra nhưng tôi đã suy nghĩ về việc sử dụng SQL Server Log Shipping để đồng bộ hóa cơ sở dữ liệu Staging với cơ sở dữ liệu sản xuất. Sao chép hầu như KHÔNG được sử dụng. – Sung

2

"Cơ sở dữ liệu dàn trang cần phải được đồng bộ hóa với Sản xuất" Không đúng sự thật.

Giản đồ sản xuất ("thiết kế") được đồng bộ hóa với Dàn xếp sơ đồ. Dàn dựng đến trước, sản xuất sau.

Đôi khi mọi người di chuyển dữ liệu sản xuất xuống để dàn dựng để giúp kiểm tra, nhưng điều đó có thể nguy hiểm, tùy thuộc vào ngành của bạn.

Dàn dựng là "Tinh khiết".

Sản xuất được xây dựng từ dàn dựng bằng cách đưa dữ liệu thực vào lược đồ dàn trang thuần túy.

Điều mà một số người làm là có hai cơ sở dữ liệu.

Hôm nay # 1 là sản xuất, số 2 đang dàn dựng.

Ngày mai chúng tôi dự định thực hiện thay đổi đối với giản đồ. Chúng tôi nâng cấp # 2 lên thiết kế mới. Sau đó, chúng tôi di chuyển dữ liệu từ # 1 đến # 2.

Sau đó, khi chúng tôi hoàn tất việc di chuyển dữ liệu, chúng tôi chuyển phần mềm ứng dụng để sử dụng # 2 làm sản xuất.

Chúng tôi chạy với số 2 là sản xuất cho đến khi đến lúc cho lần thay đổi tiếp theo.

1

Chúng tôi chỉ sử dụng cơ sở dữ liệu dàn dựng của mình để kiểm tra cơ chế triển khai của chúng tôi. Nó phù hợp với sản xuất.

Chúng tôi tạo các thay đổi trong quá trình phát triển và định kỳ triển khai chúng cho QA. Khi chúng tôi sẵn sàng chuyển sang sản xuất, chúng tôi tổng hợp tất cả các thay đổi thành một gói phát hành.Gói phát hành đó lần đầu tiên được thử nghiệm trên dàn dựng, và sau đó nếu không có vấn đề triển khai, nó được đẩy vào sản xuất.

1

Nếu bạn có thể đủ khả năng để thêm một env thử nghiệm, bạn có thể muốn xem xét điều đó.

Nếu không, về cơ bản bạn cần thực hiện kiểm tra trong môi trường dev của bạn. đến một điểm mà bạn đủ tự tin với bản phát hành mà bạn có thể thực hiện các thay đổi lược đồ trong env dàn dựng của bạn. Thường xuyên sao lưu và có quy trình quay lại tốt để nếu xảy ra sự cố khi bạn đẩy các thay đổi giản đồ sang dàn dựng, bạn luôn có thể quay lại.

Ngoài ra, một công cụ tốt để so sánh giản đồ cơ sở dữ liệu là SqlCompare. Bạn nên sử dụng một cái gì đó như thế này luôn luôn trước khi bạn đẩy các thay đổi lược đồ.

+0

+1 cho SqlCompare. Cảm thấy rằng SQL Delta - một công cụ tuyệt vời cho mục đích này - cũng nên đề cập đến. – 5arx

7

Bạn cần phải ghi tất cả các thay đổi của bạn vào cơ sở dữ liệu của nhà phát triển dưới dạng tập lệnh di chuyển SQL được chạy theo một thứ tự nhất định. Không thay đổi cấu trúc cơ sở dữ liệu trừ khi nó nằm trong một tập lệnh. Không cập nhật, chèn hoặc xóa bất kỳ hàng nào trừ khi nó nằm trong tập lệnh.

Lý tưởng nhất là có cách để theo dõi tập lệnh nào đã được chạy với bất kỳ phiên bản cơ sở dữ liệu nào bạn tìm thấy.

Sau đó, bạn có thể cập nhật giai đoạn như sau.

  • sản xuất Dump cơ sở dữ liệu
  • cơ sở dữ liệu giai đoạn cư với sản xuất đổ
  • di cư Run trong giai đoạn
  • Kiểm tra di cư làm việc (unit tests, kiểm tra bằng tay)

Sau khi mọi thứ hoạt động ...

  • Dump prod database with mysql đổ lệnh (vì nó có thể đã thay đổi) giữ sao lưu trên máy chủ
  • Run di cư vào sản
  • Kiểm tra di cư đã làm việc trên sản
  • bia uống (trong khi xem các bản ghi lỗi)
Các vấn đề liên quan