2015-09-24 28 views
12

Ogni volta che ricomincio MySQL ho questo avvertimento:avvertimento Buffered: Cambiato limiti: max_connections: 214 (richiesto 800)

[Avvertimento] Avvertimento Buffered: limiti Cambiato: max_connections: 214 (richiesto 800)

Quindi devo cambiare max_connections variabile:

set global max_connections = 800; 

Ma /etc/my.cf ha max_connections set:

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 
max_connections = 800 

ho anche modificato mysqld.service:

# Start main service 
ExecStart=/usr/bin/mysqld_safe --defaults-file=/etc/my.cnf 

Ho anche aggiornato max file aperti di CentOS 1024-2000:

ulimit -Sa | grep "open files" 
open files      (-n) 2000 

Ma il problema persiste.

Mysql registro di partenza:

150924 13:15:04 mysqld_safe mysqld from pid file 

/var/run/mysqld/mysqld.pid ended 
150924 13:15:04 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 
2015-09-24 13:15:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 
2015-09-24 13:15:04 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25) starting as process 29997 ... 
2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000) 

2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: max_connections: 214 (requested 800) 

2015-09-24 13:15:04 29997 [Warning] Buffered warning: Changed limits: table_open_cache: 400 (requested 2000) 

2015-09-24 13:15:04 29997 [Note] Plugin 'FEDERATED' is disabled. 
2015-09-24 13:15:04 29997 [Note] InnoDB: Using atomics to ref count buffer pool pages 
2015-09-24 13:15:04 29997 [Note] InnoDB: The InnoDB memory heap is disabled 
2015-09-24 13:15:04 29997 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 
2015-09-24 13:15:04 29997 [Note] InnoDB: Memory barrier is not used 
2015-09-24 13:15:04 29997 [Note] InnoDB: Compressed tables use zlib 1.2.3 
2015-09-24 13:15:04 29997 [Note] InnoDB: Using Linux native AIO 
2015-09-24 13:15:04 29997 [Note] InnoDB: Using CPU crc32 instructions 
2015-09-24 13:15:04 29997 [Note] InnoDB: Initializing buffer pool, size = 128.0M 
2015-09-24 13:15:04 29997 [Note] InnoDB: Completed initialization of buffer pool 
2015-09-24 13:15:04 29997 [Note] InnoDB: Highest supported file format is Barracuda. 
2015-09-24 13:15:04 29997 [Note] InnoDB: 128 rollback segment(s) are active. 
2015-09-24 13:15:04 29997 [Note] InnoDB: Waiting for purge to start 
2015-09-24 13:15:04 29997 [Note] InnoDB: 5.6.25 started; log sequence number 24337684937 
2015-09-24 13:15:04 29997 [Note] Server hostname (bind-address): '*'; port: 3306 
2015-09-24 13:15:04 29997 [Note] IPv6 is available. 
2015-09-24 13:15:04 29997 [Note] - '::' resolves to '::'; 
2015-09-24 13:15:04 29997 [Note] Server socket created on IP: '::'. 
2015-09-24 13:15:04 29997 [Note] Event Scheduler: Loaded 0 events 
2015-09-24 13:15:04 29997 [Note] /usr/sbin/mysqld: ready for connections. 
Version: '5.6.25' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) 

ho provato tutte le soluzioni di Google, ma il risultato è sempre lo stesso ...

MySQL è in esecuzione su CentOS Linux rilasciare 1503/01/07 (Core).

Grazie!

+0

Sembra OK per me. un'occhiata [qui] [1] [1]: http://dba.stackexchange.com/questions/12061/mysql-auto-adjusting-max-connections-values ​​ –

+0

Did it ... Ma non succede niente ... –

risposta

14

Avendo appena trascorso un'ora o due di fronte allo stesso identico problema su CentOS 7 con MySQL 5.6.26, ecco la mia soluzione. Oltre ad aumentare i max file aperti (per l'utente mysql), che sembra aver già fatto, è necessario aggiungere "LimitNOFILE = 65535" (o simile a seconda di quanto alto è il limite che si desidera impostare) a il tuo file di definizione mysql.service.

Quindi la soluzione completa per me è stata la seguente

Aggiungi i seguenti due linee di /etc/security/limits.conf

mysql hard nofile 65535 
mysql soft nofile 65535 

accodamento questa linea a/usr/lib/systemd/system/mysqld.service (nella sezione [servizio])

LimitNOFILE=65535 

poi finalmente riavviare e controllare che i messaggi di errore sono scomparsi dal log degli errori mysql.

EDIT: Grazie a @SieGeL below per avermi ricordato di aggiungere, se aggiorni il file ".service" direttamente le modifiche andranno perse durante l'aggiornamento. Per mantenere le modifiche dopo un aggiornamento utilizzare un override systemd creando un file conf aggiuntivo in /etc/systemd/system/mysqld.service.d

+0

Grazie! L'ho risolto! –

+2

Non esiste una cartella di questo tipo nella mia installazione di kubuntu. Non c'è la cartella 'system' in '/ usr/lib/systemd /' – makkasi

+1

Ho fatto ======= sudo nano /lib/systemd/system/mysql.service ======= sudo systemctl daemon- ricarica =========== sudo servizio mysql restart =========== E ha funzionato. Ho fatto anche il primo passo. Saluti – makkasi

4

Non consiglierei di modificare il file systemd originale in quanto verrà sovrascritto durante gli aggiornamenti .

Per modificare i limiti, effettuare le seguenti operazioni:

mkdir /etc/systemd/system/mysqld.service.d 

Dentro quella directory, creare nuovi limits.conf di file e aggiungere il seguente al file:

[Service] 
    LimitNOFILE = 65535 

finalmente ricaricare systemd con:

systemctl daemon-reload 

e riavviare mysqld per abilitare il cambiamento:

systemctl restart mysqld 

Ora verificare che il cambiamento ha avuto successo utilizzando la seguente query:

mysql> show variables like '%file%'; 

Si dovrebbe trovare una linea come questa:

| open_files_limit      | 65535 

Questo è tutto, in questo modo le modifiche sopravvivere MySQL aggiornamenti.

+0

D'accordo, modificherò la mia risposta in quanto è ciò che ho fatto alla fine. Grazie per aver dedicato del tempo per segnalarlo. – MNB