This shows you the differences between two versions of the page.
building_mariadb_on_freebsd [2017/07/02 02:07] 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) | ||
- | | /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 | ||
- | Enabled it in rc.conf | ||
- | |||
- | echo 'mysql_enable="YES"' >> /etc/rc.conf | ||
- | Now start it using. | ||
- | |||
- | /usr/local/etc/rc.d/mysql-server start | ||
- | Error | ||
- | |||
- | If you get any error related to DB not found (usually get created on first RUN). | ||
- | |||
- | mysql_install_db --datadir=/usr/local/var | ||
- | ENJOY!! Optimized Version of MySQL MariaDB |