RelaxДом

RelaxДом (https://forum.relaxdom.net/index.php)
-   Gentoo Linux (https://forum.relaxdom.net/forumdisplay.php?f=380)
-   -   Как правильно поставить производительный MySQL сервер (https://forum.relaxdom.net/showthread.php?t=53020)

BIT 07.04.2009 00:13

Как правильно поставить производительный MySQL сервер
 
  1. Приведем в порядок CFLAGS(обьяснял как в соседней теме с Nginx + PHP)
  2. Выкинем из флагов все лишнее
    Код:

    echo "dev-db/mysql -berkdb perl -ssl -big-tables -cluster -debug -embedded -extraengine -latin1 -max-idx-128 -minimal -selinux static" >> /etc/portage/package.use
  3. Компилим
    Код:

    emerge dev-db/mysql
  4. Приступаем к самой ответственной части - настройке конфига(/etc/mysql/my.cnf):
    Код:

    # /etc/mysql/my.cnf: The global mysql configuration file.
    # $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/files/my.cnf-4.1,v 1.3 2006/05/05 19:51:40 chtekk Exp $

    # The following options will be passed to all MySQL clients
    [client]
    port                                            = 3306
    socket                                          = /var/run/mysqld/mysqld.sock

    [mysql]
    character-sets-dir=/usr/share/mysql/charsets
    default-character-set=utf8

    [mysqladmin]
    character-sets-dir=/usr/share/mysql/charsets
    default-character-set=utf8

    [mysqlcheck]
    character-sets-dir=/usr/share/mysql/charsets
    default-character-set=utf8

    [mysqldump]
    character-sets-dir=/usr/share/mysql/charsets
    default-character-set=utf8

    [mysqlimport]
    character-sets-dir=/usr/share/mysql/charsets
    default-character-set=utf8

    [mysqlshow]
    character-sets-dir=/usr/share/mysql/charsets
    default-character-set=utf8

    [myisamchk]
    character-sets-dir=/usr/share/mysql/charsets

    [myisampack]
    character-sets-dir=/usr/share/mysql/charsets

    # use [safe_mysqld] with mysql-3
    [mysqld_safe]
    err-log                                        = /var/log/mysql/mysql.err

    # add a section [mysqld-4.1] or [mysqld-5.0] for specific configurations
    [mysqld]
    log                            = /var/log/mysql_full.log
    character-set-server            = utf8
    default-character-set          = utf8
    user                            = mysql
    port                            = 3306
    socket                          = /var/run/mysqld/mysqld.sock
    pid-file                        = /var/run/mysqld/mysqld.pid
    log-error                      = /var/log/mysql/mysqld.err
    basedir                        = /usr
    datadir                        = /var/lib/mysql
    skip-locking
    key_buffer                      = 250M
    max_allowed_packet              = 20M
    table_cache                    = 5056
    sort_buffer_size                = 10M
    net_buffer_length              = 64K
    read_buffer_size                = 5M
    read_rnd_buffer_size            = 512K
    myisam_sort_buffer_size        = 80M
    language                        = /usr/share/mysql/english

    set-variable = query_cache_size=1500M
    set-variable = key_buffer_size=300M
    set-variable = table_cache=5056
    set-variable = sort_buffer_size=40M
    set-variable = read_buffer_size=8M
    set-variable = tmp_table_size=500M

    thread_cache_size = 20
    thread_cache = 20
    join_buffer_size = 5M
    query_cache_limit = 25M

    max_connections = 1024

    #Не скидывать лог на диск при commit
    innodb_flush_log_at_trx_commit=2


    #log-bin
    server-id                                      = 1

    # point the following paths to different dedicated disks
    tmpdir                                          = /tmp/
    #log-update                            = /path-to-dedicated-directory/hostname

    # you need the debug USE flag enabled to use the following directives,
    # if needed, uncomment them, start the server and issue
    # #tail -f /tmp/mysqld.sql /tmp/mysqld.trace
    # this will show you *exactly* what's happening in your server ;)

    #log                                            = /tmp/mysqld.sql
    #gdb
    #debug                                          = d:t:i:o,/tmp/mysqld.trace
    #one-thread

    # uncomment the following directives if you are using BDB tables
    #bdb_cache_size                        = 4M
    #bdb_max_lock                          = 10000

    # the following is the InnoDB configuration
    # if you wish to disable innodb instead
    # uncomment just the next line
    #skip-innodb
    #
    # the rest of the innodb config follows:
    # don't eat too much memory, we're trying to be safe on 64Mb boxes
    # you might want to bump this up a bit on boxes with more RAM
    innodb_buffer_pool_size = 45M
    # this is the default, increase it if you have lots of tables
    innodb_additional_mem_pool_size = 8M
    #
    # i'd like to use /var/lib/mysql/innodb, but that is seen as a database :-(
    # and upstream wants things to be under /var/lib/mysql/, so that's the route
    # we have to take for the moment
    #innodb_data_home_dir          = /var/lib/mysql/
    #innodb_log_arch_dir            = /var/lib/mysql/
    #innodb_log_group_home_dir      = /var/lib/mysql/
    # you may wish to change this size to be more suitable for your system
    # the max is there to avoid run-away growth on your machine
    innodb_data_file_path = ibdata1:10M:autoextend:max:128M
    # we keep this at around 25% of of innodb_buffer_pool_size
    # sensible values range from 1MB to (1/innodb_log_files_in_group*innodb_buffer_pool_size)
    innodb_log_file_size = 15M
    # this is the default, increase it if you have very large transactions going on
    innodb_log_buffer_size = 14M
    # this is the default and won't hurt you
    # you shouldn't need to tweak it
    set-variable = innodb_log_files_in_group=2
    # see the innodb config docs, the other options are not always safe
    innodb_flush_log_at_trx_commit = 1
    innodb_lock_wait_timeout = 50

    [mysqldump]
    quick
    max_allowed_packet                      = 16M

    [mysql]
    # uncomment the next directive if you are not familiar with SQL
    #safe-updates

    [isamchk]
    key_buffer                              = 20M
    sort_buffer_size                        = 20M
    read_buffer                            = 2M
    write_buffer                            = 2M

    [myisamchk]
    key_buffer                              = 20M
    sort_buffer_size                        = 20M
    read_buffer                            = 2M
    write_buffer                            = 2M

    [mysqlhotcopy]
    interactive-timeout

Завтра с утречка выложу комменты к значениям и разгребу все по полочкам.
На данный момент вот лог моего SQL сервера:
Цитата:

MySQL Version 5.0.70-log i686

Uptime = 2 days 14 hrs 7 min 48 sec
Avg. qps = 41
Total Questions = 9199782
Threads Connected = 15

FreeSky 25.09.2009 10:54

Re: Как правильно поставить производительный MySQL сервер
 
9 миллионов.... с ума сойти

Deny 25.09.2009 14:30

Re: Как правильно поставить производительный MySQL сервер
 
да уж %_)


Часовой пояс GMT +4, время: 02:01.

Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot