Архив

Архив раздела ‘mysql’

Оптимизация myisam таблицы при помощи myisamchk

26 Декабрь 2012 Comments off

Для оптимизации myisam таблицы можно использовать команду optimize table или утилиту myisamchk:

myisamchk -r table_name

если при этом выдается ошибка myisamchk: error: myisam_sort_buffer_size is too small, то увеличиваем размер буфера:

myisamchk --sort_buffer_size=2G -r table_name

Categories: mysql

Дампим данные из mysql на другой сервер через ssh

28 Сентябрь 2012 Comments off

Есть типичная задача: сдампить таблицу и перенести ее на другой сервер (например, для бэкапа). Сделать это просто — сначала дампим данные в файл, потом архивируем его (если файл большой), копируем на целевой серврер при помощи scp и там разархивируем. Но это все занимает время. Можно сделать все в одну команду:

 mysqldump -ppass db table  | gzip -c | ssh user@target_server «gunzip -c — > /data/backup/table.sql»

здесь мы дампим таблицу table базы db, передаем ее на сервер  target_server и разархивируем в файл  /data/backup/table.sql. Если разархивировать не нужно, то команда немного изменится:

 mysqldump -ppass db table | gzip -c | ssh user@target_server «cat — > /data/backup/table.sql.gz»

Categories: mysql

Первый день месяца на mysql

3 Сентябрь 2012 Comments off

Чтобы получить первый день текущего месяца на mysql, поможет следующий запрос:

 

 select DATE_SUB(curdate(),INTERVAL DAYOFMONTH(curdate())-1 DAY)

 

 

Categories: mysql

Размер таблицы в БД Mysql (данные и индексы)

15 Август 2012 Comments off

Узнать размер таблицы (в байтах, данные+индексы) table в базе db можно в таблице TABLES базы INFORMATION_SCHEMA:

select data_length+index_length from information_schema.tables where table_name=’table’ and table_schema=’db’

Чтобы отсортировать таблицы по размеру, можно использовать следующий запрос:

select table_name,data_length+index_length as len from information_schema.tables order by len desc

если таблицы большие, то удобнее размер выводить в гигабайтах (возьмем первые 20 таблиц):

select table_name,round((data_length+index_length)/1024/1024/1024,2) as len from information_schema.tables order by len desc limit 20

Categories: mysql

репликация в MySql

22 Сентябрь 2009 Нет комментариев

Чтобы поднять master-slave репликацию в mysql нужно проделать следующее. Если на мастере уже есть какие-то данные, нужно их скопировать (файлы либо при помощи mysqldump) при этом запомнив значения File и Position, соответствующие дампу. Посмотреть их можно командой

mysql> show master status;

На мастере:
1) включить бинлоги, прописать server-id=1. Для этого в файл конфигурации mysql (my.cnf) добавить:

log_bin = /var/log/mysql/mysql-bin.log
server-id = 1

2) создать пользователя, от имени которого будет происходить репликация, наделив его соответствующими правами:

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’192.168.0.2’ IDENTIFIED BY ‘password’;

(192.168.0.2 — адрес слейва)
На слейве:
1) прописать server-id, отличный от мастера (в файл my.cnf)

server-id = 2

2) перезапустить mysql и указать параметры для подключения к мастеру командой

mysql> change master to MASTER_HOST=’192.168.0.1′,MASTER_USER=’repl’,MASTER_PASSWORD=’password’,MASTER_LOG_FILE=’mysql-bin.002990′,MASTER_LOG_POS=2864343;

(192.168.0.1 — адрес мастера)

Categories: mysql