Đây là quá trình tôi sử dụng để phiên bản cơ sở dữ liệu MySQL s dưới Subversion.
Cài đặt SVN
Trong SVN tạo một thư mục Databases
với một thư mục con cho mỗi cơ sở dữ liệu bạn muốn thêm vào SVN.
Add db_version bảng cơ sở dữ liệu
Chúng tôi sẽ cần phải thêm một bảng cho mỗi cơ sở dữ liệu để chúng tôi biết những gì phiên bản của cơ sở dữ liệu chúng tôi đang làm việc với. Bảng này cũng sẽ phục vụ như một bản ghi để theo dõi những thay đổi lược đồ nào đã được thực hiện cho cơ sở dữ liệu.
create table db_version (
`id` int auto_increment,
`majorReleaseNumber` int,
`minorReleaseNumber` int,
`pointReleaseNumber` int,
`scriptName` varchar(50),
`dateApplied` datetime,
PRIMARY KEY(`id`)
);
majorReleaseNumber - phiên bản chính là những thay đổi đáng kể đối với các cơ sở dữ liệu.
minorReleaseNumber - Các bản phát hành nhỏ là những cải tiến đối với cơ sở dữ liệu không cần bản phát hành chính.
pointReleaseNumber - Bản phát hành điểm thường là bản sửa lỗi đơn giản.
scriptName - Tên của tập lệnh sql đã thay đổi giản đồ.
dateApplied - Khi tập lệnh được chạy trên cơ sở dữ liệu này.
Tạo kịch bản ban đầu
tôi đã sử dụng mysqldump để tạo ra một kịch bản tạo cho cơ sở dữ liệu hiện có. Hãy chắc chắn bao gồm tùy chọn --no-data. SVN được sử dụng để theo dõi các tập lệnh tạo thay đổi lược đồ cho cơ sở dữ liệu và không được dùng để làm công cụ sao lưu cho dữ liệu của một cá thể cụ thể của ứng dụng.
$ mysqldump -h localhost -u root -p db_1 --no-data > db_1.1.0.0.sql
Tên của tập lệnh sql phải chứa tên của cơ sở dữ liệu và phiên bản của cơ sở dữ liệu mà tập lệnh áp dụng.
db_1.1.0.0.sql
Ở cuối tập lệnh, hãy đảm bảo thêm câu lệnh chèn cho bảng db_version.
Thay đổi giản đồ cơ sở dữ liệu
Khi bạn có một, nhỏ, hoặc thay đổi điểm phát hành chính đối với các cơ sở dữ liệu, kịch bản thay đổi phải được kiểm tra và sau đó tải lên thư mục cơ sở dữ liệu trong SVN. Đó là một ý tưởng tốt để sao lưu cơ sở dữ liệu trước khi áp dụng một kịch bản thay đổi. Ở cuối kịch bản thay đổi phải là một câu lệnh chèn cho bảng db_version.
Cách tiếp cận khác sẽ là sử dụng tùy chọn '--tab' thành' mysqldump'. Điều này tạo ra một tệp ' .sql' cho lược đồ và tệp' .txt' được phân tách bằng tab cho dữ liệu. Giản đồ được khôi phục thông qua 'mysql' như bình thường, dữ liệu được khôi phục qua' mysqlimport'. http://dev.mysql.com/doc/refman/5.1/en/mysqldump-delimited-text.html –
rinogo