/ Var / lib / mysql klasörünün tamamını farklı bir sunucuya kopyalayabilir miyim? (mysql vs mariadb, farklı versiyonlar)


9

MySQL ile bir Linux sistemim (LMDE) vardı. Sistem çoğu veritabanında innodb_file_per_table kullandı. (sürümden emin değilim, LMDE'deki "en son" ne olursa olsun)

Şimdi MariaDB ile yeni bir sistemdeyim (Manjaro / Arch).

$ mysql --version
mysql  Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1

Eski sistem bol miktarda büyük veritabanına sahipti, gerçekten mysqldump ile kopyalamak zorunda kalmamayı tercih ederim. Çok eski sistemden / var / lib / mysql klasörü kopyalamayı tercih ederim.

Mümkün mü?


Komik. Şimdi tam ters yöne ihtiyacım var, Arch to Mint (Ubuntu tabanlı) ve yine clueless. / Var / lib / mysql değiştirdikten sonra "start: Job başlatılamadı" alıyorum.
donquixote

Yanıtlar:


20

Evet mümkün. (Soruyu yazarken bunu anladım)

  1. MariaDB'yi yeni Arch sistemine kurun, çalıştığını doğrulayın.
    /Etc/mysql/my.cnf dosyasında değişikliklerinizi yapın. Örneğin innodb_file_per_table.
    (daha fazlası bu sorunun kapsamı dışındadır)
  2. sudo systemctl stop mysqld.
    (Her iki sunucuda da durmak istiyorsunuz, ancak benim durumumda diğeri zaten kapalı)
  3. / Var / lib / mysql klasörünü yeniden adlandırın, örneğin / var / lib / _mysql.
  4. Eski / var / lib / mysql klasörünü eski Debian (LMDE) sisteminden kopyalayın.
  5. / Var / lib / mysql içindeki her şey için dosya sahipliğini mysql: mysql dosyasına geri yükleyin:
    sudo chown -R mysql:mysql /var/lib/mysql
  6. sudo systemctl start mysqld.
    ->Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
  7. sudo systemctl status mysqld.
    -> Bu, hizmetin çalıştığını gösterir, ancak bazı şeyler yanlış gidiyor. Bu mysql_upgrade bunun içindir.
  8. mysql_upgrade -u root -p
    Notlar:
    • Eski sistemden mysql kök şifresidir!
    • Geçersiz veritabanı adı nedeniyle / var / lib / mysql bir artık klasörü kaldırmak zorunda kaldı.
    • / Var / lib / mysql / mysql_upgrade_info dosyasının yazılabilir olması gerekir.
    • İşlem biraz zaman alabilir.
  9. sudo systemctl restart mysqld.

CAVEAT: Görünüşe göre daha düşük bir MySQL sürümüne geçemezsiniz. Veritabanlarımı MySQL 5.5'e (veya karşılık gelen MariaDB'ye) geçirmeye çalıştım ve sunucu başlamayacaktı. Bunun yerine MySQL 5.6'yı yüklemek zorunda kaldım. (MySQL 5.6'ya karşılık gelen MariaDB, Linux dağıtımımda yok).


1
Etkileyici görünüyor +1. Ancak: sadece her iki tarafta mysql'i durdurmak, rsync-ing / var / lib / mysql ve sonra başlamak yeterli değil mi?
peterh - Monica

4
Ayrıca sunucu yapılandırmasının bu işlemle kopyalanmayacağını bilmeniz gerekir. Bazı yeni varsayılanları kabul etmek isteyebilirsiniz, ancak özelleştirilmiş değişkenleri de kopyaladığınızdan emin olmak isteyebilirsiniz /etc/my.cnf.
Richard

@Richard: Doğru. Aslında bunlardan bazılarını yapmak zorunda kaldım, ne değiştirdiğimi tam olarak hatırlamıyorum. Bir değişiklik, innodb_file_per_table özelliğini etkinleştirmemdi.
donquixote

@PeterHorvath Hayır, mysql_upgrade gerekliydi.
donquixote

Sadece diyorum ki, aynısını Manjaro'dan Mint'e geri döndüm. Çalıştı, ama yine MariaDB 5.5 değil, MySQL 5.6 kullanmak önemliydi.
donquixote
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.