ฉันใช้ผู้ดูแลระบบ MySQL เพื่อทำการสำรองฐานข้อมูลของฉัน ฉันสามารถสำรองฐานข้อมูลทั้งหมดได้อย่างสมบูรณ์แบบด้วยตารางทั้งหมด มีบางตารางที่มีขนาดใหญ่มากดังนั้นฉันสงสัยว่าฉันสามารถสำรองโครงสร้างของตาราง (เฉพาะองค์ประกอบของพวกเขา) แต่ไม่ใช่ข้อมูลของพวกเขา
ฉันใช้ผู้ดูแลระบบ MySQL เพื่อทำการสำรองฐานข้อมูลของฉัน ฉันสามารถสำรองฐานข้อมูลทั้งหมดได้อย่างสมบูรณ์แบบด้วยตารางทั้งหมด มีบางตารางที่มีขนาดใหญ่มากดังนั้นฉันสงสัยว่าฉันสามารถสำรองโครงสร้างของตาราง (เฉพาะองค์ประกอบของพวกเขา) แต่ไม่ใช่ข้อมูลของพวกเขา
คำตอบ:
ใช้--no-data
สวิตช์กับ mysqldump เพื่อบอกว่าจะไม่ถ่ายโอนข้อมูลเพียงโครงสร้างตาราง
สิ่งนี้จะแสดงผลคำสั่ง CREATE TABLE สำหรับตาราง
บางสิ่งเช่นนี้
mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql
หากต้องการกำหนดเป้าหมายตารางเฉพาะให้ป้อนพวกเขาหลังชื่อฐานข้อมูล
mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-data
ดังที่ LukeR กล่าวว่าตัวเลือก --no-data ของ mysqldump จะทำสิ่งที่คุณต้องการ
เพื่อเพิ่มที่นี่เป็นสคริปต์สำรองฉันเขียนที่ทิ้งฐานข้อมูล mysql ทั้งหมดไปยังไฟล์ข้อความธรรมดาและสร้างการถ่ายโอนไฟล์แยกต่างหากสำหรับตาราง schema และฐานข้อมูลของแต่ละฐานข้อมูล (เป็นเรื่องปกติที่ต้องการกู้คืนหรือสร้างตารางบนเซิร์ฟเวอร์ mysql อื่น ข้อมูลและง่ายมากที่จะทำเมื่อคุณมีไฟล์ขนาดเล็กที่มีเพียงคำสั่ง CREATE TABLE / CREATE INDEX เป็นต้น)
#! / bin / ทุบตี # backup-mysql.sh # # Craig Sanders <cas@taz.net.au> # สคริปต์นี้อยู่ในโดเมนสาธารณะ ทำสิ่งที่คุณต้องการด้วย MYUSER = "ชื่อผู้ใช้" MYPWD = "PASSWD" ARGS = "- การทำรายการเดียว - ล้างบันทึก - การแทรกแบบสมบูรณ์" DATABASES = $ (mysql -D mysql --skip-column-names -B -e 'แสดงฐานข้อมูล;' | egrep -v 'information_schema'); BackupDir = / var / การสำรองข้อมูล / MySQL YEAR = $ (วันที่ + "% Y") MONTH = $ (วันที่ + "% m") DAY = $ (วันที่ + "% d") วัน = "$ YEAR- $ ต่อเดือน / $ YEAR- $ MONTH- $ DAY" mkdir -p $ BACKUPDIR / $ DATE cd $ BACKUPDIR / $ DATE สำหรับฉันใน $ DATABASES ทำ echo -n "สำรองข้อมูล $ i: schema ... " mysqldump $ ARGS - ไม่มีข้อมูล -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql echo -n "data ... " mysqldump $ ARGS - opt-opt - no-create-db - no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql echo -n "กำลังบีบอัด ... " gzip -9fq $ i.schema.sql $ i.data.sql echo "เสร็จสิ้น" เสร็จแล้ว # ลบไฟล์สำรองข้อมูลที่เก่ากว่า 30 วัน OLD = $ (ค้นหา $ BACKUPDIR -type d -mtime +30) ถ้า [-n "$ OLD"]; แล้วก็ echo ลบไฟล์สำรองข้อมูลเก่า: $ OLD echo $ OLD | xargs rm -rfv Fi
--routines
สคริปต์สคีมาหรือไม่
คุณสามารถทำได้ด้วยตนเองผ่านmysql
อินเตอร์เฟสบรรทัดคำสั่งโดยทำDESCRIBE <tablename>
และคัดลอก / วางผลลัพธ์