MySQL adalah sistem manajemen basis data relasional sumber terbuka (DBMS) yang sering digunakan dalam berbagai macam konteks. Paling sering digunakan sebagai bagian dari LAMP Stack. Sistem database juga mudah digunakan dan sangat portabel dan, dalam konteks banyak aplikasi, sangat efisien. Karena MySQL sering kali merupakan penyimpanan data terpusat untuk sejumlah besar data penting misi, membuat cadangan reguler database MySQL Anda adalah salah satu tugas pemulihan bencana terpenting yang dapat dilakukan oleh administrator sistem. Panduan ini membahas sejumlah metode berbeda untuk membuat cadangan database Anda serta memulihkan database dari cadangan.
Sebelum memulai proses penginstalan, kami menganggap Anda telah mengikuti langkah-langkah yang diuraikan dalam Menyiapkan dan Mengamankan Instans Komputasi. Selain itu, Anda perlu menginstal Database MySQL. Semua konfigurasi akan dilakukan dalam sesi terminal; pastikan Anda masuk ke Linode Anda sebagai root melalui SSH. Jika Anda baru mengenal administrasi server Linux, Anda mungkin tertarik dengan pengantar kami tentang panduan konsep Linux, panduan pemula, dan panduan dasar-dasar administrasi.
Metodologi Pencadangan
Kebanyakan backup database MySQL dalam panduan ini dilakukan dengan menggunakan mysqldump
alat, yang didistribusikan dengan instalasi server MySQL default. Kami menyarankan Anda menggunakan mysqldump
bila memungkinkan karena sering kali merupakan cara termudah dan paling efisien untuk mengambil cadangan basis data. Metode lain yang dirinci dalam panduan ini disediakan untuk situasi ketika Anda tidak memiliki akses ke mysqldump
alat, seperti dalam lingkungan pemulihan sepertiFinnix atau dalam situasi di mana instance lokal dari server MySQL tidak akan dimulai.
Namun demikian, panduan ini hanya memberikan gambaran umum tentang mysqldump
alat, karena ada banyak opsi dan penggunaan mysqldump
yang berada di luar cakupan dokumen ini. Kami mendorong Anda untuk memahami semua prosedur yang tercakup dalam dokumen ini, dan untuk melanjutkan penjelajahan mysqldump
Anda. di luar kasus yang dijelaskan di sini. Pastikan untuk memperhatikan hal berikut:
*.sql
file yang dibuat denganmysqldump
dapat dipulihkan kapan saja. Anda bahkan dapat mengedit database.sql
file secara manual (dengan sangat hati-hati!) menggunakan editor teks favorit Anda.- Jika database Anda hanya menggunakan mesin penyimpanan MyISAM, Anda dapat mengganti
mysqldump
perintah denganmysqlhotcopy
yang lebih cepat .
Membuat Cadangan dari Seluruh Sistem Manajemen Basis Data (DBMS)
Seringkali perlu untuk mengambil cadangan (atau "membuang") dari seluruh sistem manajemen basis data bersama dengan semua basis data dan tabel, termasuk basis data sistem yang menampung pengguna, izin, dan kata sandi.
Opsi 1:Buat Cadangan dari Seluruh Sistem Manajemen Basis Data Menggunakan Utilitas mysqldump
Metode paling mudah untuk membuat cadangan koheren tunggal dari seluruh sistem manajemen database MySQL menggunakan mysqldump
utilitas dari baris perintah. Sintaks untuk membuat dump database dengan stempel waktu saat ini adalah sebagai berikut:
mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p
Perintah ini akan meminta Anda untuk memasukkan kata sandi sebelum memulai pencadangan basis data di direktori saat ini. Proses ini dapat memakan waktu mulai dari beberapa detik hingga beberapa jam, tergantung pada ukuran basis data Anda.
Otomatiskan proses ini dengan menambahkan baris ke crontab
:
0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD
Untuk contoh di atas, gunakan which mysqldump
untuk mengonfirmasi jalur yang benar ke perintah, dan ganti root
dengan pengguna mysql Anda ingin menjalankan pencadangan sebagai, dan PASSWORD
dengan sandi yang benar untuk pengguna tersebut.
Catatan Pada contoh crontab, pastikan tidak ada spasi antara flag -P, dan entri kata sandi Anda.
Opsi 2:Buat Cadangan Seluruh DBMS Menggunakan Salinan Direktori Data MySQL
Sedangkan mysqldump
alat adalah metode pencadangan yang disukai, ada beberapa kasus yang memerlukan pendekatan berbeda. mysqldump
hanya berfungsi ketika server database dapat diakses dan berjalan. Jika database tidak dapat dijalankan atau sistem host tidak dapat diakses, kita dapat menyalin database MySQL secara langsung. Metode ini sering diperlukan dalam situasi di mana Anda hanya memiliki akses ke lingkungan pemulihan sepertiFinnix dengan disk sistem Anda terpasang di sistem file itu. Jika Anda mencoba metode ini di sistem Anda sendiri, pastikan database tidak berlari. Keluarkan perintah yang menyerupai berikut ini:
/etc/init.d/mysqld stop
Pada sebagian besar versi distribusi MySQL, direktori data terletak di /var/lib/mysql/
direktori. Jika direktori ini tidak ada, periksa /etc/mysql/my.cnf
file untuk path ke direktori data. Atau, Anda dapat mencari sistem file Anda untuk direktori data dengan mengeluarkan perintah berikut:
find / -name mysql
Setelah Anda menemukan direktori data MySQL Anda, Anda dapat menyalinnya ke lokasi cadangan. Contoh berikut mengasumsikan bahwa direktori data MySQL terletak di /var/lib/mysql/
:
cp -R /var/lib/mysql/* /opt/database/backup-1266871069/
Dalam hal ini, kami telah menyalin konten direktori data secara rekursif (mis. /var/lib/mysql/
) ke direktori di dalam /opt/
hierarki (mis. /opt/database/backup-1266871069/
). Direktori ini harus ada sebelum memulai operasi penyalinan. Perhatikan urutan operasi berikut:
/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/
Perintah ini dimulai dengan menghentikan daemon server MySQL, kemudian membuat direktori dengan nama /opt/database/backup-1266872202/
, dan melakukan salinan rekursif dari direktori data. Perhatikan bahwa kami telah memilih untuk menggunakan backup-[time_t]
konvensi penamaan untuk contoh kita. Gantikan jalur di atas untuk organisasi dan skema penamaan pilihan Anda. cp
perintah tidak menghasilkan output dan dapat memakan waktu untuk diselesaikan tergantung pada ukuran database Anda. Jangan khawatir jika butuh beberapa saat untuk menyelesaikannya. Ketika operasi penyalinan selesai, Anda mungkin ingin mengarsipkan direktori data ke dalam arsip “tar” untuk memudahkan pengelolaan dan perpindahan antar mesin. Berikan perintah berikut untuk membuat arsip:
cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz
Setelah tarball dibuat, Anda dapat dengan mudah mentransfer file dengan cara yang paling nyaman bagi Anda. Jangan lupa untuk me-restart kembali daemon server MySQL jika diperlukan:
/etc/init.d/mysql start
Membuat Cadangan dari Satu Basis Data
Dalam banyak kasus, membuat cadangan seluruh server database tidak diperlukan. Dalam beberapa kasus seperti memutakhirkan aplikasi web, penginstal mungkin menyarankan untuk membuat cadangan basis data jika pemutakhiran berdampak buruk pada basis data. Demikian pula, jika Anda ingin membuat “dump” database tertentu untuk memindahkan database tersebut ke server lain, Anda dapat mempertimbangkan metode berikut.
Jika memungkinkan, gunakan mysqldump
alat untuk mengekspor "dump" dari satu database. Perintah ini akan menyerupai berikut ini:
mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql
Contoh di atas seperti contoh di bagian sebelumnya, kecuali menggunakan --all-databases
pilihan, contoh ini menentukan nama database tertentu. Dalam hal ini kita membuat cadangan danceLeaders
basis data. Bentuk perintah ini, dalam notasi yang lebih sederhana adalah sebagai berikut:
mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql
Sebagai contoh tambahan, kami akan membuat cadangan database bernama customer
menggunakan akun basis data root dengan mengeluarkan perintah berikut:
mysqldump -u root -p -h localhost customer > customerBackup.sql
Anda akan dimintai kata sandi sebelum mysqldump
memulai proses pencadangannya. Seperti biasa file cadangan, dalam hal ini customerBackup.sql
, dibuat di direktori tempat Anda mengeluarkan perintah ini. mysqldump
perintah dapat diselesaikan dalam beberapa detik atau beberapa jam tergantung pada ukuran database dan beban pada host saat menjalankan pencadangan.
Membuat Cadangan dari Satu Tabel
Opsi 1:Buat Cadangan Satu Tabel Menggunakan Utilitas mysqldump
Operasi ini, seperti penggunaan mysqldump
sebelumnya utilitas dalam dokumen ini, memungkinkan Anda untuk membuat cadangan dari satu tabel database. Melanjutkan contoh sebelumnya, contoh berikut memungkinkan Anda untuk membuat cadangan tabel usernameRecords
di danceLeaders
basis data.
mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql
Contoh di atas seperti contoh di bagian sebelumnya, kecuali bahwa kita telah menambahkan spesifikasi nama tabel ke perintah untuk menentukan nama tabel yang ingin kita buat cadangannya. Bentuk perintah ini dalam notasi yang lebih sederhana adalah sebagai berikut:
mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql
Sebagai contoh tambahan, kami akan membuat cadangan tabel bernama “pesanan” dari database bernama customer
menggunakan akun basis data root dengan mengeluarkan perintah berikut:
mysqldump -u root -p -h localhost customer order > customerBackup-order.sql
Anda akan dimintai kata sandi sebelum mysqldump
memulai proses pencadangannya. Seperti biasa, file cadangan (dalam hal ini customerBackup.sql
) dibuat di direktori tempat Anda mengeluarkan perintah ini. mysqldump
perintah dapat diselesaikan dalam beberapa detik atau beberapa jam tergantung pada ukuran database dan beban pada host saat menjalankan pencadangan.
Opsi 2:Buat Cadangan Tabel Tunggal Menggunakan Klien MySQL dan Pernyataan OUTFILE
Klien MySQL itu sendiri memiliki beberapa kemampuan cadangan. Ini berguna ketika Anda sudah masuk dan Anda tidak ingin keluar dari sesi saat ini. Jika Anda menggunakan sistem langsung dan tidak dapat membayar waktu henti, Anda harus mempertimbangkan untuk mengunci sementara tabel yang Anda cadangkan.
Perlu diketahui bahwa saat mencadangkan satu tabel menggunakan klien MySQL, struktur tabel tersebut tidak dipertahankan dalam cadangan. Hanya data itu sendiri yang disimpan saat menggunakan metode ini.
-
Sebelum kita mulai, sebaiknya lakukan
LOCK TABLES
pada tabel yang ingin Anda cadangkan, diikuti denganFLUSH TABLES
untuk memastikan bahwa database berada di ruang yang konsisten selama operasi pencadangan. Anda hanya perlu kunci baca. Ini memungkinkan klien lain untuk melanjutkan kueri tabel saat Anda membuat salinan file di direktori data MySQL. Untuk kunci “baca”, sintaksLOCK TABLES
terlihat seperti berikut:1
LOCK TABLES tableName READ;
Untuk melakukan
LOCK TABLES
padaorder
tabelcustomer
database, jalankan perintah berikut:mysql -u root -p -h localhost
Anda kemudian akan dimintai kata sandi root. Setelah Anda memasukkan kredensial database, Anda akan tiba di prompt klien mysql. Keluarkan perintah berikut untuk mengunci
order
tabel dicustomer
database (di belakang;
diperlukan untuk perintah MySQL):1 2 3
USE customer; LOCK TABLES order READ; FLUSH TABLES;
-
Kita sekarang dapat memulai operasi pencadangan. Untuk membuat cadangan satu tabel menggunakan klien MySQL, Anda harus masuk ke DBMS MySQL Anda. Jika saat ini Anda belum masuk, Anda dapat masuk dengan perintah berikut:
mysql -u root -p -h localhost
Anda akan dimintai kata sandi. Setelah Anda memasukkan kata sandi yang benar dan berada di prompt klien MySQL, Anda dapat menggunakan
SELECT * INTO OUTFILE
penyataan. Sintaks dari pernyataan ini terlihat seperti berikut:1
SELECT * INTO OUTFILE 'file_name' FROM tbl_name;
Dalam contoh ini, kami akan membuat cadangan data dari
order
tabelcustomer
basis data. Keluarkan perintah berikut untuk memulai prosedur pencadangan (;
. tambahan diperlukan untuk perintah MySQL):1 2 3 4 5
USE customer; LOCK TABLES order READ; FLUSH TABLES; SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order; UNLOCK TABLES;
customerOrderBackup.sql
file akan dibuat di sub-direktori data yang sesuai dalam direktori data MySQL. Direktori data MySQL biasanya/var/lib/mysql/
. Dalam contoh ini,OUTFILE
akan menjadi/var/lib/mysql/customer/customerOrderBackup.sql
. Namun, lokasi direktori dan file ini dapat bervariasi di antara distribusi Linux. Jika Anda tidak dapat menemukan file cadangan Anda, Anda dapat mencarinya dengan perintah berikut:find / -name customerOrderBackup.sql
-
Setelah Anda menyelesaikan operasi pencadangan, Anda akan ingin membuka kunci tabel menggunakan perintah berikut di klien MySQL. Ini akan mengembalikan database Anda ke operasi normal. Masuk ke klien MySQL dengan perintah pertama jika saat ini Anda belum masuk, lalu jalankan perintah kedua:
mysql -uroot -p -h localhost
1
UNLOCK TABLES;
Anda dapat terus menggunakan database Anda seperti biasa dari titik ini.
Pertimbangan untuk Strategi Pencadangan yang Efektif
Membuat cadangan database MySQL Anda harus menjadi tugas rutin dan terjadwal. Anda mungkin ingin mempertimbangkan untuk menjadwalkan pencadangan berkala menggunakan cron
, mysqldump
dan/atau mail
. Pertimbangkan dokumentasi kami untuk informasi lebih lanjut mengenaicron. Menerapkan solusi pencadangan otomatis dapat membantu meminimalkan waktu henti dalam situasi pemulihan bencana.
Anda tidak perlu masuk sebagai root saat membuat cadangan basis data. Pengguna MySQL dengan read (mis. SELECT
) izin dapat menggunakan keduanya mysqldump
dan mysql
(misalnya klien MySQL) alat untuk mengambil cadangan, seperti yang dijelaskan di bawah ini. Sebagai praktik umum, kami menyarankan Anda untuk tidak menggunakan root
MySQL pengguna bila memungkinkan untuk meminimalkan risiko keamanan.
Anda mungkin ingin mempertimbangkan pencadangan tambahan sebagai bagian dari rencana pencadangan basis data jangka panjang. Meskipun proses ini tidak tercakup di sini, kami menyarankan Anda mempertimbangkan sumber daya Metode Pencadangan Database MySQL untuk informasi lebih lanjut.
Memulihkan Seluruh DBMS Dari Cadangan
Cadangan yang tidak dapat dipulihkan memiliki nilai minimal. Kami menyarankan untuk menguji cadangan Anda secara teratur untuk memastikan bahwa cadangan tersebut dapat dipulihkan jika Anda mungkin perlu memulihkan dari cadangan. Saat menggunakan pemulihan cadangan database MySQL Anda, metode yang Anda gunakan bergantung pada metode yang Anda gunakan untuk membuat cadangan yang dimaksud.
Opsi 1:Memulihkan Seluruh DBMS Menggunakan Klien MySQL dan Cadangan Dibuat oleh mysqldump
Sebelum memulai proses pemulihan, bagian ini mengasumsikan sistem Anda menjalankan versi MySQL yang baru diinstal tanpa database atau tabel yang ada. Jika Anda sudah memiliki database dan tabel di DBMS MySQL Anda, harap buat cadangan sebelum melanjutkan karena proses ini akan menimpa data MySQL saat ini.
Anda dapat dengan mudah memulihkan seluruh DBMS Anda menggunakan mysql
memerintah. Sintaks untuk ini akan menyerupai berikut ini:
mysql -u [username] -p [password] < backupFile.sql
Dalam hal ini kami hanya memulihkan seluruh DBMS. Perintahnya akan terlihat seperti berikut:
mysql -u root -p < 1266861650-backup-all.sql
Anda akan dimintai kata sandi pengguna root MySQL. Setelah kredensial yang benar diberikan, proses pemulihan akan dimulai. Karena proses ini memulihkan seluruh DBMS, proses ini dapat memakan waktu mulai dari beberapa detik hingga berjam-jam.
Opsi 2:Memulihkan Seluruh DBMS Menggunakan File Data MySQL Disalin Langsung dari Direktori Data MySQL
Sebelum memulai proses pemulihan, bagian ini mengasumsikan sistem Anda menjalankan versi MySQL yang baru diinstal tanpa database atau tabel yang ada. Jika Anda sudah memiliki database dan tabel di DBMS MySQL Anda, harap buat cadangan sebelum melanjutkan karena proses ini akan menimpa data MySQL saat ini.
-
Jika Anda memiliki cadangan lengkap direktori data MySQL Anda (biasanya
/var/lib/mysql
), Anda dapat memulihkannya dari baris perintah. Untuk memastikan pemulihan yang berhasil, Anda harus terlebih dahulu menghentikan daemon server MySQL dan menghapus data saat ini di direktori data MySQL./etc/init.d/mysql stop rm -R /var/lib/mysql/*
-
Pada contoh berikut, cadangan direktori data MySQL terletak di
/opt/database/backup-1266872202
direktori. Jika Anda membuat tarball direktori data saat Anda mencadangkan direktori data DBMS Anda, Anda perlu mengekstrak file dari tarball sebelum menyalin dengan perintah berikut:cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/ cd /var/lib/mysql tar xzvf mysqlBackup-1266872202.tar.gz
-
Sebelum kita dapat memulai kembali proses database MySQL, kita harus memastikan bahwa hak akses telah diatur dengan benar pada
/var/lib/mysql/
direktori. Untuk contoh ini, kami menganggap daemon server MySQL berjalan sebagai penggunamysql
dengan grupmysql
. Untuk mengubah izin pada direktori data, jalankan perintah berikut:chown -R mysql:mysql /var/lib/mysql
-
Ubah
mysql:mysql
bagian dari perintah ini jika instance MySQL Anda berjalan dengan izin pengguna dan grup yang berbeda. Bentuk argumen ini adalah[user]:[group]
. Akhirnya kita dapat memulai daemon server MySQL dengan perintah berikut:/etc/init.d/mysql start
Jika Anda menerima pesan kesalahan yang mirip dengan berikut ini:
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Anda harus menemukan
debian-sys-maint
yang lama kata sandi pengguna di/etc/mysql/debian.cnf
dan kemudian ubahdebian-sys-maint
yang baru kata sandi pengguna untuk itu. Anda dapat melihat kata sandi lama menggunakancat
:cat /etc/mysql/debian.cnf | grep password
Salin (atau ingat) kata sandi. Kemudian Anda harus mengubah
debian-sys-maint
yang baru kata sandi pengguna. Anda dapat melakukan ini dengan masuk sebagai pengguna root MySQL dan mengeluarkan perintah berikut (di manaadalah kata sandi dari debian-sys-maint
lama pengguna):1
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
-
Anda kemudian harus me-restart MySQL dengan perintah berikut:
/etc/init.d/mysql restart
Setelah server MySQL berhasil dimulai, Anda perlu menguji DBMS MySQL Anda dan memastikan bahwa semua database dan tabel dipulihkan dengan benar. Kami juga menyarankan Anda mengaudit log Anda untuk kemungkinan kesalahan. Dalam beberapa kasus, MySQL dapat memulai dengan sukses meskipun ada kesalahan basis data.
Memulihkan Basis Data Tunggal dari Cadangan
Jika Anda hanya membuat cadangan untuk satu basis data, atau hanya perlu memulihkan satu basis data, proses pemulihannya agak berbeda.
Sebelum memulai proses pemulihan, bagian ini mengasumsikan sistem Anda menjalankan versi MySQL yang baru diinstal tanpa database atau tabel yang ada. Jika Anda sudah memiliki database dan tabel di DBMS MySQL Anda, harap buat cadangan sebelum melanjutkan karena proses ini akan menimpa data MySQL saat ini.
-
Untuk memulihkan satu database menggunakan
mysql
perintah, pertama siapkan database tujuan. Masuk ke server database MySQL (baru) Anda menggunakan klien MySQL:mysql -u root -p -h localhost
-
Anda akan dimintai kata sandi pengguna root MySQL. Setelah Anda memberikan kredensial yang benar, Anda harus membuat database tujuan. Dalam hal ini,
customer
database akan dipulihkan:1
CREATE DATABASE customer;
-
Seperti semua pernyataan MySQL, jangan hilangkan titik koma terakhir (mis.
;
) pada akhir setiap perintah. Bergantung pada penerapan Anda, Anda mungkin perlu membuat pengguna MySQL baru atau membuat ulang pengguna sebelumnya dengan akses ke database yang baru dibuat. Perintah untuk membuat pengguna MySQL baru berbentuk sebagai berikut:1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
Pada contoh berikutnya, kita akan membuat pengguna bernama
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Sekarang kita akan memberikan
customeradmin
hak istimewa untuk mengaksescustomer
basis data. Perintah untuk memberikan hak istimewa ke database untuk pengguna tertentu mengambil bentuk berikut:1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
-
Untuk keperluan contoh berikut, kami akan memberikan
customeradmin
akses penuh kecustomer
basis data. Keluarkan perintah berikut di klien MySQL:1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Anda mungkin perlu menentukan pemberian akses yang berbeda bergantung pada tuntutan penerapan Anda. Lihat dokumentasi resmi untuk pernyataan GRANT MySQL. Setelah database tujuan dan pengguna MySQL dibuat, Anda dapat menutup klien MySQL dengan perintah berikut:
quit
-
Anda sekarang dapat menggunakan
mysql
perintah untuk memulihkan file SQL Anda. Bentuk perintah ini menyerupai berikut ini:mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
Pada contoh berikut, kami akan mengembalikan customer
database dari file cadangan SQL bernama customerBackup.sql
(berikan perhatian khusus pada <
simbol dalam perintah ini):
mysql -u root -p -h localhost customer < customerBackup.sql
Anda akan dimintai kata sandi pengguna root MySQL. Setelah kredensial yang benar diberikan, proses pemulihan akan dimulai. Durasi operasi ini tergantung pada beban sistem Anda dan ukuran database yang Anda pulihkan. Ini mungkin selesai dalam beberapa detik, atau mungkin butuh berjam-jam.
Memulihkan Satu Tabel dari Cadangan
Opsi 1:Mengembalikan Tabel Tunggal Menggunakan MySQL dan Cadangan Dibuat oleh mysqldump
-
Sebelum memulai proses pemulihan, kami berasumsi bahwa instance MySQL Anda sudah memiliki database yang dapat menerima tabel yang ingin Anda pulihkan. Jika instance MySQL Anda tidak memiliki database yang diperlukan, kami harus membuatnya sebelum melanjutkan. Pertama, login ke instance MySQL Anda dengan perintah berikut:
mysql -u root -p -h localhost
-
Anda akan dimintai kata sandi pengguna root MySQL. Setelah Anda memberikan kredensial yang benar, Anda harus membuat database tujuan. Untuk tujuan contoh ini kita akan membuat
customer
basis data.1
CREATE DATABASE customer;
Kemudian keluar dari
mysql
perintah:quit
Jika Anda sudah memiliki database yang diperlukan, Anda dapat melewati langkah di atas dengan aman. Untuk melanjutkan pemulihan tabel, berikan perintah dalam bentuk berikut:
mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
-
Untuk contoh berikut, kami akan mengembalikan
order
tabel ke dalamcustomer
yang ada database dari file cadangan SQL bernamacustomerOrderBackup.sql
. Berhati-hatilah saat menggunakan<
operator dengan perintah berikut:mysql -u root -p -h localhost customer < customerOrderBackup.sql
Anda akan dimintai kata sandi pengguna root MySQL. Setelah kredensial yang benar diberikan, proses pemulihan akan dimulai. Durasi operasi ini tergantung pada beban sistem Anda dan ukuran tabel yang Anda pulihkan. Ini mungkin selesai dalam beberapa detik, atau mungkin butuh berjam-jam.
Opsi 2:Memulihkan Satu Tabel Menggunakan Klien MySQL dan Pernyataan INFILE untuk Cadangan yang Dibuat dengan OUTFILE
-
Sebelum memulai proses pemulihan, kami berasumsi bahwa instance MySQL Anda sudah memiliki database yang dapat menerima tabel yang ingin Anda pulihkan. Jika instance MySQL Anda tidak memiliki database yang diperlukan, kami harus membuatnya sebelum melanjutkan. Pertama, login ke instance MySQL Anda dengan perintah berikut:
mysql -u root -p -h localhost
-
Anda akan dimintai kata sandi pengguna root MySQL. Setelah Anda memberikan kredensial yang benar, Anda harus membuat database tujuan. Untuk tujuan contoh ini kita akan membuat
customer
basis data.1
CREATE DATABASE customer;
Kemudian keluar dari
mysql
perintah:quit
-
Backup data yang digunakan dalam kasus ini dibuat dengan menggunakan
SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName
memerintah. Jenis cadangan ini hanya menyimpan data itu sendiri sehingga struktur tabel harus dibuat ulang. Untuk memulihkan satu tabel dari dalam klien MySQL, Anda harus terlebih dahulu menyiapkan database dan tabel tujuan. Masuk ke instans MySQL (baru) Anda menggunakan klien MySQL:mysql -u root -p -h localhost
-
Anda akan dimintai kata sandi pengguna root MySQL. Setelah kredensial yang benar diberikan, Anda harus membuat database tujuan. Dalam hal ini, kami akan membuat
customer
basis data. Berikan pernyataan berikut:1
CREATE DATABASE customer;
-
Ingat bahwa titik koma (mis.
;
) mengikuti setiap pernyataan yang diperlukan. Sekarang Anda harus membuat tabel tujuan dengan struktur yang benar. Tipe data bidang tabel harus mencerminkan tabel tempat cadangan berasal. Dalam contoh ini, kami akan mengembalikanorder
tabelcustomer
basis data. Ada 2 kolom diorder
tabel,custNum
dengan tipe dataINT
danorderName
dengan tipe dataVARCHAR(20)
; struktur tabel Anda akan berbeda:1 2
USE customer; CREATE TABLE order (custNum INT, orderName VARCHAR(20));
-
Bergantung pada penerapan Anda, Anda mungkin perlu membuat pengguna MySQL baru atau membuat ulang pengguna sebelumnya dengan akses ke database yang baru dibuat. Perintah untuk membuat pengguna MySQL baru berbentuk sebagai berikut:
1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
Pada contoh berikutnya, kita akan membuat pengguna bernama
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Sekarang kita akan memberikan
customeradmin
hak istimewa untuk mengaksescustomer
basis data. Perintah untuk memberikan hak istimewa ke database untuk pengguna tertentu mengambil bentuk berikut:1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
Untuk keperluan contoh berikut, kami akan memberikan
customeradmin
akses penuh kecustomer
basis data. Keluarkan perintah berikut di klien MySQL:1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Anda mungkin perlu menentukan pemberian akses yang berbeda bergantung pada tuntutan penerapan Anda. Lihat dokumentasi resmi untuk pernyataan GRANT MySQL. Setelah tabel dan pengguna dibuat, kita dapat mengimpor data cadangan dari file cadangan menggunakan
LOAD DATA
memerintah. Sintaksnya menyerupai berikut ini:1
LOAD DATA INFILE '[filename]' INTO TABLE [tableName];
Pada contoh berikut, kami akan memulihkan data dari tabel dari file bernama
customerOrderBackup.sql
. Ketika klien MySQL diberikan path dan nama file setelahINFILE
, itu terlihat di direktori data MySQL untuk file itu. Jika nama filecustomerOrderBackup.sql
diberikan, jalurnya adalah/var/lib/mysql/customerOrderBackup.sql
. Pastikan file yang Anda coba pulihkan ada, terutama jika MySQL menghasilkanFile not found
kesalahan. -
To import the data from the
customerOrderBackup.sql
file located in/var/lib/mysql/
, issue the following command:1
LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;
This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:
quit
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- Situs Web Resmi MySQL
- MySQL Database Backup Methods page
- mysqldump Manual Page
- Schedule Tasks With Cron
- MySQL’s Grant Statement, Official Documentation