Если заканчивается место на разделе с базами данных, вы можете посмотреть какие базы занимают много места.
Обычно это ecss_calls_db, ecss_audit, ecss_statistics.
Посмотреть размер базы можно через ОС командой:
В операционной системе командой:
sudo du -h /var/lib/ecss-mysql
ecss1> sudo du -h /var/lib/ecss-mysql 220K /var/lib/ecss-mysql/ecss_system 2.1M /var/lib/ecss-mysql/web_conf 28M /var/lib/ecss-mysql/ecss_address_book 1.1M /var/lib/ecss-mysql/ecss_dialer_db 220K /var/lib/ecss-mysql/ecss_numbers_db 6.3G /var/lib/ecss-mysql/ecss_statistics 112K /var/lib/ecss-mysql/history_db 57M /var/lib/ecss-mysql/ecss_meeting_db 9.4G /var/lib/ecss-mysql/ecss_audit 12G /var/lib/ecss-mysql/ecss_calls_db 26M /var/lib/ecss-mysql/ecss_subscribers 24G /var/lib/ecss-mysq
- Или внутри mysql командой
SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "Real Size in MB", sum(data_free)/1024/1024 "Free data", sum(data_length + data_free + index_length)/1024/1024 "Size on Filesystem" FROM information_schema.TABLES GROUP BY table_schema;
mysql> SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "Real Size in MB", sum(data_free)/1024/1024 "Free data", sum(data_length + data_free + index_length)/1024/1024 "Size on Filesystem" FROM information_schema.TABLES GROUP BY table_schema; +--------------------+-----------------+---------------+--------------------+ | database_name | Real Size in MB | Free data | Size on Filesystem | +--------------------+-----------------+---------------+--------------------+ | ecss_address_book | 9.09375000 | 8.00000000 | 17.09375000 | | ecss_audit | 3982.21875000 | 5455.00000000 | 9437.21875000 | | ecss_calls_db | 4846.84375000 | 6677.50000000 | 11699.02343750| | ecss_dialer_db | 0.45312500 | 0.00000000 | 0.45312500 | | ecss_meeting_db | 45.79687500 | 6.00000000 | 51.79687500 | | ecss_numbers_db | 0.03125000 | 0.00000000 | 0.03125000 | | ecss_statistics | 5898.81250000 | 5.00000000 | 5903.81250000 | | ecss_subscribers | 16.07812500 | 4.00000000 | 20.07812500 | | ecss_system | 0.03125000 | 0.00000000 | 0.03125000 | | history_db | 0.01562500 | 0.00000000 | 0.01562500 | | information_schema | 0.15625000 | 80.00000000 | 80.15625000 | | mysql | 3.10166645 | 4.00092316 | 7.10258961 | | performance_schema | 0.00000000 | 0.00000000 | 0.00000000 | | sys | 0.01562500 | 0.00000000 | 0.01562500 | | web_conf | 0.59375000 | 0.00000000 | 0.59375000 | +--------------------+-----------------+---------------+--------------------+ 15 rows in set (0.02 sec)
В таблице мы имеем 3 значения размеров.
- Real size in MB - это полезные данные.
- Free data - пустое место "между" полезными данными. Оттуда ранее была удалена информация, у которой истек срок хранения.
- Size on filesystem - реально занимаемоем место на диске. Это сумма "Real size in MB" и " Free data"
Чтобы освободить место на диске, не обязательно удалять реальные данные из таблицы, ее можно оптимизировать (передвинуть данные, что бы они шли подряд,без разрывов т.е пустых мест).
В mysql нельзя просто выполнить оптимизацию БАЗЫ, можно выполнить оптимизацию таблиц, поэтому, нужно узнать, какие таблицы содержат "разрывы", пустые места.
Для примера возьмем базу ecss_calls_db
Воспользуемся командой:
SELECT table_name,data_free/1024/1024 "Free data",sum(index_length/1024/1024+data_length/1024/1024) "Real_size in MB" from information_schema.TABLES where table_schema = 'ecss_calls_db' group by table_name;
mysql> select table_name,data_free/1024/1024 "Free data",sum(index_length/1024/1024+data_length/1024/1024) "Real_size in MB" from information_schema.TABLES where table_schema = 'ecss_calls_db' group by table_name; +-------------+---------------+-----------------+ | table_name | Free data | Real_size in MB | +-------------+---------------+-----------------+ | cdr | 3244.50000000 | 2282.33593750 | | counters | 0.00000000 | 0.01562500 | | data | 0.00000000 | 0.01562500 | | inodes | 0.00000000 | 0.04687500 | | ss | 98.00000000 | 54.96093750 | | tolltickets | 3332.00000000 | 2684.07031250 | | tree | 0.00000000 | 0.04687500 | | tree_view | NULL | NULL | | variables | 0.00000000 | 0.01562500 | | version | 0.00000000 | 0.01562500 | +-------------+---------------+-----------------+ 10 rows in set (0.00 sec)
Отсюда можно увидеть, что всего 2 таблицы имеют "пустоты", и только для них необходима оптимизация.
Выполним оптимизацию таблицы cdr командой
optimize table ecss_calls_db.cdr;
mysql> optimize table cdr; +-------------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------------+----------+----------+-------------------------------------------------------------------+ | ecss_calls_db.cdr | optimize | note | Table does not support optimize, doing recreate + analyze instead | | ecss_calls_db.cdr | optimize | status | OK | +-------------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (2 min 18.51 sec)
Даже если и написано, что таблица не поддерживает оптимизацию, реальные данные после оптимизации всеравно будут упорядочены и последовательны, без промежутков.
Проверим, остались ли пустоты в таблице cdr командой:
SELECT table_name,data_free/1024/1024 "Free data",sum(index_length/1024/1024+data_length/1024/1024) "Real_size in MB" from information_schema.TABLES where table_schema = 'ecss_calls_db' group by table_name;
mysql> select table_name,data_free/1024/1024 "Free data",sum(index_length/1024/1024+data_length/1024/1024) "Real_size in MB" from information_schema.TABLES where table_schema = 'ecss_calls_db' group by table_name; +-------------+---------------+-----------------+ | table_name | Free data | Real_size in MB | +-------------+---------------+-----------------+ | cdr | 5.00000000 | 2107.65625000 | | counters | 0.00000000 | 0.01562500 | | data | 0.00000000 | 0.01562500 | | inodes | 0.00000000 | 0.04687500 | | ss | 98.00000000 | 54.96093750 | | tolltickets | 3332.00000000 | 2684.07031250 | | tree | 0.00000000 | 0.04687500 | | tree_view | NULL | NULL | | variables | 0.00000000 | 0.01562500 | | version | 0.00000000 | 0.01562500 | +-------------+---------------+-----------------+
Далее, optimize можно выполнить и с другими таблицами