User Tools

Site Tools


building_mariadb_on_freebsd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
building_mariadb_on_freebsd [2010/09/13 16:46]
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 ====
-Plugin Based 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
  
 +**Build With Plugin**
 +<code bash>
 +./configure --with-extra-charsets=all ​ --with-plugin-maria --with-plugin-xtradb --localstatedir=/​var/​db/​mysql
 +</​code>​
 +
 +OR
 +
 +**Static Build** as suggested by MariaDB wiki.
 +<code bash>
 +./configure --prefix=/​usr/​local/​mysql --enable-assembler \
 +--with-extra-charsets=all ​ --enable-thread-safe-client ​ --with-big-tables \
 +--with-plugin-maria --with-maria-tmp-tables --with-plugin-xtradb \
 +--with-mysqld-ldflags=-static --with-client-ldflags=-static --with-readline \
 +--with-ssl --with-plugins=max-no-ndb --with-embedded-server --with-libevent \
 +--with-mysqld-ldflags=-all-static ​ --with-client-ldflags=-all-static \
 +--with-zlib-dir=bundled --enable-local-infile
 +</​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**
building_mariadb_on_freebsd.1284396362.txt.gz · Last modified: 2020/08/10 02:28 (external edit)