(mysql.info) freebsd
Info Catalog
(mysql.info) bsd-notes
(mysql.info) bsd-notes
(mysql.info) netbsd
2.12.4.1 FreeBSD Notes
......................
FreeBSD 4.x or newer is recommended for running MySQL, because the
thread package is much more integrated. To get a secure and stable
system, you should use only FreeBSD kernels that are marked `-RELEASE'.
The easiest (and preferred) way to install MySQL is to use the
`mysql-server' and `mysql-client' ports available at
`http://www.freebsd.org/'. Using these ports gives you the following
benefits:
* A working MySQL with all optimizations enabled that are known to
work on your version of FreeBSD.
* Automatic configuration and build.
* Startup scripts installed in `/usr/local/etc/rc.d'.
* The ability to use `pkg_info -L' to see which files are installed.
* The ability to use `pkg_delete' to remove MySQL if you no longer
want it on your machine.
It is recommended you use MIT-pthreads on FreeBSD 2.x, and native
threads on FreeBSD 3 and up. It is possible to run with native threads
on some late 2.2.x versions, but you may encounter problems shutting
down `mysqld'.
Unfortunately, certain function calls on FreeBSD are not yet fully
thread-safe. Most notably, this includes the `gethostbyname()'
function, which is used by MySQL to convert hostnames into IP
addresses. Under certain circumstances, the `mysqld' process suddenly
causes 100% CPU load and is unresponsive. If you encounter this
problem, try to start MySQL using the -skip-name-resolve option.
Alternatively, you can link MySQL on FreeBSD 4.x against the
LinuxThreads library, which avoids a few of the problems that the
native FreeBSD thread implementation has. For a very good comparison of
LinuxThreads versus native threads, see Jeremy Zawodny's article
`FreeBSD or Linux for your MySQL Server?' at
`http://jeremy.zawodny.com/blog/archives/000697.html'.
Known problem when using LinuxThreads on FreeBSD is:
* The connection times (`wait_timeout', `interactive_timeout' and
`net_read_timeout') values are not honored. The symptom is that
persistent connections can hang for a very long time without
getting closed down and that a 'kill' for a thread will not take
affect until the thread does it a new command
This is probably a signal handling problem in the thread library
where the signal doesn't break a pending read. This is supposed
to be fixed in FreeBSD 5.0
The MySQL build process requires GNU make (`gmake') to work. If GNU
`make' is not available, you must install it first before compiling
MySQL.
The recommended way to compile and install MySQL on FreeBSD with `gcc'
(2.95.2 and up) is:
CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions \
-felide-constructors -fno-strength-reduce" \
./configure --prefix=/usr/local/mysql --enable-assembler
gmake
gmake install
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
bin/mysqld_safe &
If you notice that `configure' uses MIT-pthreads, you should read the
MIT-pthreads notes. See mit-pthreads.
If you get an error from `make install' that it can't find
`/usr/include/pthreads', `configure' didn't detect that you need
MIT-pthreads. To fix this problem, remove `config.cache', and then
re-run `configure' with the -with-mit-threads option.
Be sure that your name resolver setup is correct. Otherwise, you may
experience resolver delays or failures when connecting to `mysqld'.
Also make sure that the `localhost' entry in the `/etc/hosts' file is
correct. The file should start with a line similar to this:
127.0.0.1 localhost localhost.your.domain
FreeBSD is known to have a very low default file handle limit. See
not-enough-file-handles. Start the server by using the
-open-files-limit option for `mysqld_safe', or raise the limits for the
`mysqld' user in `/etc/login.conf' and rebuild it with `cap_mkdb
/etc/login.conf'. Also be sure that you set the appropriate class for
this user in the password file if you are not using the default (use
`chpass mysqld-user-name'). See mysqld-safe.
FreeBSD limits the size of a process to 512MB, even if you have much
more RAM available on the system. So you may get an error such as this:
Out of memory (Needed 16391 bytes)
In current versions of FreeBSD (at least 4.x and greater), you may
increase this limit by adding the following entries to the
`/boot/loader.conf' file and rebooting the machine (these are not
settings that can be changed at run time with the `sysctl' command):
kern.maxdsiz="1073741824" # 1GB
kern.dfldsiz="1073741824" # 1GB
kern.maxssiz="134217728" # 128MB
For older versions of FreeBSD, you must recompile your kernel to change
the maximum data segment size for a process. In this case, you should
look at the `MAXDSIZ' option in the `LINT' config file for more
information.
If you get problems with the current date in MySQL, setting the `TZ'
variable should help. See environment-variables.
Info Catalog
(mysql.info) bsd-notes
(mysql.info) bsd-notes
(mysql.info) netbsd
automatically generated byinfo2html