Перейти к содержимому
Калькуляторы
5 часов назад, alibek сказал:

А ведь и правда, нужно было проверить.

Как же это я не подумал.

Ладно, значит будет предварительным подарком на новый год.

 С иннодб у меня не сложилось, а бакапы исам вполне устраивают. Да и лечится всё это безболезнее для юзеров. Откатить платежи в новогоднюю ночь - невозможно, все мои банки клиентов в это время празднуют... Просто было иннодб - после одного из крахов утомился чинить. Откатился на исам, пока живой....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

21 час назад, alibek сказал:

Это как раз про MySQL, по крайней мере классический (5.x).

Если уж хочется эту СУБД использовать. то лучше смотреть на MariaDB.

mariadb это же форк mysql. нет смысла их считать разными СУБД, они даже бинарно совместимы друг с другом https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/

И отличия-то в основном лицензионного характера. Короче, для меня это одно и тоже. В будущем, возможно, они сильно разойдутся, но пока нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ИМХО MariaDB стабильнее и приятных плюшек больше.

И по ощущениям работает лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

15 часов назад, s.lobanov сказал:

mariadb это же форк mysql. нет смысла их считать разными СУБД, они даже бинарно совместимы друг с другом https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/

И отличия-то в основном лицензионного характера. Короче, для меня это одно и тоже. В будущем, возможно, они сильно разойдутся, но пока нет

поставил я как-то с годик-полтора назад эту марию-дб, какой-то софт у меня ее захотел вместо mysql.

ну и после установки даю ей из её же архива файлик my.cnf, кушай на здоровье.

а она и говорит "не знаю я таких ключей, что у вас там понаписаны".

великие разработчики марии стырили форкнули дистриб у mysql, код попереписали, а конфиги оставили оригинальными. хорошие разработчики, внимааательные... код, наверно, так же качественно переписан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

19 часов назад, YuryD сказал:

бакапы исам вполне устраивают

Чем делаете? Mysql-dump знаю, но это не совсем то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Navicat Premium по моему достаточно удобная программа

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, Andrei сказал:

Mysql-dump знаю, но это не совсем то

А чем именно не то?

Работает быстро, консистентность обеспечивает.

Можно еще остановить mysqld и бэкапить (а лучше снэпшотить) файлы данных, но это не всегда приемлемо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Полнота бэкапа не обеспечивается если база под нагрузкой. Конечно бэкапим тот же биллинг часа в 4 ночи, когда нагрузки почти нет, но все равно какой-нибудь радиус-аккаунтинг корректно не забэкапится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну можно ещё попробовать снэпшотить файлы данных без остановки сервера - на MyISAM это должно сработать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

9 минут назад, alibek сказал:

снэпшотить

Поясните. Просто налету копировать базы тут же куда-нить в сторонку, а потом уже потихоньку слить например по ftp на другой сервер? У меня правда innodb и там, как я понимаю, рядом с базой лежат приличные по размеру файлы журнала транзакций вида ib_logfile0, ib_logfile1, ib_logfile2 - тоже надо копировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Andrei Вероятно, подразумеваются моментальные снимки файловой системы, вроде функционала ZFS или btfrs

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, я имел ввиду файловую систему типа ZFS или специализированный SAN, в них как правило есть поддержка снэпшотов.

А вот файлы innodb я бы не рискнул копировать (без остановки сервера), так как для транзакционного движка моментальный снимок не гарантирует консистентность.

Для транзакционных СУБД есть специальный механизм снэпшотов в SAN, не знаю как он реализован в деталях, но эта функция лицензируемая и недешевая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 часов назад, alibek сказал:

- на MyISAM это должно сработать.

сработает в виде битой полузаписанной базы, как при отключении питания :)

 

базу нужно готовить для снэпшота (flush tables). и тогда пофиг - хоть иннодб хоть еще что. а без этого - разломанные полузаписанные таблицы вместо бэкапа.

 

ну и да, у mysqldump есть ключик --single-transaction

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В случае с иннодб самый простой вариант - ставить мастер-слейв и делать бэкапы останавливая слейв.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 08.01.2019 в 22:29, s.lobanov сказал:

 

И отличия-то в основном лицензионного характера. Короче, для меня это одно и тоже. В будущем, возможно, они сильно разойдутся, но пока нет

Это давно уже не так. В конфигах уже несовместимая разбежка, по фичам тоже уже второй год несовместимости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

9 часов назад, NiTr0 сказал:

у mysqldump есть ключик --single-transaction

Это тоже в курсе. По итогу пришли к варианту:

nice -n 15 mysqldump -u _user_ -p_pasword_ --quick --single-transaction --force --create-options --add-drop-table --routines --databases billing | gzip > "/vol1/LB/lb.`date +\%Y\%m\%d`.sql.gz"

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 09.01.2019 в 14:02, Andrei сказал:

Чем делаете? Mysql-dump знаю, но это не совсем то.

mysqlhotcopy. жадные люди, но с хекседитором оно становится вполне лицензионной на века и бесплатно. Я -  не хакер :)

 

P.S. - Она давно была платной, сейчас вроде бесплатна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Бэкапил InnoDB базу ЛанБиллинг указанным тут 

Биллинг стоит на очень старом выделенном сервере с дебианом. Хочу перенести в виртуалку. Сделал дамп диска с выделенного сервера, развернул на его основе виртуалку.

Пытаюсь развернуть на виртуалке свежий бэкпап базы и получаю:

root@lb:~# mysql -u root -pхххххххххх billing < lb.20190531.sql
ERROR 2013 (HY000) at line 1540: Lost connection to MySQL server during query

root@lb:~# mysql -u root -pхххххххххх billing < lb.20190531.sql
ERROR 2013 (HY000) at line 2236: Lost connection to MySQL server during query

Номер проблемной строки всякий раз разный.

Что-то делаю не так? Какой best practice в этом вопросе?

Или проще остановить ночью биллинг и  mysql на старом сервере и забрать файлы баз простым копированием каталога /var/lib/mysql?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

--skip-extended-insert может попробовать?

мускл то подтюнили? если там иннодб, то имеет смысл задрать буферпул на время влития дампа.

net_read_timeout / wait_timeout еще подкрутить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 минуты назад, zhenya` сказал:

--skip-extended-insert может попробовать?

При снятии дампа на старом сервере? или при развертывании на новом?

 

2 минуты назад, zhenya` сказал:

мускл то подтюнили?

Поскольку виртуалка сделана на базе дампа с диска старого сервера, то и мускул получился идентичным.

3 минуты назад, zhenya` сказал:

если там иннодб, то имеет смысл задрать буферпул на время влития дампа.

net_read_timeout / wait_timeout еще подкрутить.

net_read_timeout - наверное вряд ли критично? т.к. бэкап вливается не по сетке, а локально.

Все остальное  "крутить в какую сторону"? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

--skip-extended-insert для mysqldump конечно.

 

mysql это клиент mysqld, который работает скорее всего через unix socket. чем это не сеть? конечно крутить в большую сторону.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Памяти на виртуалке 8 гиг

root@lb:~# free
             total       used       free     shared    buffers     cached
Mem:       8310032    4667192    3642840     177972     107464    2848264
-/+ buffers/cache:    1711464    6598568
Swap:      2096124          0    2096124

Но больше чем

innodb_buffer_pool_size = 2G
сделать не удалось. При попытке поставить хотя бы 3 или 4:

 

190602 13:24:10 InnoDB: Initializing buffer pool, size = 3.0G
InnoDB: mmap(3263692800 bytes) failed; errno 12
190602 13:24:10 InnoDB: Completed initialization of buffer pool
190602 13:24:10 InnoDB: Fatal error: cannot allocate memory for the buffer pool

 

Остальные таймауты поставил

net_read_timeout=180
wait_timeout=31536000
 

Пока без положительного результата.

 

PS. --skip-extended-insert для mysqldump пока не делал, днем как-то не решился снимать дамп со старой базы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, Andrei сказал:

Что-то делаю не так? Какой best practice в этом вопросе?

попробуйте конфиг мускуля со старого сервера закинуть. ну и логгирование включите, если не поможет.

 

как вариант куда покопать:

query_cache_limit
query_cache_size

innodb_log_file_size
innodb_log_buffer_size

 

по поводу pool size - попробовать покрутить kernel.shmmax и kernel.shmall (второе - в 4к страницах, не байтах!)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У него поди остальные параметры влияющие на память не очень оптимально настроены. Натрави mysqltuner.pl и покажи вывод?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 часа назад, zhenya` сказал:

mysqltuner.pl

на новом сервере:

root@lb:~# mysqltuner

 >>  MySQLTuner 1.3.0 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
[OK] Logged in using credentials from debian maintenance account.
[OK] Currently running supported MySQL version 5.5.62-0+deb8u1
[!!] Switch to 64-bit OS - MySQL cannot currently use all of your RAM

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[--] Data in InnoDB tables: 1G (Tables: 4072)
[--] Data in MyISAM tables: 2G (Tables: 2122)
[!!] Total fragmented tables: 4072

-------- Security Recommendations  -------------------------------------------
[!!] User 'billing@%' has no password set.

-------- Performance Metrics -------------------------------------------------
[--] Up for: 7h 57m 56s (72K q [2.540 qps], 2K conn, TX: 1M, RX: 4B)
[--] Reads / Writes: 32% / 68%
[--] Total buffers: 2.2G global + 6.3M per thread (70 max threads)
[!!] Allocating > 2GB RAM on 32-bit systems can cause system instability
[!!] Maximum possible memory usage: 2.6G (33% of installed RAM)
[OK] Slow queries: 0% (1/72K)
[OK] Highest usage of available connections: 5% (4/70)
[OK] Key buffer size / total MyISAM indexes: 128.0M/1.3G
[OK] Key buffer hit rate: 100.0% (79M cached / 2K reads)
[!!] Query cache efficiency: 4.3% (188 cached / 4K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 2 sorts)
[OK] Temporary tables created on disk: 20% (55 on disk / 271 total)
[OK] Thread cache hit rate: 99% (4 created / 2K connections)
[!!] Table cache hit rate: 0% (24 open / 14K opened)
[OK] Open file limit used: 2% (44/2K)
[OK] Table locks acquired immediately: 100% (9K immediate / 9K locks)
[OK] InnoDB buffer pool / data size: 2.0G/1.1G
[OK] InnoDB log waits: 0
-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    MySQL started within last 24 hours - recommendations may be inaccurate
    Enable the slow query log to troubleshoot bad queries
    Increase table_open_cache gradually to avoid file descriptor limits
    Read this before increasing table_open_cache over 64: http://bit.ly/1mi7c4C
Variables to adjust:
    query_cache_limit (> 1M, or use smaller result sets)
    table_open_cache (> 256)

"User 'billing@%' has no password set."

Это гониво какое-то:

root@lb:~# mysql billing -u billing -p;
Enter password:
ERROR 1045 (28000): Access denied for user 'billing'@'localhost' (using password: NO)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.