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


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

UpgradeMysql (ostatnio edytowane 2019-06-16 23:20:52 przez wtps0n)