QA - Aria Recovery
Contents
Principi generali
Il recupero viene testato tramite il Random Query Generator, che causa un carico di lavoro casuale sul server, per poi usare kill -9 per terminare il processo. Dopodiché tenta il recupero sia con maria_read_log
, sia riavviando il processo mysqld
. Una volta avviato il server, le tabelle vengono verificate in vari modi, tra cui ALTER|OPTIMIZE|ANALYZE|REPAIR TABLE
e alcune query SELECT
che rileggono le tabelle, oltre a diversi altri metodi di accesso.
In una combinazione di file .CC
chiamata lp:randgen/conf/engines/maria/maria_recovery.cc
vengono definite varie opzioni di mysql
e parametri dell'RQG che hanno effetto sul recupeto. Poi lo script combinations.pl
dell'RQG viene utilizzato per eseguire centinaia di test individuali. Ogni esecuzione usa una permutazione casuale delle impostazioni nel file .CC
per poter generare un carico di lavoro univoco che viene poi validato dal Reporter RQG Recovery
.
Test individuali
I singoli test o esecuzioni di test che devono essere completati o creati per assicurarsi che il recupero di Aria sia solido, sono i seguenti.
Il test standard kill -9
Fatto il 28-02-2011 Il test standard conf/engines/maria/maria_recovery.cc
passa senza fallimenti quando esegue centinaia di tentativi.
Testing con blocchi di piccole dimensioni
In attesa di 2 bug fix relativi a --maria-block-size=1K e --maria-block-size=2K
Testing con la cache delle pagine di piccole dimensioni
Fatto il 04-03-2011 Completati 400 round con
'--mysqld=--maria-block-size=4K --mysqld=--maria-pagecache-buffer-size=128K', '--mysqld=--maria-block-size=16K --mysqld=--maria-pagecache-buffer-size=256K', '--mysqld=--maria-block-size=32K --mysqld=--maria-pagecache-buffer-size=512K'
Due crash pre-recupero sono stati registrati, nessun incidente nel recupero.
Killing and restarting the recovery process itself
In Progress
The AriaDoubleRecovery reporter currently attempts doble recovery via maria_read_log. The first invocation of maria_read_log is killed halfway through the process and the second invocation is left to complete the recovery.
Future testing will involve doing the same with the mysqld server in place of maria_read_log.
Another realistic workload
The usefullness of the SMF workload, derived from the SimpleMachines forum application means that another such workload is required in order to make sure no residual recovery bugs remain. Hopefully something can be cooked up using Wikipedia so that longer fields and blobs are exercised.
Transactional consistency
A transactional grammar that simulates transactions using LOCK TABLEs is required. The RecoveryConsistency Reporter can then be used to validate that no partial transactions appear in the database after recovery.