Cách thay đổi cấu trúc dữ liệu trong mysql bằng mysqldump mà không xóa các tệp


7

Về cơ bản những gì tôi đang cố gắng làm là đồng bộ hóa một máy chủ sản xuất với một máy chủ hộp cát , nhưng chỉ các cấu trúc bảng và các thủ tục được lưu trữ. Các thủ tục không có vấn đề gì vì chúng có thể được ghi đè, nhưng vấn đề là các bảng. Tôi muốn đồng bộ hóa và thay đổi cấu trúc của chúng trên máy chủ sản xuất bằng cách sử dụng mysqldump(hoặc bất kỳ cách nào khác mà bạn có thể đề xuất) mà không thay đổi bất kỳ dữ liệu hiện có nào.

Nếu nó giúp, tôi chỉ muốn thêm nhiều cột hơn, không xóa bất kỳ cột nào hiện có. Ngoài ra, tôi đang sử dụng mysqlyog.

Có cách nào để làm điều này?

Câu trả lời:


4

Miễn là bạn không đổi tên bảng và cột và bạn không sử dụng phân vùng, bạn có thể sử dụng lược đồ .

Cách sử dụng cơ bản là:

schemasync mysql://user:pass@dev-host:3306/dev_db mysql://user:pass@prod-host:3306/prod_db

Điều này sẽ tạo ra hai tập lệnh SQL - một để "vá" cơ sở dữ liệu sản xuất và một tập lệnh khác để hoàn nguyên các thay đổi.

Xin lưu ý rằng việc thay đổi lược đồ sẽ khóa các bảng bị ảnh hưởng, do đó bạn sẽ có một số thời gian chết. Có các công cụ để tránh điều này: pt-online-giản đồ thay đổi từ Percona và bảng thay đổi trực tuyến sồi từ openarkkit.

Ngoài ra, như với bất kỳ thay đổi có thể phá hủy nào, hãy kiểm tra quy trình trên cơ sở dữ liệu dàn (hoặc sử dụng phi sản xuất khác, nhưng dữ liệu sản xuất và lược đồ).


1

Vì bạn đang cố gắng chỉ cập nhật cấu trúc bảng từ hộp cát vào sản xuất, nên bạn cần đảm bảo rằng bạn không vô tình làm hỏng cơ sở dữ liệu sản xuất:

a) Kết cấu cấu trúc cơ sở dữ liệu sản xuất vào cơ sở dữ liệu dàn

mysqldump -R --add-drop-table --no-data -h Productionhostname -u sản xuấtUSER -pp sinhtionPASSWORD sản phẩmiondbname | mysql -u stagingUSER -pstagingPASSWORD -h staginghostname stagingdatabasename

b) Sử dụng một công cụ như SQL Yog hoặc MySQL Workbench để tạo tập lệnh để cập nhật cấu trúc của cơ sở dữ liệu dàn từ hộp cát

c) Kiểm tra tập lệnh được tạo trên cơ sở dữ liệu dàn

d) Thực thi tập lệnh được tạo trên cơ sở dữ liệu sản xuất.

Tôi không chắc liệu quy trình này có thể được tự động hay không vì đôi khi các thay đổi cơ sở dữ liệu phyrypt cần cập nhật dữ liệu đi kèm


0
  1. xuất dữ liệu từ máy chủ mẹ và xóa bảng.
  2. chỉ nhập cấu trúc bảng từ hộp cát vào sản xuất.
  3. bây giờ một lần nữa nhập dữ liệu vào sản xuất

    giữ bản sao lưu db của bạn;


Cảm ơn bạn đã trả lời Arun. Thật không may, điều này sẽ dẫn đến thời gian ngừng hoạt động của máy chủ, đó là điều tôi đang cố gắng tránh. :( Nếu tôi không thể đưa ra bất cứ điều gì thì tôi sẽ phải đi với các giải pháp của bạn, vì vậy cảm ơn bạn.

bạn có thể tạo dưới dạng tạm thời và đổi tên sau khi bạn kết thúc, vì vậy thời gian chết sẽ chỉ còn vài giây.
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.