Я вижу в mysqlcheck руководстве, что существует опция для - таблицы, который переопределяет ту опцию баз данных, но это не хорошо объяснено.
Я пытаюсь выполнить mysqlcheck-o, и я хочу, чтобы он оптимизировал определенную таблицу, которая существует в каждой базе данных, но только той таблице.
** Я думаю, что не мог быть достаточно ясным
У меня есть 250 баз данных, что все содержат таблицу api_log. Я хочу выполнить единственную команду, которая оптимизирует просто таблицу api_log, но на каждой базе данных, которую имеет mysql сервер.
Например:
mysqlcheck -o --tables api_log -A
Очевидно, этот определенный отрывок не будет работать, но он выражает то, что я хотел бы выполнить. Я не хочу оптимизировать каждую таблицу в каждой базе данных, всего одна таблица, которая существует во всех 250 базах данных.
Можно оптимизировать одну таблицу следующим образом :
mysqlcheck -u root -o database_name table_name
т.е. оптимизировать таблицу 'user' базы данных 'mysql'.
$ mysqlcheck -u root -o mysql user
mysql.user OK
edit
Для случая, когда у вас сотни баз данных; вы можете скриптировать эту процедуру как
table_name='api_log'
mysql -NB -u root -e 'show databases' | while read db_name
do
if mysql -NB -u root "$db_name" -e 'show tables' | egrep -wq "$table_name"; then
echo "Optimizing $db_name.$table_name"
mysqlcheck -u root -o "$db_name" "$table_name"
fi
done
, которая будет перемещаться по всем базам данных и проверять, есть ли у любой из них имя таблицы с именем 'api_log', если оно есть, то вы можете оптимизировать ее.
.