This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
building_mariadb_on_freebsd [2010/09/13 16:53] k2patel |
building_mariadb_on_freebsd [2020/08/10 02:35] (current) |
||
---|---|---|---|
Line 2: | Line 2: | ||
==== Getting Source ==== | ==== Getting Source ==== | ||
- | get source from [[http://www.mariadb.org | MariaDB]]\\ | + | |
- | extract to ///usr/local/src/mariadb// | + | |
+ | get source from [[http://www.mariadb.org/|MariaDB]]\\ | ||
+ | extract to /usr/local/src/mariadb | ||
==== Configure ==== | ==== Configure ==== | ||
- | **Modular configure** (usually you need to load plugins with my.cnf) **i am using this one.** | + | |
+ | |||
+ | **Modular configure** (usually you need to load plugins with my.cnf) i am using this one. | ||
<code bash> | <code bash> | ||
./configure --with-extra-charsets=all --localstatedir=/var/db/mysql | ./configure --with-extra-charsets=all --localstatedir=/var/db/mysql | ||
</code> | </code> | ||
- | |||
OR | OR | ||
**Build With Plugin** | **Build With Plugin** | ||
- | |||
<code bash> | <code bash> | ||
./configure --with-extra-charsets=all --with-plugin-maria --with-plugin-xtradb --localstatedir=/var/db/mysql | ./configure --with-extra-charsets=all --with-plugin-maria --with-plugin-xtradb --localstatedir=/var/db/mysql | ||
Line 22: | Line 25: | ||
**Static Build** as suggested by MariaDB wiki. | **Static Build** as suggested by MariaDB wiki. | ||
- | |||
<code bash> | <code bash> | ||
./configure --prefix=/usr/local/mysql --enable-assembler \ | ./configure --prefix=/usr/local/mysql --enable-assembler \ | ||
Line 32: | Line 34: | ||
--with-zlib-dir=bundled --enable-local-infile | --with-zlib-dir=bundled --enable-local-infile | ||
</code> | </code> | ||
+ | Now run “make -j4” and “make install” – will install it on system. | ||
+ | ==== rc script ==== | ||
+ | |||
+ | |||
+ | You can simply use script provided with port version of mysql. | ||
+ | Just in case if you dont have it, use below. | ||
+ | |||
+ | <code bash /usr/local/etc/rc.d/mysql> | ||
+ | #!/bin/sh | ||
+ | # | ||
+ | # $FreeBSD: ports/databases/mysql51-server/files/mysql-server.sh.in,v 1.6 2008/07/30 06:11:16 ale Exp $ | ||
+ | # | ||
+ | |||
+ | # PROVIDE: mysql | ||
+ | # REQUIRE: LOGIN | ||
+ | # KEYWORD: shutdown | ||
+ | |||
+ | # | ||
+ | # Add the following line to /etc/rc.conf to enable mysql: | ||
+ | # mysql_enable (bool): Set to "NO" by default. | ||
+ | # Set it to "YES" to enable MySQL. | ||
+ | # mysql_limits (bool): Set to "NO" by default. | ||
+ | # Set it to yes to run `limits -e -U mysql` | ||
+ | # just before mysql starts. | ||
+ | # mysql_dbdir (str): Default to "/var/db/mysql" | ||
+ | # Base database directory. | ||
+ | # mysql_args (str): Custom additional arguments to be passed | ||
+ | # to mysqld_safe (default empty). | ||
+ | # | ||
+ | |||
+ | . /etc/rc.subr | ||
+ | |||
+ | name="mysql" | ||
+ | rcvar=`set_rcvar` | ||
+ | |||
+ | load_rc_config $name | ||
+ | |||
+ | : ${mysql_enable="NO"} | ||
+ | : ${mysql_limits="NO"} | ||
+ | : ${mysql_dbdir="/var/db/mysql"} | ||
+ | : ${mysql_args=""} | ||
+ | |||
+ | mysql_user="mysql" | ||
+ | mysql_limits_args="-e -U ${mysql_user}" | ||
+ | pidfile="${mysql_dbdir}/`/bin/hostname`.pid" | ||
+ | command="/usr/local/bin/mysqld_safe" | ||
+ | command_args="--defaults-extra-file=${mysql_dbdir}/my.cnf --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args} > /dev/null 2>&1 &" | ||
+ | procname="/usr/local/libexec/mysqld" | ||
+ | start_precmd="${name}_prestart" | ||
+ | start_postcmd="${name}_poststart" | ||
+ | mysql_install_db="/usr/local/bin/mysql_install_db" | ||
+ | mysql_install_db_args="--ldata=${mysql_dbdir}" | ||
+ | |||
+ | mysql_create_auth_tables() | ||
+ | { | ||
+ | eval $mysql_install_db $mysql_install_db_args >/dev/null 2>/dev/null | ||
+ | [ $? -eq 0 ] && chown -R ${mysql_user}:${mysql_user} ${mysql_dbdir} | ||
+ | } | ||
+ | |||
+ | mysql_prestart() | ||
+ | { | ||
+ | if [ ! -d "${mysql_dbdir}/mysql/." ]; then | ||
+ | mysql_create_auth_tables || return 1 | ||
+ | fi | ||
+ | if checkyesno mysql_limits; then | ||
+ | eval `/usr/bin/limits ${mysql_limits_args}` 2>/dev/null | ||
+ | else | ||
+ | return 0 | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | mysql_poststart() | ||
+ | { | ||
+ | local timeout=15 | ||
+ | while [ ! -f "${pidfile}" -a ${timeout} -gt 0 ]; do | ||
+ | timeout=$(( timeout - 1 )) | ||
+ | sleep 1 | ||
+ | done | ||
+ | return 0 | ||
+ | } | ||
+ | |||
+ | run_rc_command "$1" | ||
+ | </code> | ||
+ | |||
+ | **Enable and Start** | ||
+ | |||
+ | Final steps…. (remember i am using Modular configure) | ||
+ | <code bash /etc/my.cnf> | ||
+ | [mysqld] | ||
+ | ## | ||
+ | ## Load Plugins | ||
+ | ## To specify cutom plugin dir use line below. | ||
+ | ## plugin_dir=/usr/local/lib/mysql/plugin | ||
+ | ## | ||
+ | |||
+ | plugin-load=ha_xtradb.so | ||
+ | |||
+ | ## | ||
+ | ## General Optimization | ||
+ | ## | ||
+ | |||
+ | open-files-limit=1024 | ||
+ | local-infile | ||
+ | character-set-server=utf8 | ||
+ | connect-timeout=60 | ||
+ | key_buffer_size=1M | ||
+ | sort_buffer=256K | ||
+ | max_heap_table_size=1M | ||
+ | |||
+ | ## | ||
+ | ## InnoDB Configuration. | ||
+ | ## | ||
+ | |||
+ | innodb_buffer_pool_size = 16M | ||
+ | innodb_additional_mem_pool_size = 2M | ||
+ | innodb_data_file_path = ibdata1:1024M:autoextend | ||
+ | innodb_log_file_size = 5M | ||
+ | innodb_log_buffer_size = 8M | ||
+ | innodb_log_files_in_group=2 | ||
+ | innodb_flush_log_at_trx_commit = 1 | ||
+ | innodb_lock_wait_timeout = 50 | ||
+ | innodb_file_per_table | ||
+ | |||
+ | ## | ||
+ | ## Setting Log / Bin expiry and name | ||
+ | ## | ||
+ | |||
+ | expire_logs_days=5 | ||
+ | log-bin=mysqld-bin | ||
+ | log-bin-trust-function-creators=1 | ||
+ | datadir=/usr/local/var | ||
+ | relay-log=freebsd-relay-bin | ||
+ | binlog-ignore-db=mysql,test | ||
+ | |||
+ | ## | ||
+ | ## Replication Options | ||
+ | ## | ||
+ | |||
+ | server-id=0 | ||
+ | |||
+ | #server-id=2 | ||
+ | #replicate-same-server-id=0 | ||
+ | #auto-increment-increment=5 | ||
+ | #auto-increment-offset=2 | ||
+ | #slave-net-timeout=120 | ||
+ | |||
+ | #master-host=192.168.1.3 | ||
+ | #master-user=repl | ||
+ | #master-password=password | ||
+ | #master-connect-retry=60 | ||
+ | #replicate-ignore-db=mysql,test | ||
+ | |||
+ | </code> | ||
+ | |||
+ | Enabled it in rc.conf | ||
+ | |||
+ | <code bash> | ||
+ | echo 'mysql_enable="YES"' >> /etc/rc.conf | ||
+ | </code> | ||
+ | |||
+ | Now start it using. | ||
+ | |||
+ | <code bash> | ||
+ | /usr/local/etc/rc.d/mysql-server start | ||
+ | </code> | ||
+ | |||
+ | **Error** | ||
+ | |||
+ | If you get any error related to DB not found (usually get created on first RUN). | ||
+ | |||
+ | <code bash> | ||
+ | mysql_install_db --datadir=/usr/local/var | ||
+ | </code> | ||
+ | **ENJOY!! Optimized Version of MySQL MariaDB** |