Ok , i had followed the instructions at http://openbsdsupport.org/mysql.htm
And now i have this configuration:
I start mysql with this script:
# cat /usr/local/bin/mysql.start
if [ -x /usr/local/bin/mysqld_safe ] ; then
su -c _mysql root -c '/usr/local/bin/mysqld_safe &' > /dev/null &
echo -n ' mysql'
fi
That properly starts it with the correct login class.
My login.conf for mysql is:
_mysql:\
# :openfiles=8192:\
:openfiles=infinity:\
:datasize=infinity:\
:maxproc=infinity:\
#:openfiles-cur=8192:\
:openfiles-cur=infinity:\
#:openfiles-max=10000:\
:openfiles-max=infinity:\
:stacksize-cur=8M:
I want to set infinity on those now just for testing, if everything works
fine i will put some limits there.
My kern.maxfiles:
# sysctl kern.maxfiles
kern.maxfiles=20000
And my.cnf has :
[mysqld]
socket = /var/www/logs/mysql/mysql.sock
old-passwords
tmpdir = /var/mysql/tmp
open_files_limit = 10000
max_connections = 4096
sql-mode = MYSQL40
skip-name-resolve
table_cache = 5000
query_cache_size = 64M
thread_cache = 32
key_buffer = 128M
long_query_time = 5
thread_concurrency = 2
interactive_timeout=60
wait_timeout=60
connect_timeout=15
record_buffer=8M
basedir=/usr/local
datadir=/var/mysql
sort_buffer_size = 32M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
[mysql.server]
old-passwords
[mysqld_safe]
open-files=8192
open_files_limit = 10000
max_connections = 4096
[mysqlcheck]
socket = /var/www/logs/mysql/mysql.sock
--
The server has more than 100 databases, it's been working fine for about a
year .
A couple of days ago i found that no database could be accessed . Errors
like this appear:
070714 16:15:57 [ERROR] /usr/local/libexec/mysqld: Can't find file:
'./ip041271_tan1/mos_weblinks.frm' (errno: 9)
070714 16:15:57 [ERROR] /usr/local/libexec/mysqld: Can't find file:
'./ip041271_tan1/mos_weblinks.frm' (errno: 9)
I restart the server and everything goes back to normal , but i reach my
limits if i execute a:
mysqlcheck -m -A -p
By the moment the limits are reached, i noticed that this values Open_files
and Opened_tables reached:
mysql> show status like '%Open%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Com_ha_open | 0 |
| Com_show_open_tables | 0 |
| Open_files | 2031 |
| Open_streams | 0 |
| Open_tables | 1053 |
| Opened_tables | 0 |
| Slave_open_temp_tables | 0 |
+------------------------+-------+
7 rows in set (0.00 sec)
or for example
mysql> show status like 'open%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_files | 2030 |
| Open_streams | 0 |
| Open_tables | 1077 |
| Opened_tables | 0 |
+---------------+-------+
4 rows in set (0.00 sec)
I know i must be doing something wrong, but i just can't find out what .
I still don't know why i reach limits with mysqlcheck when i am setting
all those values right. I guess the limit i'm reaching is Open_files .
The question is , why?
Regards,
Marcos