MySQL veritabanını başka bir sürücüye nasıl taşırım?


34

Çok sayıda devlet verisini analiz etmek için yerel bir makinede MySQL 5.5 kullanıyorum. Varsayılan sürücümde (Win7 C: sürücü) bulunan yerel bir veritabanı oluşturdum. Verileri E: sürücümde, büyük bir eSATA harici sürücüsünde depolamak istiyorum.

Hangi adımları atmalıyım?

mysql 

dB'yi bir sql dosyası olarak dışa aktaramıyorsanız, sonra dosyayı kaydedin e: sonra gelecekte dB'yi geri yüklemek istiyorsanız, bu dosyayı içe aktarabilirsiniz

@tq - Bu işe yaramaz. MySQL sunucusu veri dizinini değiştirmek istiyor. Eğer ihraç eder ve ithal eder, yine de aynı sürücüde olacak!

Veritabanı dosyalarını harici sürücüye taşırken dikkatli olun, onu bilgisayarınıza bağlı tutmak zorunda kalacaksınız, aksi takdirde veritabanınız
çökecektir

Yanıtlar:


35
  1. Kapatma mysql.
  2. Geçerli veri dizininizdeki tüm dosyaları yeni konuma taşıyın (adım 3 - datadirparametresindeki konumu kontrol edin ).
  3. Dosyayı bulun my.ini(mysql kurulum dizininde). datadirYeni konuma işaret etmek için parametre değerini değiştirin .
  4. MySQL'i başlat.

MySQL başlatmaya çalışırken bu bana hata verdi (izin sorunları). Ben sonrası çözüm üzerinde yerleşmiş burada ben umut birisi biraz zaman tasarrufu sağlar.
snapfractalpop

1
@snapfractalpop soru pencereler için
adam

@adam pencereleri sorunun gövdesinde belirtilmiştir, ancak sadece bir pencere sorusu olarak etiketlenmemiştir, başlıkta da belirtilmeyen pencereler değildir. Bağlantıyı yorumlarda yayınladım, çünkü diğer Windows olmayan kullanıcıların da bu soruya rastlamaları mümkün.
snapfractalpop

Kullanmak zorunda olduğumu /ve \ 'için dizin yolunda dizin ayırıcı kullanmam gerektiğini öğrendim datadir. Windows 10'da WAMPserver kullanıyorum.
Steve

ProgramData dizini, dosya gezginizde gizli olabilir. Gizli Dosyaları gösterme ayarını değiştirene kadar var olmadığını sanıyordum.
WestAce

6

Her ne kadar pencere sorsanız da, burada sona erenler için linux / ubuntu yol tarifleri arayanlar için iyi bir yol tarifi:

Varsayımlar:

  • Harici / usb / alternatif sürücüde /mountpoint/var/lib/mysql, belki de ölen veya eski bir kurulumda bulunan mysql verileriniz var
  • Yerel olarak yeni Ubuntu kurulumunuza taşımak istiyorsunuz /var/lib/mysql
  • İle Durdur MySQL:
    sudo /etc/init.d/mysql stop.
  • İle akım (temiz) MySQL veri dizinin yedeğini:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Sonra eski veri dizinini eski sürücüden şununla kopyalayın:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    mountun mountpointyolu nerede .
  • Şimdi MySQL'i şu şekilde yeniden başlatın:
    sudo /etc/init.d/mysql start

Şansınız varsa, MySQL yeniden başlatılmalı ve eski veritabanlarınızı geri almalısınız.

Kaynak mb_webguy@ubuntuforums.org


3
(!) Bu işe yaramayacak çünkü config hala eski lokasyona işaret ediyor
ADOConnection

4

1. Çözüm:

  1. Öncelikle, `mysqldump 'kullanarak verilerinizi yedekleyin.
  2. Mysql Server'ı resmi paketten kurarsanız, MySQLINstanceConfig.exe programını sunucunuzun bin dizininden çalıştırarak yapabilirsiniz.
  3. Verileri içe aktar

MySQLINstanceConfig.exe

İkinci çözüm (önerilmez, ancak aynı makinede çalışır)

  1. Mysql sunucusunu durdur.
  2. Veri dizininizdeki verileri yeni dizininize kopyalayın
  3. My.cnf dosyasını açın (Benim durumumda "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. datadir gibi bir satır bulun = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" ve yeni konumunuzun yolunu değiştirin
  5. Sunucunuzu başlatın

5.6 sürümünden itibaren MySQLInstanceConfig.exe artık dağıtılmamaktadır. Bu işlevsellik yükleyici tarafından değiştiriliyor. http://bugs.mysql.com/bug.php?id=66306


Verileri taşımak için eşdeğer bir Linux programı var mı
Ron Piggott

Verileri ikinci yaklaşımla taşıdıktan sonra MariaDB'yi başlatamadım (sürüm 5.5). Servis kullanıcısına yeni verilere erişim izni verdikten sonra, servis başlar ve veri tabanına bağlanabiliyorum. Ancak yine de herhangi bir tabloyu erişen başarısız: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. İzinlerin doğru ayarlandığından nasıl emin olabilirim?
Bram

2

Windows için, MySQL Installer 1.4.6 (2015-04-07) itibariyle , veri konumu, my.inivarsayılan olarak varsayılan olmayan bir konuma yüklendiyse , dosyanın konumu, dosyanın konumunu belirten bir kayıt defteri anahtarında belirtilebilir. my.inidosya olmayacak C:\ProgramData\MySQL\MySQL Server x.x\.

Kayıt defteri değerlerinin konumu (en azından MySQL 5.6'dan itibaren):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationbir REG_SZMySQL uygulama dosyalarının bulunduğu klasöre işaret ettiği; varsayılan olarak:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationa, REG_SZbu klasöre işaret my.inibulunur; ayrıca varsayılan olarak:C:\Program Files\MySQL\MySQL Server x.x\

Ayrıca my.ini: Dosya yolu bu kayıt defteri anahtarının altında hizmet komutu dahildir HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXiçinde ImagePath REG_EXPAND_SZdeğer.

Bu dizenin varsayılan değeri: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Sonuç olarak, bu senaryoda veri dosyalarını taşımak için bazı eklerle birlikte @ITCuties tarafından gönderilen adımları takip etmeniz gerekir.

İşte tüm adımlar:

  1. Kapatma mysql.
  2. DataLocationGeçerli my.inidosya konumunu bulmak için yukarıdaki kayıt defteri değerine bakın ve my.inidosyayı da taşımak istiyorsanız, dosyayı güncelleyin DataLocationve my.inidosyayı bu yeni yola taşıyın .
  3. my.iniDosyanın konumunu değiştiriyorsanız, yukarıda listelenen hizmet komutu kayıt defteri anahtarındaki yolu güncellemeniz gerekir.
  4. my.iniDosyayı açın, datadirparametreyi bulun . Dosyaları bu datadiryoldan verilerin bulunmasını istediğiniz yola taşıyın ve ardından datadirparametreyi bu yeni yolla güncelleyin .
  5. MySQL'i başlat.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.