seperti yang dikatakan LukeR, opsi --no-data ke mysqldump akan melakukan apa yang Anda inginkan.
untuk menambah itu, inilah skrip cadangan yang saya tulis yang membuang semua database mysql ke file teks biasa, dan membuat file dump terpisah untuk setiap skema tabel dan data basis data (sangat umum untuk ingin mengembalikan atau membuat tabel pada server mysql lain TANPA data, dan itu jauh lebih mudah dilakukan ketika Anda sudah memiliki file kecil hanya dengan perintah CREATE TABLE / CREATE INDEX dll)
#! / bin / bash
# backup-mysql.sh
#
# Craig Sanders <cas@taz.net.au>
# skrip ini ada dalam domain publik. lakukan apapun yang kamu mau dengannya.
MYUSER = "USERNAME"
MYPWD = "PASSWD"
ARGS = "- transaksi tunggal --flush-logs - masukkan-lengkap"
DATABASES = $ (mysql -D mysql --skip-column-names -B -e 'tampilkan basis data;' | egrep -v 'information_schema');
BACKUPDIR = / var / backups / mysql
TAHUN = $ (tanggal + "% Y")
BULAN = $ (tanggal + "% m")
HARI = $ (tanggal + "% d")
DATE = "$ TAHUN- $ BULAN / $ TAHUN- $ BULAN- $ HARI"
mkdir -p $ BACKUPDIR / $ DATE
cd $ BACKUPDIR / $ DATE
untuk saya dalam $ DATABASES; melakukan
echo -n "mencadangkan $ i: skema ..."
mysqldump $ ARGS --tidak ada data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql
echo -n "data ..."
mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql
echo -n "mengompresi ..."
gzip -9fq $ i.schema.sql $ i.data.sql
gema "selesai."
selesai
# hapus file cadangan yang lebih lama dari 30 hari
TUA = $ (temukan $ BACKUPDIR -type d -mtime +30)
jika [-n "$ OLD"]; kemudian
echo menghapus file cadangan lama: $ OLD
echo $ OLD | xargs rm -rfv
fi