Rumah > Artikel > pangkalan data > Pembangunan MySQL: Berkongsi pengalaman dalam projek sandaran dan pemulihan data
MySQL kini merupakan salah satu sistem pengurusan pangkalan data hubungan yang paling popular Ia digunakan secara meluas dalam pelbagai bidang seperti Internet, kewangan, dan logistik Ia bukan sahaja mempunyai kebolehpercayaan dan kestabilan yang tinggi, tetapi juga mempunyai penyimpanan data yang baik keupayaan pengurusan. Dalam kerja pembangunan harian, sandaran dan pemulihan data adalah bahagian penting. Berikut adalah beberapa perkongsian pengalaman saya dalam pembangunan projek sebenar.
1. Kepentingan Sandaran Data
Sandaran data adalah salah satu cara penting untuk memastikan keselamatan pangkalan data. Sebaik sahaja data hilang, ia akan memberi kesan yang besar kepada operasi dan pengurusan perusahaan. Oleh itu, pembangun harus menyedari sepenuhnya kepentingan sandaran data dan mengambil langkah yang sesuai untuk melakukan sandaran.
2. Pemilihan penyelesaian sandaran data
MySQL menyediakan pelbagai penyelesaian sandaran, termasuk mysqldump, sandaran fizikal (berdasarkan sistem fail), sandaran log binari, dsb. Berikut ialah penyelesaian sandaran yang saya gunakan.
mysqldump ialah alat sandaran MySQL sendiri, yang boleh membuat sandaran sepenuhnya pangkalan data dalam format SQL. Apabila menggunakan pelan sandaran ini, anda perlu menetapkan parameter berikut:
(1) Sandarkan pangkalan data
mysqldump -u root -p --opt database_name > backup_file.sql
(2) Sandarkan hanya jadual tertentu
mysqldump -u root -p database_name table_name > backup_file.sql
Kelebihan sandaran mysqldump ialah fail sandaran mengambil alih ruang kecil dan sangat boleh dibaca, tetapi kelemahan Kelajuan sandaran adalah perlahan dan masa sandaran adalah panjang Untuk sandaran pangkalan data yang besar, sandaran volum mungkin diperlukan.
Sandaran fizikal merujuk kepada menyandarkan fail data MySQL, membuat sandaran pada peringkat fail data. Proses sandaran merangkumi dua bahagian: salinan fail data dan sandaran log binari. Apabila menggunakan penyelesaian sandaran ini, anda perlu menggunakan alat seperti rsync dan scp untuk menyalin fail data ke pelayan sandaran.
Kelebihan sandaran fizikal ialah kelajuan sandaran yang cepat dan masa sandaran adalah singkat, tetapi kelemahannya ialah fail sandaran mengambil ruang yang agak besar.
Log binari MySQL merekodkan semua perubahan yang dibuat pada pangkalan data Apabila menggunakan penyelesaian sandaran ini, anda hanya perlu menyandarkan log binari. Apabila menggunakan pelan sandaran ini, anda perlu menetapkan parameter berikut:
(1) Hidupkan log binari
log-bin=mysql-bin
(2) Sandarkan log binari
mysqlbinlog -u root -p binlog_file > backup_file.sql
Kelebihan sandaran log binari ialah kelajuan sandaran adalah pantas, dan sandaran tambahan dan sandaran pembezaan boleh dilakukan Tetapi kelemahannya ialah fail sandaran tidak boleh digunakan secara langsung untuk memulihkan data, dan log binari perlu dihuraikan terlebih dahulu.
3. Pemilihan penyelesaian pemulihan data
Sebelum pemulihan data, anda perlu memutuskan penyelesaian sandaran yang hendak digunakan untuk pemulihan. Berikut ialah penyelesaian pemulihan data yang saya gunakan.
Apabila menggunakan mysqldump untuk sandaran, anda boleh menggunakan arahan berikut untuk memulihkan:
mysql -u root -p database_name < backup_file.sql
Arahan ini akan mengimport data dalam fail sandaran ke dalam pangkalan data yang ditentukan. Memandangkan fail sandaran lebih mudah dibaca, fail sandaran boleh diubah suai, seperti memadam beberapa rekod atau menambah beberapa pernyataan SQL.
Apabila menggunakan sandaran fizikal untuk sandaran, anda boleh menggunakan arahan berikut untuk memulihkan:
(1) Hentikan MySQL
service mysql stop
(2) Salin fail data
Salin fail sandaran ke laluan yang sama bagi pelayan asal Seterusnya, tulis ganti fail data asal.
(3) Mulakan MySQL
service mysql start
Apabila menggunakan sandaran fizikal untuk pemulihan, sila ambil perhatian: sebelum pemulihan, anda perlu menghentikan perkhidmatan MySQL selepas pemulihan, anda perlu memulakan semula perkhidmatan MySQL apabila memulihkan pangkalan data yang besar, berbilang sandaran; mungkin diperlukan dan sandaran volum.
Apabila menggunakan log binari untuk sandaran, anda boleh menggunakan arahan berikut untuk memulihkan:
(1) Salin log binari sebelum titik masa pemulihan ke pelayan sandaran
(2) Gunakan perintah mysqlbinlog untuk menghuraikan Log binari
mysqlbinlog -u root -p --start_datetime="2019-01-01 00:00:00" --stop_datetime="2019-01-02 00:00:00" mysql-bin.000001 > backup_file.sql
(3) Import fail SQL yang dijana ke dalam pangkalan data yang ditentukan
mysql -u root -p database_name < backup_file.sql
Apabila menggunakan pemulihan log binari, sila ambil perhatian: titik masa pemulihan perlu ditentukan dengan tepat untuk pangkalan data yang besar, berbilang sandaran dan pemulihan mungkin diperlukan.
4. Soalan lazim tentang sandaran dan pemulihan data
Semasa proses sandaran dan pemulihan sebenar, anda mungkin menghadapi beberapa masalah. Berikut adalah beberapa masalah biasa dan penyelesaiannya.
Untuk menyelesaikan masalah fail sandaran yang terlalu besar, anda boleh menggunakan sandaran kelantangan untuk menyelesaikannya.
Untuk masalah ralat pemulihan, anda boleh mencetak log ralat untuk dilihat, atau mengekstrak beberapa fail sandaran untuk pemulihan.
Semasa proses pemulihan data, ketidakkonsistenan data mungkin berlaku. Dalam kes ini, anda boleh menggunakan alat mysqldiff untuk membandingkan kedua-dua pangkalan data, dan kemudian menggunakan fail perbezaan untuk membuat pengubahsuaian.
5. Ringkasan
Sandaran dan pemulihan data ialah bahagian penting dalam kerja pembangunan MySQL. Pembangun harus menyedari sepenuhnya kepentingan sandaran data dan memilih penyelesaian sandaran dan pemulihan yang sesuai. Pada masa yang sama, penyelesaian yang sepadan perlu dibangunkan untuk masalah biasa bagi memastikan keselamatan dan kebolehpercayaan pangkalan data.
Atas ialah kandungan terperinci Pembangunan MySQL: Berkongsi pengalaman dalam projek sandaran dan pemulihan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!