Lệnh mysqldump cũng sẽ sao lưu tất cả các khung nhìn có trong DB hoặc có một lệnh đặc biệt nào cho nó không?


10

Tôi đang cố gắng sao lưu toàn bộ cơ sở dữ liệu của mình cùng với các khung nhìn. Tôi sẽ sử dụng mysqldumplệnh. Tôi đã tự hỏi nếu điều đó sẽ sao chép tất cả các quan điểm hoặc tôi sẽ phải sử dụng lệnh riêng cho nó.

Xin đề nghị cho tôi một câu trả lời. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Câu trả lời:


9

Không có tùy chọn cụ thể cho quan điểm bán phá giá.

Bạn có thể thử như sau:

mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql

Bạn sẽ có thể nhìn thấy quan điểm. Điều này chỉ ra rằng khi bạn kết xuất cơ sở dữ liệu, khung nhìn đi kèm với nó.

Một pha nguy hiểm khác mà bạn có thể thử, chỉ để có được lượt xem, đó là:

mysql -uroot -prootpass AN -e"select concat('SHOW CREATE VIEW ',table_schema,'.',table_name,';') from information_schema.views" | sed 's/;/\\G/g' | mysql --uroot -prootpass > /root/MySQLDBViews.sql

Hãy thử một lần !!!


Cảm ơn rất nhiều cho một câu trả lời giải thích. Vấn đề là, cơ sở dữ liệu của tôi rất lớn nên tôi đang lên kế hoạch sao chép từng cái một. Trong tất cả mớ hỗn độn này, tôi cũng cần sao chép 'lượt xem' để tôi không thể sử dụng lệnh --all-cơ sở dữ liệu. Vui lòng đề xuất một cách để sao chép các khung nhìn từ Mysql DB Server.
vinny

Vì vậy, thay vì sử dụng --all-databases, chỉ định cơ sở dữ liệu bạn muốn.
Derek Downey

1

Câu trả lời tốt nhất cho điều này có lẽ là một trong này bởi olliiiver mà tôi đã chút thay đổi. Nó đặc biệt xuất một truy vấn bảng thả và truy vấn tạo hoặc thay thế xem cho mọi chế độ xem trong hệ thống, mà không cần phải lộn xộn với bất kỳ bảng nào. Truy vấn bảng thả thường rất quan trọng, vì mysqldump rõ ràng thích tạo lại các khung nhìn dưới dạng các bảng trừ khi bạn bao gồm mọi chế độ xem trong tham số - bảng chính của nó, điều này sẽ gây khó chịu. Nó sử dụng THÔNG TIN_SCHema.

mysql --skip-column-names --batch \
  -e "SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_SCHEMA, '.', TABLE_NAME, \
  '; CREATE OR REPLACE VIEW ', TABLE_SCHEMA, '.', TABLE_NAME, ' AS ', \
  VIEW_DEFINITION, '; ') AS q FROM INFORMATION_SCHEMA.VIEWS"

Nếu bạn muốn biến một cái gì đó như thế này thành tập lệnh shell, tôi cũng khuyên bạn nên sử dụng tham số --defaults-Extra-file = CREDSFILENAME, để bạn không cần chỉ định người dùng / vượt qua trong tập lệnh.

Tệp thông tin đăng nhập trông như thế này:

[client]
username=YourUsernameHere
password=YourPasswordHere
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.