it-swarm-id.com

Haruskah saya menggunakan mysqldump atau mysqlhotcopy untuk backup database MySQL?

Saya memiliki blog WordPress yang berjalan pada database MySQL yang ingin saya buat cadangannya secara teratur. Apakah lebih baik menggunakan program mysqldump atau skrip mysqlhotcopy untuk membuat cadangan? Apa pro dan kontra dari masing-masing? Apakah ada opsi lain yang harus saya pertimbangkan?

13
Matthew Shanley

Saya dapat memberi tahu Anda bahwa saat ini saya menggunakan mysqldump untuk memelihara cadangan database saya. Saya melakukan ini karena tujuan saya adalah menyimpan cadangan mingguan sehingga jika seseorang menghapus halaman webnya, saya dapat memulihkannya paling banyak seminggu yang lalu.

Hal yang baik tentang ini adalah bahwa ini adalah file teks dasar sehingga saya dapat mengimpornya ke komputer mana saja dengan MySQL, memuatnya, dan mencari-cari data yang hilang. Catatan: untuk mendapatkan apa yang saya inginkan, perintah yang saya gunakan dalam skrip saya adalah ini:

mysqldump --databases databaseName > /file/path

--databases adalah yang membuat mysqldump membuang header CREATE DATABASE IF NOT EXIST sehingga saya dapat mengimpornya di mana pun saya inginkan.

Walaupun metode ini bekerja untuk saya, saya yakin ada metode yang lebih baik di luar sana untuk tujuan lain. Saya juga dapat mengatakan bahwa, untuk solusi pencadangan apa pun, Anda harus menyimpannya setidaknya di komputer lain, dan sebaiknya di luar lokasi (kami ada di cloud) jika Anda bisa.

5
Mike

Saya akan mempertimbangkan menggunakan plugin WordPress yang disebut "Cadangan Basis Data WordPress (WP-DB-Cadangan)" yang juga terdaftar di Wordpress Pencadangan basis data panduan . Plugin ini dapat mencadangkan basis data sesuai jadwal dan mengirimkannya kepada Anda melalui email (dengan asumsi basis datanya kecil). Anda juga dapat mencadangkannya secara lokal. Anda dapat mengecualikan spam komentar dan revisi untuk membuat DB lebih kecil

Lebih sedikit kontrol tetapi lebih mudah diimplementasikan.

MySQL dumps memberi Anda paling banyak kontrol . Layanan hosting Anda juga bisa menjadi faktor pembatas. Beberapa host tidak memberi Anda akses untuk menjalankan pekerjaan cron atau menjalankan perintah mysqldump.

5
citadelgrad

SARAN # 1

Jika Anda melakukan backup MySQL Instance, yang terbaik adalah mengatur MySQL Replicaton sehingga setiap beban server atau menambah disk I/O tidak memengaruhi database produksi Anda.

Setelah mengatur Replikasi MySQL, Anda dapat membuat skrip mysqldump dengan cara yang berbeda ( Silakan lihat posting saya di DBA StackExchange untuk berbagai teknik ), selama Anda menjalankan mysqldumps pada Slave.

SARAN # 2

Jika Anda tidak dapat mengatur server lain untuk Replikasi MySQL dan semua data Anda adalah InnoDB, Anda harus melakukan mysqldump point-in-time. Ini dilakukan menggunakan opsi --single-transaction dengan mysqldump. Jadi, jika Anda menjalankan mysqldump mulai dari tengah malam dan cadangan berakhir pada 12:15, output mysqldump ketika dipulihkan mencerminkan data pada pukul 12:00.

SARAN # 3

Program lain yang tersedia untuk Cadangan MySQL adalah XtraBackup dari Percona.

XtraBackup adalah alat komprehensif yang berperilaku seperti rsync tetapi telah mengarahkan tujuan dalam kehidupan. Itu bisa mulai menyalin semua data dan tablespace InnoDB. Ia memiliki kemampuan untuk membuat pos pemeriksaan secara internal dan melakukan in-place recovery crash InnoDB untuk membantu mendapatkan cadangan point-in-time yang sempurna. XtraBackup juga memiliki fitur tambahan yang memungkinkan untuk membuat cadangan tambahan. Fitur tambahan lainnya adalah pembuatan file log InnoDB, juga dibangun oleh pemulihan kerusakan di tempat. Ada juga beberapa perangkat lunak pembungkus untuk menyediakan salinan beku dari tabel MyISAM juga.

Ia melakukan bagian belakang MySQL Instance, tetapi dengan perbedaan yang berbeda. Titik waktu cadangan didasarkan pada kapan cadangan selesai dan bukan saat dimulai. Jadi, jika Anda menjalankan XtraBackup mulai dari tengah malam dan cadangan berakhir pada 12:15, output mysqldump ketika dipulihkan mencerminkan data pada 12:15.

3
RolandoMySQLDBA

Tergantung pada mesin penyimpanan Anda untuk tabel Anda. Ini hanya berfungsi untuk tabel ARCHIVE dan MyISAM menurut Halaman Manual MySQL ini dan harus dijalankan pada mesin yang sama (yaitu tidak menggunakan soket lokal atau TCP/IP)

MySQL juga mengatakan

Jika Anda melakukan pencadangan di server dan semua tabel Anda adalah tabel MyISAM, pertimbangkan untuk menggunakan mysqlhotcopy sebagai gantinya karena dapat mencapai pencadangan yang lebih cepat dan pengembalian yang lebih cepat.

2
Aiden Bell

Saya sarankan menggunakan salah satu dari banyak skrip cadangan mySQL yang sudah ada sebelumnya untuk menghilangkan rasa sakit karena memperbaikinya.

Saya menggunakan "automysqlbackup" yang merupakan skrip Shell open-source yang dapat ditetapkan sebagai tugas cron di server. Ini mencakup hampir setiap situasi pencadangan yang mungkin: http://sourceforge.net/projects/automysqlbackup/ . Ini telah bekerja dengan sempurna untuk saya selama beberapa tahun - sangat direkomendasikan.

1
Mark Hatton

mysqlhotcopy adalah skrip Perl sekitar '05. Jadi itu menambah dependensi, untuk Perl dan berbagai Perl. Saya akan meneruskan yang ini.

mysqldump adalah program C yang didistribusikan dengan MySQL dan dipelihara secara aktif. Jika Anda menambahkan opsi -x itu mengunci tabel sehingga Anda menjadi emas.

Saya pribadi punya skrip ini dalam cron (Anda ingin menghapus `escapes tersebut jika Anda ingin menjalankannya dengan tangan) dan itu berfungsi seperti pesona bagi saya, membuat cadangan setiap basis data saya ke file lokal, serta dump penuh semua database.

Dan jika Anda memiliki lebih dari satu basis data di sana, Anda juga ingin membuang hibah untuk mereka. Maatkit akan membantu Anda di sana, dan Anda hanya akan mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql untuk membuat cadangan tabel hibah Anda dan siap untuk mengimpor lagi.

1
intlect

Saya juga tahu bahwa sejumlah alat manajemen server seperti Interworx dan Ensim menggunakan mysqldump untuk membuat cadangan basis data dan kemudian perintah mysql sederhana untuk memulihkan. Dari sini akan saya duga bahwa ini adalah salah satu cara terbaik.

0
Darryl Hein