คำสั่ง mysqldump จะสำรองมุมมองทั้งหมดที่มีอยู่ใน DB หรือมีคำสั่งพิเศษหรือไม่?


10

ฉันพยายามสำรองฐานข้อมูลทั้งหมดพร้อมกับมุมมอง ฉันจะใช้mysqldumpคำสั่ง ฉันสงสัยว่าจะคัดลอกมุมมองทั้งหมดหรือไม่ฉันจะต้องใช้คำสั่งแยกต่างหาก

กรุณาแนะนำคำตอบ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก

คำตอบ:


9

ไม่มีตัวเลือกเฉพาะสำหรับการทิ้งมุมมอง

คุณสามารถลองต่อไปนี้:

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

คุณควรจะสามารถเห็นมุมมอง สิ่งนี้บ่งชี้ว่าเมื่อคุณดัมพ์ฐานข้อมูลมุมมองจะมาพร้อมกับมัน

การแสดงความสามารถอื่นที่คุณสามารถลองเพียงเพื่อให้ได้มุมมองเท่านั้นคือ:

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

ให้มันลอง !!!


ขอบคุณมากสำหรับคำตอบที่อธิบายเช่นนี้ ปัญหาคือฐานข้อมูลของฉันมีขนาดใหญ่มากดังนั้นฉันวางแผนที่จะคัดลอกทีละครั้ง ในระเบียบทั้งหมดนี้ฉันยังต้องคัดลอก 'มุมมอง' ดังนั้นฉันไม่สามารถใช้คำสั่ง --all- ฐานข้อมูล โปรดแนะนำวิธีคัดลอกมุมมองจากเซิร์ฟเวอร์ Mysql DB
vinny

ดังนั้นแทนที่จะใช้--all-databasesให้ระบุฐานข้อมูลที่คุณต้องการ
Derek Downey

1

คำตอบที่ดีที่สุดสำหรับเรื่องนี้น่าจะเป็นสิ่งนี้ โดยolliiiverที่ฉันแก้ไขเล็กน้อย มันส่งออกแบบสอบถามตารางแบบเลื่อนโดยเฉพาะและสร้างหรือแทนที่แบบสอบถามมุมมองสำหรับทุกมุมมองในระบบโดยไม่จำเป็นต้องยุ่งกับตารางใด ๆ แบบสอบถามแบบเลื่อนตารางมักมีความสำคัญเนื่องจาก mysqldump ชอบที่จะสร้างมุมมองใหม่เป็นตารางเว้นแต่ว่าคุณจะรวมทุกมุมมองไว้ใน --ignore-table ซึ่งจะน่ารำคาญ มันใช้ INFORMATION_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"

หากคุณต้องการเปลี่ยนสิ่งนี้เป็นเชลล์สคริปต์ฉันขอแนะนำให้ใช้พารามิเตอร์ --defaults-extra-file = CREDSFILENAME เพื่อให้คุณไม่จำเป็นต้องระบุผู้ใช้ / รหัสผ่านในสคริปต์

ไฟล์ข้อมูลรับรองมีลักษณะดังนี้:

[client]
username=YourUsernameHere
password=YourPasswordHere
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.