it-swarm-tr.com

MySQL veritabanını fiziksel dosyalardan geri yükleme

Bir MySQL veritabanını fiziksel veritabanı dosyalarından geri yüklemek mümkün müdür. Aşağıdaki dosya türlerine sahip bir dizin var:

client.frm
Client.MYD
Client.MYI 

ama yaklaşık 20 daha fazla tablo için.

Genelde mysqldump veya benzeri bir aracı 1 SQL dosyasında her şeyi almak için kullanıyorum, bu yüzden bu tür dosyalarla başa çıkmanın yolu nedir?

115
Abdullah Jibaly

MySQL MyISAM tablosu üç dosyanın birleşimidir:

  • FRM dosyası tablo tanımıdır.
  • MYD dosyası, gerçek verilerin depolandığı yerdir.
  • MYI dosyası, tabloda oluşturulan dizinlerin depolandığı yerdir.

Onları veritabanı klasörünüze kopyalayarak geri yükleyebilmelisiniz (Linux'ta varsayılan konum: /var/lib/mysql/)

Sunucu çalışmıyorken yapmanız gerekir.

116
Vincent

@Vicent'in yanıtından şimdiden MySQL veritabanını aşağıdaki gibi geri yükledim:

Adım 1. MySQL sunucusunu kapatma

Adım 2. Veritabanını veritabanı klasörüne kopyalayın (linux'ta, varsayılan konum/var/lib/mysql'dir). MySQL modunda aynı veritabanı adı ve veritabanı adını aynı tutun.

Sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

Adım 3: Kendini değiştir ve kipini değiştir:

Sudo chown -R mysql:mysql /var/lib/mysql/database1
Sudo chmod -R 660 /var/lib/mysql/database1
Sudo chown  mysql:mysql /var/lib/mysql/database1 
Sudo chmod 700 /var/lib/mysql/database1

Adım 4: ibdata1'i veritabanı klasörüne kopyalayın

Sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

Sudo chown mysql:mysql /var/lib/mysql/ibdata1

Adım 5: ib_logfile0 ve ib_logfile1 dosyalarını veritabanı klasörünüze kopyalayın.

Sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

Sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

Kendini değiştir ve bu dosyaların köklerini değiştir:

Sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

Sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

veya

Sudo chown -R mysql:mysql /var/lib/mysql

Adım 6 (İsteğe bağlı): Sitem, dosyaları belirli bir yerde depolayacak şekilde yapılandırmaya sahip, sonra bunları tam olarak ilgili konuma kopyalarım.

Adım 7: Mysql sunucunuzu başlatın. Her şey geri dönüyor ve tadını çıkar.

Bu kadar.

Daha fazla bilgi için: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/

27
biolinh

Aynı sorunu yaşıyorum, ancak yukarıdaki yönergelere göre veritabanı başarıyla kurtarılmadı. 

Ubuntu işletim sistemimden yalnızca mysql veritabanı klasörlerini kurtardım. Benim sorunum veritabanımı bu okunamayan mysql veri klasörü ile nasıl kurtarılacağıdır. Şimdi geliştirme ortamı için win7 işletim sistemine geri dönüyorum.

* NOTE Win7'de çalışan bir veritabanı sunucum var ve kurtarılan dosyalardan almak için sadece birkaç veritabanı dosyasına ihtiyacım var. Veritabanlarını Ubuntu işletim sisteminden başarılı bir şekilde kurtarmak için, eski işletim sistemimdeki her şeyi kurtarmak için win7 işletim sistemimdeki Ubuntu işletim sistemimdeki yeni kurulu mysql veri tabanı sunucusunu kullanmam gerekiyor.

  1. Başka bir yeni mysql veritabanı sunucusu, Kurtarılan dosyalardan aynı sürümü yapın.

  2. MySQL sunucusunu durdur

  3. kurtarılan klasörü kopyalayın ve (C:\ProgramData\MySQL\MySQL Server 5.5\data) dizinine yapıştırın.

  4. linux mysql yüklü klasörde bulunan ibdata1 dosyasını kopyalayın ve içine yapıştırın (C:\ProgramData\MySQL\MySQL Server 5.5\data). Sadece bitti.

  5. mysql sunucusunu başlatın ve başarılı bir şekilde kurtarıp kurtarmadığınızı kontrol edin.

  6. Kurtarılmış veritabanımı şu anda kullanılan mysql server 'Da kullanmak için sadece kurtarılmış veritabanımı ver ve mevcut mysql Sunucumu al.

Umarım bunlar yardımcı olur çünkü sorunuma bir çözüm bulamadım. 

8
Ivan Igniter

Klasörü geri yüklüyorsanız, dosyaları mysql: mysql ye 

chown -R mysql:mysql /var/lib/mysql-data

Aksi takdirde, bir veritabanını bırakmaya veya yeni bir sütun eklemeye çalışırken hata alırsınız.

ve MySQL'i yeniden başlatın

service mysql restart
7
Joel Davey

MySQL 5.1 ile (Win7). DB'ler oluşturmak için (InnoDb) Aşağıdaki dir içeriğinin (my.ini params) tüm içeriğini değiştirdim:

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

Ondan sonra MySQL Servisine başladım ve her şey yolunda gidiyor.

2

Evet öyle! Onları veritabanı klasörünüze ekleyin (işletim sistemine bağlı olarak) ve "MySQL Düzeltme İzinleri" gibi bir komut çalıştırın. Bu veritabanını yeniden sakladı. Dosyalarda da doğru izinlerin ayarlandığından emin olun.

1
Filip Ekberg

Benim durumumda,/var/lib/mysql içindeki tc.log dosyasını kaldırmak, mariadb/mysql komutunu tekrar başlatmak için yeterliydi.

0
SirJohnFranklin

Bir keresinde bu dosyaları çalıştıran bir mysql veritabanı için veritabanı depolama klasörüne kopyaladım, db'yi başlattım ve dosyaları "tamir etmesini" bekledim, sonra mysqldump ile çıkardım.

0
Spikolynn