2017-07-19 82 views
0

我目前已在我的本地系統上安裝了MySQL版本5.6。我想永久性地將group_concat_max_length系統變量設置爲某個值。 當我在mysql終端中使用 set global group_concat_max_len = 100000; 命令時,該值被設置,但值在重新啓動時更改爲默認值。 我也更改了my.cnf文件並將其放在[mysqld]標題下。即使更改my.cnf文件後,group_concat_max_length系統變量也未更改

任何人都可以提出什麼可能是問題?

編輯: 的my.cnf /etc/init.d/boot.d中

 

    ... 
    SELF=$(cd $(dirname $0); pwd -P)/$(basename $0) 
    CONF=/etc/mysql/my.cnf 
    MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" 

    # priority can be overriden and "-s" adds output to stderr 
    ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mysql -i" 
    ... 

 

    # 
    # The MySQL database server configuration file. 
    # 
    # You can copy this to one of: 
    # - "/etc/mysql/my.cnf" to set global options, 
    # - "~/.my.cnf" to set user-specific options. 
    # 
    # One can use all long options that the program supports. 
    # Run program with --help to get a list of available options and with 
    # --print-defaults to see which it would actually understand and use. 
    # 
    # For explanations see 
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html 

    # This will be passed to all mysql clients 
    # It has been reported that passwords should be enclosed with ticks/quotes 
    # escpecially if they contain "#" chars... 
    # Remember to edit /etc/mysql/debian.cnf when changing the socket location. 
    [client] 
    port  = 3306 
    socket  = /var/run/mysqld/mysqld.sock 

    # Here is entries for some specific programs 
    # The following values assume you have at least 32M ram 

    # This was formally known as [safe_mysqld]. Both versions are currently parsed. 
    [mysqld_safe] 
    socket  = /var/run/mysqld/mysqld.sock 
    nice  = 0 

    [mysqld] 
    # 
    # * Basic Settings 
    # 
    user  = mysql 
    pid-file = /var/run/mysqld/mysqld.pid 
    socket  = /var/run/mysqld/mysqld.sock 
    port  = 3306 
    basedir  = /usr 
    datadir  = /var/lib/mysql 
    tmpdir  = /tmp 
    lc-messages-dir = /usr/share/mysql 
    skip-external-locking 
    # 
    # Instead of skip-networking the default is now to listen only on 
    # localhost which is more compatible and is not less secure. 
    # bind-address  = 127.0.0.1 


    #max_connections=200 (mysql connections) 
    # 
    # * Fine Tuning 
    # 
    key_buffer  = 16M 
    max_allowed_packet = 16M 
    thread_stack  = 192K 
    thread_cache_size  = 8 
    # This replaces the startup script and checks MyISAM tables if needed 
    # the first time they are touched 
    myisam-recover   = BACKUP 
    #max_connections  = 100 
    #table_cache   = 64 
    #thread_concurrency  = 10 
    # 
    # * Query Cache Configuration 
    # 

    innodb_buffer_pool_size = 8G 
    innodb_flush_log_at_trx_commit = 2 
    query_cache_size=268435456 
    query_cache_type=1 
    query_cache_limit=8388608 
    group_concat_max_len=100000 

    #query_cache_limit = 1M 
    #query_cache_size  = 16M 

    # 
    # * Logging and Replication 
    # 
    # Both location gets rotated by the cronjob. 
    # Be aware that this log type is a performance killer. 
    # As of 5.1 you can enable the log at runtime! 
    #general_log_file  = /var/log/mysql/mysql.log 
    #general_log    = 1 
    # 
    # Error log - should be very few entries. 
    # 
    log_error = /var/log/mysql/error.log 
    # 
    # Here you can see queries with especially long duration 
    #log_slow_queries = /var/log/mysql/mysql-slow.log 
    #long_query_time = 2 
    #log-queries-not-using-indexes 
    # 
    # The following can be used as easy to replay backup logs or for replication. 
    # note: if you are setting up a replication slave, see README.Debian about 
    #  other settings you may need to change. 
    #server-id  = 1 
    #log_bin   = /var/log/mysql/mysql-bin.log 
    expire_logs_days = 10 
    max_binlog_size   = 100M 
    #binlog_do_db  = include_database_name 
    #binlog_ignore_db = include_database_name 
    # 
    # * InnoDB 
    # 
    # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. 
    # Read the manual for more InnoDB related options. There are many! 
    # 
    # * Security Features 
    # 
    # Read the manual, too, if you want chroot! 
    # chroot = /var/lib/mysql/ 
    # 
    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". 
    # 
    # ssl-ca=/etc/mysql/cacert.pem 
    # ssl-cert=/etc/mysql/server-cert.pem 
    # ssl-key=/etc/mysql/server-key.pem 



    [mysqldump] 
    quick 
    quote-names 
    max_allowed_packet = 16M 

    [mysql] 
    #no-auto-rehash # faster start of mysql but no tab completition 

    [isamchk] 
    key_buffer  = 16M 

    # 
    # * IMPORTANT: Additional settings that can override those from this file! 
    # The files must end with '.cnf', otherwise they'll be ignored. 
    # 
    !includedir /etc/mysql/conf.d/ 

mysql的文件mysql的重新啓動後:

 

    mysql> show variables like '%group_concat_max%'; 
    +----------------------+-------+ 
    | Variable_name  | Value | 
    +----------------------+-------+ 
    | group_concat_max_len | 1024 | 
    +----------------------+-------+ 
    1 row in set (0.00 sec) 

+0

您可能在my.cnf中輸入了錯誤。你可以檢查mysql日誌,看看是否有任何關於它?請在這裏粘貼my.cnf。你的my.cnf究竟在哪裏? – abeyaz

+0

@abeyaz它在/ etc/mysql /文件夾中。 –

+0

如果你確定即使在my.cnf文件中有100000,它仍然會回到默認值,但是mysql可能不會在那個目錄中看到你的my.cnf文件。你可以檢查'/ etc/init.d/mysql'如果你使用的是debian/ubuntu的發行版,那麼my.cnf的位置在那裏 – abeyaz

回答

0

從單線您配置文件NEEDS被列爲6行,因爲初始化只能處理每行一個變量,恕我直言。

您可能會發現,您的查詢緩存大小約爲268M,query_cache_limit約爲8M將分別在50M和1M時更有效。 原因是在表中更改了一行時,更新表的每個緩存查詢結果都被標記爲無效 - 即單獨使用cpu週期標記緩存結果。

重新啓動後,請確認SHOW GLOBAL VARIABLES LIKE'group_concat_max_length'具有您的預期價值。它應該是可見的。

+0

粘貼導致初始化的my.cnf文件看起來像是單行,這是一個縮進問題。我現在編輯了我的帖子。謝謝 –

+0

該問題仍未解決 –