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