Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cadangkan Database MySQL Anda

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 dengan mysqldump 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 dengan mysqlhotcopy 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.

  1. Sebelum kita mulai, sebaiknya lakukan LOCK TABLES pada tabel yang ingin Anda cadangkan, diikuti dengan FLUSH 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”, sintaks LOCK TABLES terlihat seperti berikut:

    1
    
    LOCK TABLES tableName READ;

    Untuk melakukan LOCK TABLES pada order tabel customer 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 di customer database (di belakang ; diperlukan untuk perintah MySQL):

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. 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 tabel customer 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
    
  3. 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.

  1. 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/*
    
  2. 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
    
  3. 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 pengguna mysql dengan grup mysql . Untuk mengubah izin pada direktori data, jalankan perintah berikut:

    chown -R mysql:mysql /var/lib/mysql
    
  4. 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 ubah debian-sys-maint yang baru kata sandi pengguna untuk itu. Anda dapat melihat kata sandi lama menggunakan cat :

    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 mana adalah kata sandi dari debian-sys-maint lama pengguna):

    1
    
    GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
  5. 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.

  1. 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
    
  2. 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;
  3. 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]';
  4. Pada contoh berikutnya, kita akan membuat pengguna bernama customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Sekarang kita akan memberikan customeradmin hak istimewa untuk mengakses customer basis data. Perintah untuk memberikan hak istimewa ke database untuk pengguna tertentu mengambil bentuk berikut:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
  6. Untuk keperluan contoh berikut, kami akan memberikan customeradmin akses penuh ke customer basis data. Keluarkan perintah berikut di klien MySQL:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. 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
    
  8. 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

  1. 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
    
  2. 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
    
  3. Untuk contoh berikut, kami akan mengembalikan order tabel ke dalam customer yang ada database dari file cadangan SQL bernama customerOrderBackup.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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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;
  5. 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 mengembalikan order tabel customer basis data. Ada 2 kolom di order tabel, custNum dengan tipe data INT dan orderName dengan tipe data VARCHAR(20); struktur tabel Anda akan berbeda:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. 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]';
  7. Pada contoh berikutnya, kita akan membuat pengguna bernama customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Sekarang kita akan memberikan customeradmin hak istimewa untuk mengakses customer 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 ke customer basis data. Keluarkan perintah berikut di klien MySQL:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. 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 setelah INFILE , itu terlihat di direktori data MySQL untuk file itu. Jika nama file customerOrderBackup.sql diberikan, jalurnya adalah /var/lib/mysql/customerOrderBackup.sql . Pastikan file yang Anda coba pulihkan ada, terutama jika MySQL menghasilkan File not found kesalahan.

  10. 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan Aplikasi ODBC ke MySQL

  2. Cara memeriksa database MySQL dan ukuran tabel

  3. Perbandingan MySQL dengan nilai nol

  4. Instalasi Neo4j

  5. Mengapa password_verify kembali salah?