Jump to content
Калькуляторы

тюнинг mysql под windows

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

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

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

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

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

Share this post


Link to post
Share on other sites
21 час назад, alibek сказал:

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
15 часов назад, s.lobanov сказал:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
19 часов назад, YuryD сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 час назад, Andrei сказал:

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
9 минут назад, alibek сказал:

снэпшотить

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
10 часов назад, alibek сказал:

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 08.01.2019 в 22:29, s.lobanov сказал:

 

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

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

Share this post


Link to post
Share on other sites
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"

 

Share this post


Link to post
Share on other sites
В 09.01.2019 в 14:02, Andrei сказал:

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

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

 

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

Share this post


Link to post
Share on other sites

Бэкапил 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?
 

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
2 минуты назад, zhenya` сказал:

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

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

 

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Памяти на виртуалке 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 пока не делал, днем как-то не решился снимать дамп со старой базы.

Share this post


Link to post
Share on other sites
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к страницах, не байтах!)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now