Aplikasi web saat ini dapat menghasilkan sejumlah besar artikel, posting pengguna, komentar, dan banyak jenis data lainnya. Semua konten web itu disimpan dalam database aplikasi web Anda saat ini. Untuk melindungi informasi situs web Anda, Anda harus melakukan pencadangan mingguan atau bahkan harian. Anda dapat memilih jadwal pencadangan sesuai dengan tujuan penggunaan basis data Anda - untuk menyimpan pesan forum, informasi pelanggan, informasi produk toko elektronik, atau jenis data lainnya
Isi
Apa itu dump MySQL?
Anda juga harus tahu bahwa database MySQL hanyalah file yang disimpan di server web Anda. Seluruh proses pencadangan dan pemulihan sangat mudah setelah Anda mempelajari cara melakukannya. Ada berbagai cara untuk melakukan backup MySQL. Namun, apa pun aplikasi, alat panel kontrol, atau skrip SSH yang Anda gunakan, semua cadangan dapat berupa cadangan dump atau mentah
Dump MySQL adalah solusi pencadangan universal. Ini sedikit lebih lambat daripada cadangan mentah, karena ini mencakup semua kueri SQL yang diperlukan untuk membuat ulang tabel database, serta semua kueri penyisipan yang diperlukan untuk menempatkan informasi kembali ke tabel database. Dengan menggunakan dump MySQL, Anda dapat dengan mudah memindahkan [semua konten] situs web Anda dari satu penyedia hosting ke penyedia hosting lainnya. Juga, jika Anda berencana untuk membuat beberapa perubahan pada database Anda, ada baiknya untuk membuat dump MySQL terlebih dahulu. Solusi pencadangan dump MySQL cocok untuk mencadangkan seluruh basis data, serta satu tabel basis data
Cara membuat dump MySQL melalui baris perintah SQL
Jika Anda ingin melakukan dump MySQL secara manual, tanpa menggunakan alat PHPMyAdmin atau lingkungan grafis lainnya, Anda harus terhubung ke database Anda melalui SSH dan menjalankan perintah berikut
Contoh tentang cara membuat dump MySQL menggunakan baris perintah SQL
mysqldump --tab=/path/to/some/dir --opt database_nameCara membuat file dump MySQL menggunakan alat PHPMyAdmin
PHPMyAdmin memberi kami lingkungan grafis yang kaya fitur. Pembuatan dump cadangan MySQL menggunakan alat PHPMyAdmin lebih sederhana dari sebelumnya, Anda hanya perlu menggunakan fungsi ekspor internal untuk membuat file dump dalam berbagai format. Untuk ikhtisar mendetail tentang cara membuat file dump MySQL, silakan periksa video di bawah ini
Cara membuat dump MySQL di PHPMyAdmin [video]
Cara mengembalikan database MySQL dari cadangan
Jika Anda ingin memulihkan file cadangan SQL Anda secara manual, Anda hanya perlu masuk ke alat PHPMyAdmin Anda dan menggunakan tab SQL untuk mengimpor basis data Anda
PHP dirancang untuk dengan mudah diintegrasikan ke dalam situs web. Salah satu penggunaan paling umum untuk PHP adalah mengambil konten dari database dan menampilkannya di halaman HTML. Tutorial ini akan membahas cara menghubungkan ke database MySQL/MariaDB, menarik informasi dari tabel sederhana, dan menampilkannya dalam tabel HTML sederhana
Cara termudah untuk menjalankan database MySQL pada instance cloud adalah dengan menggunakan MySQL ServerTemplates dari RightScale. Tutorial Penyiapan Database MySQL berasumsi bahwa Anda sudah memiliki file dump MySQL yang dapat digunakan untuk menyiapkan database di cloud. Jika Anda tidak memiliki file dump MySQL, gunakan petunjuk berikut untuk membuatnya
Menjawab
Langkah-langkah di bawah ini menjelaskan cara membuat file dump MySQL, yang kemudian dapat digunakan untuk menginisialisasi database menggunakan MySQL ServerTemplates dari RightScale
Anda dapat membuat dan mengompres file dump MySQL Anda dengan mengikuti langkah-langkah ini
Dari baris perintah pada mesin tempat MySQL diinstal [secara lokal atau dalam sesi SSH], jalankan
mysqldump -uusername -ppassword \ --opt > myDBDump
Kemudian, Anda dapat memeriksa file keluaran dengan editor teks untuk memverifikasi integritas data
Selanjutnya, untuk merampingkan proses transfer data, gunakan gzip untuk mengompres file dump
_gzip -c myDBDump
Kemudian, Anda harus mengunggah file
myDBDump.gz
ke bucket S3. Saat Anda membuat database MySQL di server database, Anda akan menjalankan skrip [volume DB Create MySQL EBS Stripe] yang akan membuat dan melampirkan volume yang akan digunakan untuk menyimpan data MySQL Anda
Sebagai alternatif, Anda dapat menggabungkan langkah-langkah di atas menjadi satu perintah;
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 menghasilkan 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 membutuhkan 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 memanggil
--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=0x225 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 aktif secara default. ] - Untuk membalikkan
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 Opsi
Beberapa opsi, seperti
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name_0, 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
Keluaran 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_name9] 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