Kütüphaneyi sil sadece kaçabilir mi? Programcılar kendilerini kurtarır! | Güç Projesi

Yazar | Pingtou'nun teknik blog yazısı

Editör | Tang Xiaoyin

Baş resmi | Oriental IC'den indirilen CSDN

Üretildi | CSDN Blogu

Çalışmamızda verileri veya veritabanlarını yanlışlıkla siliyoruz, kaçmamız gerekiyor mu? Bunun gerekli olduğunu düşünmüyorum. Programcılar kendilerini kurtarmayı ve bilmeden verileri almayı öğrenmelidir.

MySQL veritabanında, binlog günlüğünün tüm işlemlerimizi veritabanına kaydettiğini biliyoruz, bu nedenle binlog günlüğü kendi kendimize yardım etmemiz için bir silahtır.

Ardından, programcıların kendi kendine yardım yoluna başlayalım.

Kendinizi başarılı bir şekilde kurtarmak istiyorsanız, binlog aracı iyi olmalıdır.Kendimizden önce, binlog aracına sahip olduğumuzdan emin olmalıyız.Aşağıdaki, bir binlog aracı olduğundan emin olmak içindir.

1. Binlog günlüğünün veritabanında etkinleştirilip etkinleştirilmediğini onaylayın

'log_%' gibi değişkenleri gösterin;

Kırmızı daire içine alınmış yeri kontrol edin, eğer AÇIK ise, açık demektir, aksi halde açılmamış demektir. Açık değilse, aşağıdakileri yapmanız gerekir.

2. Binlog günlüğünü açın

Binlog günlüğü etkinleştirilmediyse, binlog günlüğünü etkinleştirmeniz ve MySQL yapılandırma dosyasında ayarlamanız gerekir.Bir Windows bilgisayarınız varsa, my.ini dosyasını bulun ve Unix sistemi my.cnf dosyasını bulun. Dosyada aşağıdaki parametreleri değiştirin veya yapılandırın:

# İkili Günlüğe Kaydetme. # Günlük dosyası adı ve depolama yolu günlük-bin = D: \ Mysql-binlog \ mysql-bin # Günlük biçimini ayarla binlog-format = mixed

Binlog-format için üç seçenek vardır:

  • BİLDİRİM: Verileri değiştirecek her SQL ifadesi, binlog'a kaydedilecektir.

  • KÜREK ÇEKMEK: Her SQL ifadesinin bağlam bilgisi kaydedilmez, yalnızca hangi kayıt değiştirilir.

  • KARIŞIK: Yukarıdaki iki modun karışık kullanımı, genel replikasyon, binlog'u kaydetmek için STATEMENT modunu kullanır, STATEMENT modunda replike edilemeyen işlemler için, binlog'u kaydetmek için ROW modunu kullanın, MySQL yürütülen SQL ifadesine göre günlük kaydetme yöntemini seçecektir.

3. MySQL sunucusunu yeniden başlatın

4. Binlog günlüğünün başarıyla açıldığını yeniden onaylayın.

Pekala, yukarıdaki adımları uyguladıktan sonra kendimizi nasıl kurtaracağımızı öğrenebiliriz: Verilerin yanlışlıkla silinmesi, yanlışlıkla tabloların silinmesi ve yanlışlıkla veritabanlarının silinmesi durumunda kendimizi nasıl kurtaracağımızı göstermek için üç senaryo kullanırız.

Spesifik senaryoya girmeden önce, ilk olarak demonstrasyon için gerekli olan veri tabanını, tabloları ve verileri hazırlıyoruz.

1. Bir veritabanı pingtouge oluşturun

veritabanı pingtouge oluşturun;

2. Öğrenci tablosunu oluşturun

masa öğrencisi oluştur ( kimlik INT NOT AUTO_INCREMENT, adı VARCHAR (100) NOT, num VARCHAR (40) NOT, BİRİNCİL ANAHTAR (kimlik) ) MOTOR = InnoDB VARSAYILAN KARAKTER = utf8;

3. Verileri girin

öğrenci (ad, numara) değerlerine ('Zhang San', '1234') ekleyin; öğrenci (ad, sayı) değerlerine ('', '1235') ekleyin;

Verilerle resmen sahneye girebilirsin, hazır mısın?

Senaryo 1: Yanlışlıkla bir veri parçası silindi

Öğrenci tablosundaki id = 1 olan verileri yanlışlıkla sildim. Ne yapmalıyım?

Bu veri parçası bellekten manuel olarak eklensin mi? Görünüşe göre vay canına okumak imkansız değil, hatırlayabilen herkes dahidir ve binlog kullanımı en önemli yoldur.

En son binlog günlük dosyasını görüntülemek için ana durumu göster komutunu kullanın.

En son binlog günlük dosyasını edindikten sonra, aşağıdaki şekilde gösterildiği gibi, binlog günlük dosyasını görüntülemek için 'mysql-bin.000043' içindeki binlog olaylarını göster komutunu kullanın:

Binlog günlüğü, ifade gönderilmeden önceki ve sonraki uzaklıklar da dahil olmak üzere tüm işlemlerimizi veritabanına kaydeder.Bu iki uzaklık, veri kurtarmada kullanılır.

Resmi olarak veri kurtarmaya girmeden önce, önce MySQL tarafından sağlanan bir araçla tanışalım: mysqlbinlog. mysqlbinlog, binlog günlük dosyalarını değiştirmek için kullanılır, veri kurtarma için kullanmamız gerekir.

İkili günlük dosyasını geri yüklemek için mysqlbinlog kullanın, komut biçimi:

mysqlbinlog binlog günlük dosyası - başlangıç konumunun başlangıç konumu - son uzaklığın durdurma konumu | mysql -u kök -p veritabanı adı;

mysqlbinlog binlog günlük dosyası - başlangıç konumunun başlangıç konumu - son uzaklığın durdurma konumu | mysql -u kök -p veritabanı adı;

Öğrenci tablosundaki id = 1'i silmeden önce verilerin son işleminin başlangıç ofsetini ve bitiş ofsetini binlog günlük dosyasında bulduk. Yukarıdaki şekilde, başlangıç ofsetini işaretledim 710 ve bitiş uzaklığı: 996. Bu iki parametre ile verileri geri yüklemek için mysqlbinlog komutunu kullanabiliriz.

gerçekleştirillen:

mysqlbinlog d: \ Mysql-binlog \ mysql-bin.000043 - başlangıç-konumu 710 - durdurma konumu 996 | mysql -u kök -p pingtouge;

Komut başarıyla yürütülürse, verilerin geri yüklenip yüklenmediğini görmek için öğrenciden * seç komutunu tekrar yürütün.

Yukarıdaki şekilden, öğrenci tablosundaki id = 1 olan verileri başarıyla geri yüklediğimizi görebiliriz.

Senaryo 2: Veri tablosunu yanlışlıkla silin

Masa öğrencisi yanlışlıkla tekrar silindi.

Yanlışlıkla silinen tablolar için, geri yüklemek için binlog günlüğünü de kullanabilirsiniz.Sonuçta, binlog günlüğü tüm işlemlerimizi MySQL üzerinde kaydeder.Tek bir veri parçasını geri yüklemek gibi, başlangıç uzaklığını ve bitiş uzaklığını da binlog günlük dosyasında bulmamız gerekir. Verileri geri yüklemek için kullanılan kayma miktarı.

Tek bir veri parçasından farklı olarak, tablo uzaklığı için başlangıç uzaklığı tablo oluşturulmadan önceki başlangıç uzaklığıdır ve bitiş uzaklığı, veritabanı silinmeden önceki son bitiş uzaklığıdır. Aşağıda gösterildiği gibi:

Bir resim eksikse, onu iki resme böleceğim. Benzer şekilde, öğrenci tablosunu geri yüklemek ve çalıştırmak için mysqlbinlog kullanıyoruz:

mysqlbinlog d: \ Mysql-binlog \ mysql-bin.000043 --start-position 393 --stop-position 1997 | mysql -u root -p pingtouge

Komut yürütüldükten sonra, öğrenciden * seçimini yürütün; tekrar, verilerimizin geri geldiğini göreceksiniz.

Senaryo 3: Veritabanını yanlışlıkla silin

İşe sinirleniyorsunuz ve veritabanını silmeye ve kaçmaya hazırsınız, böylece pingtouge veritabanını silersiniz, sildikten sonra pişman olursunuz, ne yapmalısınız? Çevrimiçi vb.

Panik yapmayın, evrensel binlog günlüğü sizi kurtarabilir Tıpkı önceki iki senaryoda olduğu gibi, geri yüklenecek veritabanının başlangıç ofsetini ve bitiş uzaklığını binlog günlüğünde bulabilirsiniz. Burada ekran görüntüsü almayacağım.

Binlog günlüğüne bakarak, veritabanı pingtouge oluşturmanın başlangıç ofsetinin 219 olduğu ve veritabanını silmeden önceki son ofsetin 3861 olduğu bulundu. Bu iki ofset ile şunları yürütün:

mysqlbinlog d: \ Mysql-binlog \ mysql-bin.000043 - başlangıç-konumu 219 - durdurma konumu 3861 | mysql -u kök -p

Sonunda veri tabanının getirilmesine gerek olmadığı unutulmamalıdır.Yapıldıktan sonra veri tabanı pingtouge ile ilgili tüm verilerin geri geldiği tespit edilmiştir.

Kütüphaneyi sildikten sonra, mutlaka kaçmamıza gerek yok, kendimizi kurtarmayı öğrenmeliyiz genç.

Yukarıdakiler bugün paylaşılan içeriktir. Çalışmanıza veya çalışmanıza yardımcı olacağını umuyorum. Makalenin iyi olduğunu düşünüyorsanız, lütfen beğenip iletin, teşekkür ederim.

Bu makale, CSDN tarafından resmi olarak yayımlanan CSDN blog yazarı "Pingtou Ge's Technical Blog" un orijinal makalesidir.

Orijinal adres: https://blog.csdn.net/z694644032/article/details/104463920

Lei Jun'un söylediği WiFi 6 tam olarak nedir?
önceki
İlkbaharın başlarında "Lhasa'nın Akciğerleri"
Sonraki
Yapay zekanın geniş ölçekli uygulanmasındaki tehlikeler nelerdir? Alibaba başkan yardımcısı Hua Xiansheng Lianmai açıkladı
5G standartlarının oluşturulması neden "yaşamak ve ölmek" zorunda?
Kuru ürünler! 0'dan 1'e kadar bağımlılık yapan bir chatbot oluşturmayı mı öğretirsiniz?
Kedilere takıntılı olmak popüler hale geldi ve blockchain NFT'nin muazzam büyüsünü gösteriyor
Lingling: İşe dönen işçiler için yeni koroner pnömoni IGM antikor testi yapmak
Geliştiriciler daha yüksek bir maaş almak için nasıl pazarlık yapabilirler?
HMS Core, Huawei'nin basın konferansında avantajlarını sunuyor ve Apple ve Google ile üçlü bir platform.
Ev ejderhası ve uzak böcekler! 76ers Cavaliers'ı üzdü Embiid'in sakatlığı takım için ne ifade ediyor?
Aşk Ekspresi! Xigaze'den Wuhan'a 10 ton seçilmiş sığır ve koyun eti sevk edildi
Odaklan! İlk olarak Android 11'in ilk geliştirici önizlemesinin yeni özelliklerine bakın
E-mağaza savaşı "salgın": salgın önleme ve çalışmaya devam etme
"Kitaplığı sil ve kaç" ın gerçek versiyonu mu? Programcılar kasıtlı olarak çevrimiçi üretim ortamını yok ediyor
To Top