Upgrade bazy danych mySQL
Utworzenie struktury katalogów
Poniższe instrukcje dotyczą partycji dla beadm. Wykonanie na zapas. Być może prościej jest po prostu wykonac zfs rename:
zfs rename
zfs rename sys/data/v/db/mysql sys/data/v/db/mysql56
Utworzenie hierarchi katalogów
zfs create -o compress=off -o recordsize=8k sys/data/v/db/mysql56
zfs create -o primarycache=metadata -o recordsize=16k sys/data/v/db/mysql56/ibdata
zfs create -o primarycache=metadata -o recordsize=128k -o compress=lz4 sys/data/v/db/mysql56/logs
zfs create -o compress=off -o recordsize=8k -o exec=off sys/data/v/tmp/mysql
Wykonanie backupu obecnych baz
Przed przystąpieniem do procesu upgrade-ukonieczne jest wykonanie backupu wszystkich baz danych w celu późniejszego "wgrania" do nowego serwera. Wg dokumentacji mySQL upgrade (plików binarnych) powinien poprawnie wczytać obecne bazy danych. Niemniej mogą one (bazy) wymagać uruchomienia poleceń REPAIR TABLE w wybranych przypadkach. W ostateczności wgranie backupu od początku zaowocuje sukcesem.
Usunięcie dotychczasowej wersji
pkg delete mysql55-server mysql55-client
Zainstalowanie nowej wersji
Za pomocą własnego repozytorium skryptów należy zainstalować nową wersję:
pkg install -y mysql56-server
zmiany w rc.conf
W pliku startowym /etc/rc.conf należy utawić nastęujące zmienne:
mysql_enable="YES"
mysql_dbdir="/var/db/mysql56"
mysql_upgrade
Po zainstalowaniu nowej wersji mySQL należy wykonać polecenie:
mysql_upgrade --user=root --password=password
Wgranie backupów
Warto skorzystać ze wskazówek dotyczących szybkiego odzyskiwania backupów. Należy odzyskać kolejne bazy danych.
Upgrade do wersji 5.7
Upgrade z ostatniej wersji 5.6.x do najnowszej wersji 5.7.x przebiega poprawnie. Tzn. zgodnie z dokumentacją binarne pliki baz danych powinny zachować się poprawnie, niemniej warto mieć backup przez wykonaniem aktualizacji.
Probemy z buforem dla InnoDB
Po wykonaniu aktualizacji serwer bazy danych nie chce się uruchomić. W logach widać problem z "buffer pool". Na podstawie informacji znalezionych w sieci internet należy zmodyfikować my.cnf:
innodb_buffer_pool_load_at_startup = 0
innodb_buffer_pool_dump_at_shutdown = 1
Po wykonaniu restartu można wustawić docelowe wartości zmiennych:
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
mysql_upgrade
Po wykonaniu aktualizacji, zalecane jest uruchomienie narzędzia mysql_upgrade. W niektórych przypadkach może ono powodować błędy (nie pechodzi etapu mysqlcheck), dlatego też można wykonać polecenie ograniczające do tabel systemowych:
mysql_upgrade -s --user=root --password=password
mysqlcheck
Uruchoemienie narzędzia mysql powoduje przejście po wszystkich katalogach w ramach bazy. Tak więc do sprawdzania może załapać się katalog nieistniejąca bazy danych RCS. Tak więc sprawdzanie baz danych najlepiej wywołać poprzez:
mysqlcheck --all-databases --skip-database=RCS --user=root --password=password
Konieczny restart serwera baz danych
Po wykonaniu mysql_upgrade oraz mysqlcheck należy wykonać restart bazy danych. W przciwnym przypadku mogą pojawiać się dziwne błędy np. w mysql_check NAGIOSa.
Modyfikacja uprawnień dla bazy danych sys
Po aktualizacji pojawiły się porblemy z wykonywaniem backupu bazy danych sys - brak uprawnień dla użytkownika wykonującego backup. Rozwiązaniem jest:
GRANT USAGE ON *.* TO 'user'@'localhost';
GRANT SHOW VIEW ON *.* TO 'user'@'localhost';
GRANT EXECUTE ON *.* TO 'user'@'localhost';
flush privileges;
Źródła w sieci internet
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
