Pesan kesalahannya cukup jelas. Pencatatan biner perlu diaktifkan untuk memulihkan fungsi. Ada dua cara untuk melakukan ini
- Jalankan perintah berikut ke dalam konsol MySQL.
SET GLOBAL log_bin_trust_function_creators = 1;
- Tambahkan baris
mysql -u dbuser -p dbname2 < dump.sql
_1 ke file konfigurasimysql -u dbuser -p dbname2 < dump.sql
2
N. B. Jalankan perintah berikut untuk menampilkan daftar prosedur dan fungsi tersimpan
SHOW PROCEDURE STATUS; SHOW FUNCTION STATUS;
logging biner, fungsi, log_bin_trust_function_creators, MySQL, mysqldump, rutinitas, prosedur tersimpan
Catatan ini telah diposting pada 01 Mar 2011, 20. 39 dan diajukan di bawah MySQL. Anda dapat mengikuti respons apa pun untuk entri ini melalui RSS 2. 0. Anda dapat melewati sampai akhir dan meninggalkan tanggapan. Ping saat ini tidak diperbolehkan
Klien
--fields-enclosed-by='"'5 adalah program cadangan yang aslinya ditulis oleh Igor Romanenko. Ini dapat digunakan untuk membuang database atau kumpulan database untuk cadangan atau transfer ke server database lain [tidak harus MariaDB atau MySQL]. Dump biasanya berisi pernyataan SQL untuk membuat tabel, mengisinya, atau keduanya. Namun,
--fields-enclosed-by='"'_5 juga dapat digunakan untuk membuat file dalam format CSV, teks terbatas lainnya, atau XML
Jika Anda melakukan pencadangan di server dan semua tabel Anda adalah tabel MyISAM, pertimbangkan untuk menggunakan mysqlhotcopy sebagai gantinya karena dapat menyelesaikan pencadangan lebih cepat dan pemulihan lebih cepat
mysqldump dump memicu bersama dengan tabel, karena ini adalah bagian dari definisi tabel. Namun, prosedur tersimpan, tampilan, dan acara tidak, dan memerlukan parameter tambahan untuk dibuat ulang secara eksplisit [misalnya,
--fields-enclosed-by='"'8 dan
--fields-enclosed-by='"'9]. Namun, prosedur dan fungsi juga merupakan bagian dari tabel sistem [misalnya mysql. proses]
--fields-enclosed-by='"'_5 mendukung
Pertunjukan
mysqldump biasanya tidak menghabiskan banyak sumber daya CPU pada perangkat keras modern karena secara default menggunakan satu utas. Metode ini bagus untuk server yang sarat muatan
Input/output disk per detik [IOPS], namun dapat meningkat karena berbagai alasan. Saat Anda mencadangkan pada perangkat yang sama dengan database, ini menghasilkan IOPS acak yang tidak perlu. Dump dilakukan secara berurutan, berdasarkan per tabel, menyebabkan pemindaian tabel penuh dan banyak halaman buffer terlewatkan pada tabel yang tidak sepenuhnya di-cache di memori
Anda disarankan untuk mencadangkan dari lokasi jaringan untuk menghapus IOPS disk di server database, tetapi sangat penting untuk menggunakan kartu jaringan terpisah agar bandwidth jaringan tetap tersedia untuk lalu lintas reguler
Meskipun mysqldump secara default akan mempertahankan sumber daya Anda untuk disk spindel reguler dan perangkat keras berinti rendah, ini tidak berarti bahwa dump bersamaan tidak dapat memanfaatkan arsitektur perangkat keras seperti SAN, penyimpanan flash, beban kerja tulis rendah. Waktu pencadangan akan mendapat manfaat dari alat seperti MyDumper
Penggunaan
Ada empat cara umum untuk memohon
--fields-enclosed-by='"'5
shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] --databases db_name ... shell> mysqldump [options] --all-databases shell> mysqldump [options] --system=[option_list]
Jika Anda tidak memberi nama tabel apa pun setelah db_name atau jika Anda menggunakan opsi
--fields-enclosed-by=0x222 atau
--fields-enclosed-by=0x223, seluruh database akan dibuang
--fields-enclosed-by='"'5 tidak membuang database INFORMATION_SCHEMA [atau PERFORMANCE_SCHEMA, jika diaktifkan] secara default. MariaDB membuang
--fields-enclosed-by=0x22_5 jika Anda menamainya secara eksplisit di baris perintah, meskipun saat ini Anda juga harus menggunakan opsi
--fields-enclosed-by=0x226
Untuk melihat daftar opsi yang didukung versi
--fields-enclosed-by='"'5 Anda, jalankan
--fields-enclosed-by=0x228
Baris demi Baris vs. Penyangga
--fields-enclosed-by='"'5 dapat mengambil dan membuang konten tabel baris demi baris, atau dapat mengambil seluruh konten dari tabel dan menyangganya di memori sebelum membuangnya. Buffer di memori bisa menjadi masalah jika Anda membuang tabel besar. Untuk membuang tabel baris demi baris, gunakan opsi
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920200 [atau
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920201, yang mengaktifkan
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920200]. Opsi
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020_1 [dan karenanya
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920200] diaktifkan secara default, jadi untuk mengaktifkan buffering memori, gunakan
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920205
--fields-enclosed-by='"'5 di MariaDB 10. 3 termasuk logika untuk melayani mysql. tabel transaction_registry.
--fields-enclosed-by='"'5 dari rilis MariaDB sebelumnya tidak dapat digunakan pada MariaDB 10. 3 dan seterusnya
mysqldump dan Versi Lama MySQL
Jika Anda menggunakan versi terbaru
--fields-enclosed-by='"'_5 untuk menghasilkan dump yang akan dimuat ulang ke server MySQL yang sangat lama, sebaiknya Anda tidak menggunakan opsi
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 920201 atau
mysql db_name < backup-file.sql0. Gunakan
mysql db_name < backup-file.sql_1 sebagai gantinya
Pilihan
--fields-enclosed-by='"'_5 mendukung opsi berikut
Opsi Grup
Beberapa opsi
--fields-enclosed-by='"'_5 adalah singkatan untuk grup opsi lain
- Penggunaan
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 sama dengan menyebutkanmysql db_name < backup-file.sql
5,mysql db_name < backup-file.sql
6,mysql db_name < backup-file.sql
7,mysql db_name < backup-file.sql
8,mysql db_name < backup-file.sql
0,shell> mysqldump db_name > backup-file.sql
0,shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
0, danshell> mysqldump db_name > backup-file.sql
2. Semua opsi yangshell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
_1 juga diaktifkan secara default karenashell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 diaktifkan secara default - Penggunaan
shell> mysqldump db_name > backup-file.sql
_5 sama dengan menentukan opsishell> mysqldump db_name > backup-file.sql
6,shell> mysqldump db_name > backup-file.sql
7,shell> mysqldump db_name > backup-file.sql
8,shell> mysqldump db_name > backup-file.sql
9, danshell> mysql db_name < backup-file.sql
0
Untuk membalikkan efek opsi grup, gunakan formulir
shell> mysql db_name < backup-file.sql1 [
mysql db_name < backup-file.sql1 atau
shell> mysql db_name < backup-file.sql3]. Dimungkinkan juga untuk memilih hanya sebagian dari efek opsi grup dengan mengikutinya dengan opsi yang mengaktifkan atau menonaktifkan fitur tertentu. Berikut beberapa contohnya
- Untuk memilih efek
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
_1 kecuali untuk beberapa fitur, gunakan opsishell> mysql db_name < backup-file.sql
5 untuk setiap fitur. Untuk menonaktifkan sisipan tambahan dan penyangga memori, gunakanshell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1shell> mysql db_name < backup-file.sql
7shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
5. [Sebenarnya,shell> mysql db_name < backup-file.sql
7shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
5 sudah cukup karenashell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
1 diaktifkan secara default. ] - Untuk membalik
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
_1 untuk semua fitur kecuali penonaktifan indeks dan penguncian tabel, gunakanmysql db_name < backup-file.sql
1mysql db_name < backup-file.sql
8shell> mysqldump db_name > backup-file.sql
0
Saat Anda secara selektif mengaktifkan atau menonaktifkan efek opsi grup, urutan penting karena opsi diproses dari awal hingga akhir. Misalnya,
mysql db_name < backup-file.sql8
shell> mysqldump db_name > backup-file.sql0
mysql db_name < backup-file.sql1 tidak akan memiliki efek yang diinginkan;
Karakter Khusus dalam Nilai Pilihan
Beberapa opsi, seperti
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name0, menerima string. String dapat dikutip, jika perlu. Misalnya, pada sistem Unix ini adalah opsi untuk menyertakan bidang dalam tanda kutip ganda
--fields-enclosed-by='"'_
Alternatif untuk menentukan nilai heksadesimal dari suatu karakter. Misalnya, sintaks berikut berfungsi pada platform apa pun
--fields-enclosed-by=0x22
File Opsi
Selain membaca opsi dari baris perintah,
--fields-enclosed-by='"'5 juga dapat membaca opsi dari file opsi. Jika opsi yang tidak diketahui disediakan untuk
--fields-enclosed-by='"'_5 dalam file opsi, maka opsi tersebut akan diabaikan
Opsi berikut terkait dengan cara alat baris perintah MariaDB menangani file opsi. Mereka harus diberikan sebagai argumen pertama pada baris perintah
Di MariaDB 10. 2 dan yang lebih baru,
--fields-enclosed-by='"'_5 ditautkan dengan MariaDB Connector/C. Namun, MariaDB Connector/C belum menangani penguraian file opsi untuk klien ini. Itu masih dilakukan oleh kode parsing file opsi server. Lihat MDEV-19035 untuk informasi lebih lanjut
Grup Opsi
--fields-enclosed-by='"'_5 membaca opsi dari yang berikut dari file opsi
NULL, ´NULL´, dan Nilai Kosong dalam XML
Untuk kolom bernama
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name5, nilai
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name6, string kosong, dan nilai string
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name7 dibedakan satu sama lain dalam output yang dihasilkan oleh opsi ini sebagai berikut
Output dari klien mysql saat dijalankan menggunakan opsi
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name8 juga mengikuti aturan sebelumnya
Output XML dari mysqldump menyertakan namespace XML, seperti yang ditampilkan di sini
shell> mysqldump --xml -u root world City 1 Kabul AFG Kabol 1780000 ... 4079 Rafah PSE Rafah 92020
Memulihkan
Untuk memulihkan cadangan yang dibuat dengan mysqldump, gunakan klien mysql untuk mengimpor dump, misalnya
mysql db_name < backup-file.sql
Variabel
Anda juga dapat mengatur variabel berikut [
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name_9] dan opsi boolean
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql0 dengan menggunakan
Contoh
Penggunaan umum
--fields-enclosed-by='"'_5 adalah untuk membuat cadangan seluruh database
shell> mysqldump db_name > backup-file.sql
Anda dapat memuat file dump kembali ke server seperti ini
shell> mysql db_name < backup-file.sql
Atau seperti ini
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
--fields-enclosed-by='"'_5 juga sangat berguna untuk mengisi database dengan menyalin data dari satu server MariaDB ke yang lain
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
Dimungkinkan untuk membuang beberapa database dengan satu perintah
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
Untuk membuang semua database, gunakan opsi
--fields-enclosed-by=0x223
--fields-enclosed-by='"'_0
Untuk tabel InnoDB,
--fields-enclosed-by='"'_5 menyediakan cara membuat cadangan online
--fields-enclosed-by='"'_1
Cadangan ini memperoleh kunci baca global di semua tabel [menggunakan
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql5] di awal dump. Segera setelah kunci ini diperoleh, koordinat log biner dibaca dan kunci dilepaskan. Jika pernyataan pemutakhiran yang lama berjalan saat pernyataan FLUSH dikeluarkan, server MariaDB mungkin terhenti hingga pernyataan tersebut selesai. Setelah itu, dump menjadi bebas kunci dan tidak mengganggu proses baca dan tulis pada tabel. Jika pernyataan pembaruan yang diterima server MariaDB pendek [dalam hal waktu eksekusi], periode penguncian awal seharusnya tidak terlihat, bahkan dengan banyak pembaruan
Untuk pemulihan point-in-time [juga dikenal sebagai "roll-forward", saat Anda perlu memulihkan cadangan lama dan memutar ulang perubahan yang terjadi sejak pencadangan tersebut], sering kali berguna untuk memutar log biner atau setidaknya mengetahui
--fields-enclosed-by='"'_2
Atau
--fields-enclosed-by='"'_3
Opsi
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql6 dan
shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql7 dapat digunakan secara bersamaan, yang menyediakan cara mudah untuk membuat cadangan online yang cocok untuk digunakan sebelum pemulihan point-in-time jika tabel disimpan menggunakan mesin penyimpanan InnoDB