Có thể trích xuất các giá trị của tháng trước từ máy chủ MySQL và xây dựng cơ sở dữ liệu mới từ các giá trị đó không?


8

Tôi có một nhiệm vụ để xây dựng một mẫu máy ảo phát triển.

Tôi cần thêm vào máy chủ cơ sở dữ liệu MySQL từ mỗi sản phẩm của công ty tôi để các nhà phát triển mới có khả năng phát triển cho từng sản phẩm.

Hầu hết các cơ sở dữ liệu nhỏ hơn 1GB.

Nhưng tôi có một vài cơ sở dữ liệu rất lớn (khoảng 160G) - nhưng tôi bị giới hạn về kích thước của mẫu mà tôi đang cố gắng tạo và không hợp lý khi thêm DB có 160GB.

Do đó, tôi đang cố gắng tìm phương pháp phù hợp để trích xuất, giả sử, các giá trị của tháng trước từ cơ sở dữ liệu khổng lồ này và thêm chúng vào máy chủ để nhà phát triển có thể "cảm nhận" những gì nó hoạt động trên cơ sở dữ liệu này.

Có thể làm một điều như vậy và làm thế nào nó được thực hiện? Cảm ơn!

Biên tập:

Thật không may, không có tùy chọn cho một máy chủ DB chính riêng biệt sẽ chứa tất cả các cơ sở dữ liệu phát triển, cũng không có yêu cầu cập nhật dữ liệu thường xuyên, tôi chỉ cần trình bày cùng một dữ liệu như trong các máy chủ sản xuất (trong một khoảng thời gian ngẫu nhiên) như một môi trường hộp cát cho các nhà phát triển mới.

Câu trả lời:


8

Nếu tôi hiểu chính xác, bạn đang dự định tạo một bản sao DB riêng cho từng môi trường phát triển.

Mặc dù điều này có thể khả thi với các cơ sở dữ liệu nhỏ, nhưng nó sẽ không hoạt động tốt với các DB lớn. Vì vậy, trừ khi bạn có lý do thực sự tốt để thiết lập một DB riêng cho từng môi trường, tốt hơn là nên xem xét việc có một bản sao cơ sở dữ liệu phát triển và đặt tất cả các môi trường phát triển để sử dụng nó.

Cách tiếp cận này sẽ cho phép bạn làm mới DB phát triển với dữ liệu mới nhất theo định kỳ và nếu ai đó làm hỏng nó, bạn có thể làm mới lại.

Cũng hãy tưởng tượng tình huống mà các nhà phát triển của bạn bắt đầu làm việc trên một số dự án mới đòi hỏi phải tạo các bảng mới. Nếu bạn có một bản sao phát triển DB, bạn (hoặc nhà phát triển) sẽ cần tạo các bảng đó và điền chúng vào dữ liệu thử nghiệm chỉ một lần. Bây giờ hãy tưởng tượng các nhà phát triển nhận ra rằng cấu trúc bảng ban đầu không tối ưu và cần phải thay đổi. Một lần nữa, điều này sẽ cần phải được thực hiện trên một DB trái ngược với hàng chục môi trường.

Đây là cách tiếp cận tôi thấy được sử dụng cho các dự án lớn hết lần này đến lần khác và hầu hết thời gian nó hoạt động khá tốt.


2
Trong một cửa hàng nơi tôi làm việc, mọi nhà phát triển đều có bản sao cơ sở dữ liệu của riêng họ để không ai bước lên ngón chân của người khác. Điều này làm việc rất tốt cho chúng tôi. Chúng tôi có các kịch bản để xây dựng lại cơ sở dữ liệu từ đầu và điền dữ liệu thử nghiệm cần thiết cho sự phát triển. Cơ sở dữ liệu đơn lẻ thường có vấn đề với những người làm việc trên một số khu vực cơ sở dữ liệu phá vỡ nó cho người khác. Và sau đó mọi người dừng lại trong khi một db lớn đang được khôi phục. Vì vậy, có một cơ sở dữ liệu duy nhất KHÔNG phải là một giải pháp ưu việt. (TBH cũng không phải. Đó là tình huống.)
Andrew Savinykh

Đã đồng ý. Vì tò mò, DB của bạn lớn đến mức nào? Tôi không thể thấy nó hoạt động như thế nào với DB có kích thước 160GB.
grekasius

Tất nhiên các cơ sở dữ liệu dev sẽ cố tình nhỏ chỉ với tập hợp dữ liệu cần thiết để kiểm tra bất cứ điều gì các nhà phát triển đang làm việc. Đối với các mục đích như kiểm tra hiệu năng, một cá thể (lớn hơn) sẽ được sử dụng.
Andrew Savinykh

Tôi không bắt buộc phải cập nhật dữ liệu thường xuyên, chỉ cần đặt nó một lần trong mẫu này.
Itai Ganot

Hãy xem nếu bạn có thể tạo một tập dữ liệu mẫu nhỏ từ DB hiện tại của bạn. Không có câu trả lời đơn giản ở đây không may. Những gì bạn cần làm phụ thuộc vào dữ liệu bạn có và những gì bạn chọn để đưa vào DB đó.
grekasius

4

Điều này cực kỳ phụ thuộc vào loại dữ liệu trong cơ sở dữ liệu. Trong một số trường hợp, nó có thể dễ dàng như

select * from table where date > ....

trong khi trong các trường hợp khác, không thể tách rời điều này vì cấu trúc của dữ liệu. Cuối cùng, nó có thể sẽ là một hỗn hợp và rất khó để có được đúng.


2
Cụ thể, một số cơ sở dữ liệu có thể có các mục mới hơn (giả sử <1 tháng) mà các bản ghi tham chiếu từ các mục cũ hơn (giả sử,> 1 tháng). Cách bạn đối phó với chúng phụ thuộc hoàn toàn vào cách các tài liệu tham khảo này được thiết lập và không khả thi đối với tất cả những người cơ bản nhất.
Bob

0

Gần đây chúng tôi đã có một tình huống một khách hàng muốn trích xuất 30 ngày qua của cơ sở dữ liệu. Nếu TẤT CẢ các bảng có cùng thuộc tính nơi bạn có thể xác định thời gian, bạn có thể thực hiện

mysqldump --where = 'datetimefield> "2014-06-28"'

nhưng anh muốn trộn các bảng khác nhau với dữ liệu cũ và mới. Vì vậy, đây không phải là giải pháp cho anh ta nhưng nó có thể là một cho bạn?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.