2016-02-25 21 views
5

Công ty chúng tôi đang sử dụng cơ sở dữ liệu Firebird trong các sản phẩm của mình đã 4 - 5 năm. Trước đó chúng tôi đã sử dụng cơ sở dữ liệu Interbases. Gần đây có yêu cầu mới yêu cầu bật bộ ký tự unicode (hiện tại chúng tôi đang sử dụng bộ ký tự 'NONE'). Sau khi điều tra vấn đề tôi thấy rằng giải pháp yêu cầu là một trong các bước nâng cấp định dạng nhị phân ODS (trên đĩa cấu trúc) của các tệp cơ sở dữ liệu. Tôi đã đọc rằng giải pháp được đề xuất là để sao lưu và sau đó khôi phục cơ sở dữ liệu bằng cách sử dụng tiện ích gbak. Có một vấn đề với điều này. Trong original manual để Firebird có chép rằng:Nâng cấp cơ sở dữ liệu Firebird

Các sao lưu cần được thực hiện bằng cách sử dụng tiện ích được cung cấp bởi gbak cũ phiên bản ODS của Interbase hoặc Firebird. Việc khôi phục sẽ được thực hiện bằng cách sử dụng gbak từ phiên bản Firebird mới hơn.

Đây là vấn đề bởi vì sản phẩm tôi đang làm việc đang được phát triển trong 20 năm và tôi thực sự không thể nói tất cả các phiên bản ODS đang được khách hàng sử dụng. Tôi có nên làm theo hướng dẫn nêu trên nó có nghĩa là, tiện ích nâng cấp của tôi nên có tất cả các phiên bản có thể có của tiện ích gbak phát hành từ Interbase 1.0 cho đến ngày nay. Dựa trên các phiên bản ODS được phát hiện (ví dụ bằng cách gọi tiện ích dòng lệnh "gstat" được phân phối như là một phần của cài đặt Firebird), tôi nên gọi đúng tệp gbak.exe. Điều này có vẻ quá phức tạp với tôi. Không thể chỉ sử dụng tiện ích gbak mới nhất cho cả giai đoạn sao lưu và khôi phục? Điều tôi sợ là tôi phạm sai lầm trong quá trình này và dữ liệu sẽ bị mất. Vì vậy, tôi không thể chỉ dựa vào tiện ích gbak để sao lưu nhưng sao lưu các tệp * .gdb theo cách thủ công.

+0

Đây là một câu hỏi rất cụ thể. Có thể bạn sẽ phải hỏi trực tiếp đội ngũ sáng tạo của loài chim lửa, Nếu bạn muốn chắc chắn. – Majkl

+0

Gbak Interbase mới nhất có hỗ trợ tất cả ODS cũ hơn không? Nếu vậy, bạn chỉ cần thực hiện sao lưu bằng tiện ích Interbase mới nhất và sau đó khôi phục với gbak của Firebird. –

+0

@ AndrejKirejeŭ Đọc câu hỏi, anh ta đã sử dụng Firebird, vì vậy không cần sử dụng gbak Interbase cổ (và di chuyển trực tiếp từ các phiên bản Interbase gần đây sang Firebird - theo như tôi biết - không thể sử dụng gbak). –

Trả lời

5

Bạn sẽ có thể sao lưu cơ sở dữ liệu bằng gbak của phiên bản Firebird hiện tại và khôi phục bằng gbak của phiên bản Firebird mà bạn đang di chuyển đến. Nếu đó là một và cùng một phiên bản, thì đó không phải là vấn đề.

Hướng dẫn sử dụng cụ thể gbak của phiên bản Firebird hoặc Interbase đã tạo phiên bản ODS - thường - quá mức cần thiết vì gbak hiểu định dạng cũ hơn. Nếu cơ sở dữ liệu của bạn hoạt động tốt trên phiên bản Firebird hiện tại, thì có thể sao lưu với gbak của phiên bản đó. Theo như tôi biết ý nghĩa của hướng dẫn là bạn nên khôi phục lại với gbak của phiên bản Firebird đích.

Bỏ qua một số trường hợp cạnh, nói chung nó sẽ hoạt động với Firebird 2.5 khi nâng cấp ODS. Khi di chuyển từ Firebird 2.5 sang Firebird 3, bạn sẽ cần làm theo hướng dẫn này để nâng cấp chính xác.

Cũng đảm bảo khi thực hiện sao lưu bình thường mà bạn sử dụng đúng phiên bản. Ví dụ sao lưu cơ sở dữ liệu ODS 11.2/Firebird 2.5 với Firebird 2.1 gbak dường như hoạt động, nhưng nó sẽ khiến bản sao lưu không ổn định trên Firebird 2.5 vì gbaks cũ không biết rằng chúng cần bỏ qua vai trò RDB$ADMIN. Khi khôi phục lại Firebird 2.5, kết quả này sẽ cố gắng chèn một vai trò trùng lặp, điều này sẽ phá vỡ quá trình khôi phục.

Tuy nhiên khi bạn đang thay đổi cơ sở dữ liệu để sử dụng UTF-8, bạn có thể cân nhắc tạo cơ sở dữ liệu một lần nữa với bộ ký tự phù hợp và bơm dữ liệu (với các chuyển đổi tập hợp ký tự thích hợp) từ cơ sở dữ liệu cũ sang .

Các vấn đề liên quan