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

building_mariadb_on_freebsd [2010/09/13 17:06]
k2patel
building_mariadb_on_freebsd [2020/08/10 02:35]
Line 1: Line 1:
-====== Build / Compile MariaDB on FreeBSD ====== 
- 
-==== Getting Source ==== 
-get source from [[http://​www.mariadb.org | MariaDB]]\\ 
-extract to ///​usr/​local/​src/​mariadb//​ 
-==== Configure ==== 
-**Modular configure** (usually you need to load plugins with my.cnf) **i am using this one.** 
- 
-<code bash> 
-./configure --with-extra-charsets=all --localstatedir=/​var/​db/​mysql 
-</​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.txt ยท Last modified: 2020/08/10 02:35 (external edit)