Saya ingin menyimpan cadangan semua database MySQL saya. Saya memiliki lebih dari 100 database MySQL. Saya ingin mengekspor semuanya sekaligus dan mengimpor semuanya ke server MySQL saya sekaligus. Bagaimana saya bisa melakukan itu?
mysql
database-backups
mysql-backup
Pengguna baru
sumber
sumber
Solusi lain:
Ini mencadangkan setiap database menjadi file yang berbeda
sumber
ExcludeDatabases="Database|information_schema|performance_schema|mysql"
[baris berikutnya]databases=`-u $USER -p$PASWORD -e "SHOW DATABASES;" | tr -d "| " | egrep -v $ExcludeDatabases`
dan hapus barisif
danfi
sepenuhnya. Dalam variabelExcludeDatabases
Anda menyimpan nama-nama database yang tidak boleh dibuang [biasanya database sistem].-Bse "show databases"
untuk menghindari output format ekstra dan dengan demikian Anda dapat menghapus| tr -d "| " | grep -v Database
. Dalam skrip ekspor saya, baris inidatabases=`mysql -u $USER -p$PASSWORD -Bse "SHOW DATABASES;"
U+200C U+200B
antara "c" dan "h" dari kata "skema" . Ini merusak salinan dan menempelkan bit itu. Diskusi lebih lanjut tentang masalah ini di sini: meta.stackexchange.com/questions/170970/...Semua jawaban yang saya lihat pada pertanyaan ini dapat memiliki masalah dengan set karakter di beberapa database karena masalah pengalihan keluar
mysqldump
ke file dalam operator shell>
.Untuk mengatasi masalah ini Anda harus melakukan backup dengan perintah seperti ini
Untuk melakukan yang baik BD mengembalikan tanpa masalah dengan rangkaian karakter. Jelas Anda dapat mengubah set karakter default yang Anda butuhkan.
sumber
Berdasarkan jawaban-jawaban ini, saya telah membuat skrip yang mencadangkan semua basis data ke file terpisah, tetapi kemudian mengompresnya menjadi satu arsip dengan tanggal sebagai nama.
Ini tidak akan meminta kata sandi, dapat digunakan dalam cron. Untuk menyimpan kata sandi dalam
.my.cnf
memeriksa jawaban ini https://serverfault.com/a/143587/62749Dibuat juga dengan komentar untuk mereka yang tidak terlalu terbiasa dengan skrip bash.
sumber
Mengapa parsing output terformat sementara perintah mysql dapat melakukan secara langsung apa yang Anda inginkan?
Daftar nama-nama basis data dan hanya ini.
sumber
Hati-hati saat mengekspor dari dan mengimpor ke versi MySQL yang berbeda karena tabel mysql mungkin memiliki kolom yang berbeda. Berikan hak istimewa mungkin gagal bekerja jika Anda kurang beruntung. Saya membuat skrip ini (mysql_export_grants.sql) untuk membuang hibah untuk mengimpor ke database baru, untuk berjaga-jaga:
sumber
Ketika Anda membuang semua basis data. Jelas itu memiliki data yang besar. Jadi, Anda dapat memilih di bawah ini untuk yang lebih baik:
Membuat Cadangan:
Jika kesalahan
- Peringatan: Melewati data tabel mysql.event. Tentukan opsi --events secara eksplisit.
Menggunakan:
Memulihkan Cadangan:
Semoga ini akan membantu :)
sumber
Saya menulis komentar ini sudah lebih dari 4 tahun yang lalu dan memutuskan sekarang untuk memberikan jawaban.
The Script dari jruzafa dapat sedikit disederhanakan:
catatan:
ExcludeDatabases
sumber
mysqldump -uroot -proot --all-database> allDB.sql
catatan: -u "nama pengguna Anda" -p "kata sandi Anda"
sumber
Ekspor semua basis data di Ubuntu
1 -
mysqldump -u root -p --databases database1 database2 > ~/Desktop/databases_1_2.sql
ATAU
2 -
mysqldump -u root -p --all_databases > ~/Desktop/all_databases.sql
sumber