Vraag MyISAM-probleem na het verplaatsen van datadir van een MySQL-database


Ik heb onlangs mijn MySQL database data-map verplaatst van de standaardlocatie /var/lib/mysql op een nieuwe harde schijf in /media/..UID../mysql, de stappen volgend die je in verschillende berichten kunt vinden.

  1. stop de MySQL
  2. Kopieer de oude map naar de nieuwe locatie
  3. Verander de datadir in de [mysqld] van /etc/mysql/my.cnf
  4. Wijzig de twee vermeldingen in de AppArmor-configuratie
  5. Pas de gebruikersrechten van de gegevensmap aan
  6. Start AppArmor opnieuw
  7. Start MySql opnieuw

Na die stappen probeerde ik een nieuwe database te maken en die werkte, hij verschijnt ook in de nieuwe map. Vervolgens heb ik een nieuwe InnoDB-tabel gemaakt en deze werkte ook en deze plaatst de *frm bestand in de /mysql/new map. Maar toen wilde ik een MyISAM-tabel maken in deze database, ik ontving de foutmelding

#1 - Can't create/write to file '/media/..UID../mysql/new/tableName.MYI' (Errcode: 13)

Ik heb al geprobeerd om alle rechten op 777 in te stellen, omdat ik dacht dat het een toestemmingsprobleem is (maar omdat InnoDB in die map kan schrijven, kan ik niet zien waarom MyISAM dat niet kan !?). Voor mij lijkt het erop dat de MyISAM-engine ergens anders speciale toestemming nodig heeft om zijn bestanden te schrijven, maar ik weet niet waar.

Eerst dacht ik dat het een groeiend probleem van die nieuwe harde schijf was, maar aan de andere kant - de InnoDB kan databasemappen maken en ook bestanden in deze mappen maken.

Dus elke hulp wordt op prijs gesteld als iemand een soortgelijk probleem had na het verplaatsen van een MyISAM-tabel en enkele hints kon geven waar te kijken of wat anders te proberen.

Heel erg bedankt alvast!


1
2018-04-24 07:16


oorsprong




antwoorden:


Ik had een soortgelijk probleem.

Dit is wat werkte op Ubuntu 12.04

Om datafiles van te verplaatsen /var/lib/mysql naar /newdir_path/newdir

sudo mysql stop
sudo rsync -av /var/lib/mysql /newdir_path/newdir ## like copy, but keeps rights
sudo -H gedit /etc/mysql/my.cnf

verandering datadir naar /newdir_path/newdir

sudo -H gedit /etc/apparmor.d/usr.sbin.mysqld

in plaats van:

/var/lib/mysql/ r,
/var/lib/mysql/** /rwk 

in te voeren:

/newdir_path/newdir/ r,
/newdir_path/newdir/** rwk, 

Nu uitvoeren:

sudo /etc/init.d/apparmor restart 
sudo chown mysql:mysql <b>/newdir_path
sudo start mysql

1
2017-09-18 00:13



Bedankt voor het antwoord na zo lange tijd, helaas heb ik de computer ondertussen opnieuw geïnstalleerd en het probleem op die manier opgelost. Maar zodra ik de DB opnieuw moet verplaatsen, ben ik blij dat ik je stappen kan uitproberen. Omdat ik het nu niet kan proberen, ga ik deze oplossing accepteren als mogelijk werkend. - Daniel Fischer