Non sono un esperto di MySQL.C'è un buon modo per rilevare che MySQL è "pronto?"
Ho uno script che installa MySQL, inizia mysqld
e quindi utilizza mysql
per eseguire l'inizializzazione.
Attualmente, al fine di avere questo lavoro, io entro in un ciclo che (scusa per il pseudocodice miscelazione più lingue): (!)
mysqld_safe /* ... */ & /* ampersand to start in background so we can continue */
while(fileDoesNotExist("/tmp/mysql.sock")) {
sleepFor100ms();
}
mysql -u root /* and so forth */ initialize.sql
Questo sembra funzionare, ma ha molteplici problemi:
- polling odori divertente,
- non sono abbastanza su MySQL intelligente per sapere se guardare quel percorso hard-coded
/tmp/mysql.sock
è intelligente a tutti.
eppure è molto più facile che cercare di (ad esempio) consumano e analizzare lo stdout (o è stderr?) Di mysqld_safe
per capire se il server è stato avviato.
La mia domanda ristretta è se c'è un modo per emettere un inizio blocco di mysqld
: posso rilasciare qualsiasi comando che blocchi fino a quando il database non è stato avviato, quindi esce (e stacca, forse lasciando un file PID) e ha un compagno stop command? (O forse mi permette di leggere il file PID ed emettere il mio SIGTERM?)
La mia domanda più ampia è, sono sulla buona strada, o c'è qualcosa di totalmente diverso e più facile (essere "più semplice" per me dovrebbe essere leggero, non mi interessa l'installazione di una serie di strumenti come Puppet o DbMaintain/Liquibase o altro) per risolvere il problema che ho articolato? Cioè, a partire da un file .gz
contenente MySQL, installare un dominio utente MySQL e inizializzare un database?
Non c'è bisogno di essere o non essere un esperto per fare una domanda qui. – tadman
Grazie per l'accoglienza.Ho solo pensato che sarebbe stato utile per il contesto, quindi la gente non avrebbe parlato in testa. :) –
Sarebbe [il polling per vedere se esiste un file] (http://stackoverflow.com/questions/2379829/while-loop-to-test-if-a-file-exists-in-bash) essere un passo avanti la giusta direzione? – tadman