ไม่mysqldump -all-databases
รวมถึงวัตถุทั้งหมดหรือไม่
ฉันต้องย้ายฐานข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ใหม่
ไม่mysqldump -all-databases
รวมถึงวัตถุทั้งหมดหรือไม่
ฉันต้องย้ายฐานข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ใหม่
คำตอบ:
ไม่มีฐานข้อมูล mysqldump ทั้งหมดไม่รวมวัตถุทั้งหมด
mysqldump --help
-A, --all-databases Dump all the databases. This will be same as --databases
with all databases selected.
ดังนั้น mysqldump กับ - ทั้งหมด - ฐานข้อมูลเท่านั้นทิ้งฐานข้อมูลทั้งหมด
ในการโอนย้ายฐานข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ใหม่คุณควรทำการสำรองข้อมูลทั้งหมด:
mysqldump อินสแตนซ์ mysql ทั้งหมด
mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql
ข้อเสียคือการสำรองข้อมูลที่สร้างขึ้นด้วยวิธีนี้สามารถโหลดซ้ำในรุ่นใหญ่รุ่นเดียวกันกับ mysql ที่ mysqldump สร้างขึ้น กล่าวอีกนัยหนึ่ง, mysqldump - ทั้งหมด - ฐานข้อมูลจากฐานข้อมูล MySQL 5.0 ไม่สามารถโหลดได้ใน 5.1 หรือ 5.5 เหตุผล ? schema ของ mysql นั้นแตกต่างกันอย่างสิ้นเชิงระหว่างรุ่นใหญ่
นี่คือวิธีทั่วไปในการถ่ายโอน SQL Grants สำหรับผู้ใช้ที่อ่านได้และพกพาได้มากกว่า
mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql
ดูคำตอบจากRolandoMySQLDBAบนฉันจะเพิ่มประสิทธิภาพ mysqldump ของฐานข้อมูลขนาดใหญ่ได้อย่างไร
--single-transaction
จะไม่สร้างการสำรองข้อมูลที่สอดคล้องกันหากมีตาราง MyISAM ถูกเขียนไปในขณะที่การสำรองข้อมูลทำงาน อย่างไรก็ตามการเพิ่ม--single-transaction
เป็นความคิดที่ดีถ้าคุณใช้ InnoDB ทั้งหมดและต้องการหลีกเลี่ยงการบล็อกขณะmysqldump
ทำงาน
--events
สิ่งที่จำเป็นนอกเหนือจาก--routines
และ--triggers
และคุณยังละเว้น--single-transaction
เพื่อหลีกเลี่ยงการล็อกตารางโดยไม่จำเป็น