Basicamente, o comando mysqldump que você pode usar é:
mysqldump -u$user -p$pass -S $socket --all-databases > db_backup.sql
Isso incluirá o banco de dados mysql, que terá todas as tabelas de usuários/privs.
Há desvantagens em executar isso em um sistema de produção, pois pode causar bloqueio. Se suas tabelas forem pequenas o suficiente, isso pode não ter um impacto significativo. Você vai querer testá-lo primeiro.
No entanto, se você estiver executando um ambiente InnoDB puro, poderá usar o
--single-transaction
sinalizador que criará o dump em uma única transação (obtê-lo), evitando assim o bloqueio no banco de dados. Observe que existem casos de canto em que o FLUSH TABLES
inicial comando executado pelo dump pode bloquear as tabelas. Se for esse o caso, mate o dump e reinicie-o. Eu também recomendo que, se você estiver usando isso para fins de backup, use o --master-data
sinalizador também para obter as coordenadas do log binário de onde o despejo foi feito. Dessa forma, se você precisar restaurar, poderá importar o arquivo de despejo e usar o mysqlbinlog
comando para reproduzir os arquivos de log binários da posição em que esse dump foi obtido.