Strona 1 z 2

[+] Mysql - przenoszenie bazy w inne miejsce

: 24 lutego 2010, 19:27
autor: LordRuthwen
Witam.
Ostatnio wpadłem na pomysł przeniesienia plików baz mysql w inne miejsce na dysku, tzn. z domyślnego katalogu /var/lib/mysql do /home/bazy/mysql (potem jeszcze dojdzie do tego postgresql, gdyż to właśnie dla partycji /home mam kopie lustrzane na tej maszynie), jako że byłem przekonany, że to nie będzie trudne, zacząłem od zatrzymania silnika bazy, skopiowałem pliki metodą:

Kod: Zaznacz cały

cp -fpvdR /var/lib/mysql /home/bazy/
Sprawdziłem uprawnienia katalogu:

Kod: Zaznacz cały

ls -l /var/lib/ |grep mysql
drwxr-xr-x 33 mysql      mysql      1040 2010-02-23 22:03 mysql
ls -l /home/bazy/ |grep mysql
drwxr-xr-x 33 mysql mysql 1040 2010-02-22 17:07 mysql
zmieniłem w pliku /etc/mysql/my.cnf linię:

Kod: Zaznacz cały

datadir         = /var/lib/mysql
na:

Kod: Zaznacz cały

datadir                = /home/bazy/mysql
próbowałem wystartować bazę ale nie wstała, w logach mysql nie ma po niczym śladu, natomiast w wiadomościach znalazłem to:

Kod: Zaznacz cały

Feb 23 22:00:30 lilo kernel: [5380439.659826] type=1503 audit(1266958830.333:8): operation="inode_create" requested_mask="a::" denied_mask="a::" fsuid=0 name="/home/bazy/mysql/lilo.lower-test" pid=11048 profile="/usr/sbin/mysqld"
Feb 23 22:00:30 lilo kernel: [5380439.660458] type=1503 audit(1266958830.333:9): operation="inode_create" requested_mask="a::" denied_mask="a::" fsuid=0 name="/home/bazy/mysql/lilo.lower-test" pid=11048 profile="/usr/sbin/mysqld"
Feb 23 22:00:30 lilo kernel: [5380439.678623] type=1503 audit(1266958830.353:10): operation="inode_permission" requested_mask="rw::" denied_mask="rw::" fsuid=110 name="/home/bazy/mysql/ibdata1" pid=11048 profile="/usr/sbin/mysqld"
Feb 23 22:02:27 lilo kernel: [5380557.235461] type=1503 audit(1266958947.909:11): operation="inode_create" requested_mask="a::" denied_mask="a::" fsuid=0 name="/home/bazy/mysql/lilo.lower-test" pid=11359 profile="/usr/sbin/mysqld"
Feb 23 22:02:27 lilo kernel: [5380557.235646] type=1503 audit(1266958947.909:12): operation="inode_create" requested_mask="a::" denied_mask="a::" fsuid=0 name="/home/bazy/mysql/lilo.lower-test" pid=11359 profile="/usr/sbin/mysqld"
Feb 23 22:02:27 lilo kernel: [5380557.253017] type=1503 audit(1266958947.929:13): operation="inode_permission" requested_mask="rw::" denied_mask="rw::" fsuid=110 name="/home/bazy/mysql/ibdata1" pid=11359 profile="/usr/sbin/mysqld"
Może mnie ktoś naprowadzić co i jak zrobić, żeby było dobrze?

: 24 lutego 2010, 20:18
autor: fnmirk
Najprościej to przenieść katalog z bazą w dowolne miejsce, a w poprzednim miejscu utworzyć dowiązanie o nazwie starego katalogu.

: 24 lutego 2010, 22:47
autor: LordRuthwen
Powiem Ci, że nie bardzo chce działać w ten sposób.

: 24 lutego 2010, 22:58
autor: fnmirk
Po tych swoich wcześniejszych zmianach przywróciłeś domyślne ustawienia.
Dowiązanie i przeniesienie katalogu spróbuj wykonać z pomocą jakiegoś livecd.

: 08 października 2010, 11:16
autor: Bastian
Witam.

Dopisuje się do tematu z dokładnie takim samym problemem. Czy oprócz dowiązania nie idzie tego zrobić w jakiś bardziej "cywilizowany" sposób?

Zrobiłem.

Wyłączamy bazę myslq:

Kod: Zaznacz cały

/etc/init.d/myslq stop
Kopiujemy bazę w nowe, wybrane przez Nas miejsce:

Kod: Zaznacz cały

cp -pvdR /var/lib/mysql /home/bazy_danych/mysql
Następnie edytujemy plik:

Kod: Zaznacz cały

/etc/mysql/my.cnf
zmieniając linijkę:

Kod: Zaznacz cały

datadir               = /var/lib/mysql
na:

Kod: Zaznacz cały

datadir               = /sieżka/do/bazy
Zapisujemy i startujemy bazę:

Kod: Zaznacz cały

/etc/init.d/myslq start
Baza ruszyła z nowego miejsca. Tak więc nie wiem dlaczego kolega LordRuthwen miał problem, ale podejrzewam, że nie odpisując już więcej w tym temacie, dał nam do zrozumienia, że jemu też zadziałało. Pytanie, odrębne jak uruchomić wykorzystując skrypty Debiana dwie niezależne instancje bazy mysql?

: 09 października 2010, 14:05
autor: Pacek
Bastian. Absolutnie nie mam uwag do Twojego pomysłu. Wg mnie jest ok. Mam tylko taką kwestię - czemu w pierwszych dwóch punktach nie wykorzystać bardzo dobrego narzędzia MySQL'a o nazwie mysqlhotcopy? Nie wymaga ono zatrzymania serwera SQL a na dodatek robi lokalną kopię wybranych baz danych (w obrębie tej samej maszyny).

: 09 października 2010, 16:41
autor: Bastian
A nie wiem, zapomniałem o tym narzędziu, być może dlatego, że rzadko go używałem. Ale jasne, można przez mysqlhotcopy.

: 10 października 2010, 17:03
autor: sector
Tak z ciekawości, czy ten sposób z dowiązaniem folderu faktycznie nie działa, czy może twórca tematu coś złe zrobił?

: 10 października 2010, 18:12
autor: Bastian
Nie wiem, ale skoro działa ze skopiowaniem to nie ma prawa nie działać z dowiązaniem.

: 10 października 2010, 18:37
autor: fnmirk
Opcja z przeniesieniem katalogu, na inną partycję, i z dowiązaniem działa. Dość często z niej korzystam w różnych sytuacjach. Działa nawet dla wersji livecd Linuksa. Można przenosić katalogi na partycje fizyczne wykonując dowiązania w wirtualnej przestrzeni dostępnej dla livecd.
Jeżeli zapewnimy ciągłość zasilania i nie będziemy restartować systemu to uzyskujemy system porównywalny z tym zainstalowanym na dysku. Można usuwać i dodawać wszystkie programy z wyjątkiem tych co wymagają restartu systemu i nie można zmienić wersji jądra. To tak trochę poza tematem.