diff options
-rw-r--r--[-rwxr-xr-x] | abs/core/mysql/PKGBUILD | 160 | ||||
-rw-r--r-- | abs/core/mysql/__changelog | 5 | ||||
-rwxr-xr-x | abs/core/mysql/my.cnf | 24 | ||||
-rw-r--r-- | abs/core/mysql/mysql-srv_buf_size.patch | 20 | ||||
-rw-r--r-- | abs/core/mysql/mysql.install | 19 | ||||
-rwxr-xr-x | abs/core/mysql/mysqld-post.sh | 3 | ||||
-rwxr-xr-x | abs/core/mysql/mysqld.rc | 77 | ||||
-rw-r--r-- | abs/core/mysql/mysqld.service | 9 |
8 files changed, 159 insertions, 158 deletions
diff --git a/abs/core/mysql/PKGBUILD b/abs/core/mysql/PKGBUILD index 17850bd..b65aa04 100755..100644 --- a/abs/core/mysql/PKGBUILD +++ b/abs/core/mysql/PKGBUILD @@ -1,27 +1,39 @@ -# $Id: PKGBUILD 167246 2012-09-29 09:32:53Z andrea $ -# Maintainer: Andrea Scarpino <andrea@archlinux.org> +# Maintainer: Muflone http://www.muflone.com/contacts/english/ +# Contributor: Rustam Tsurik <rustam.tsurik@gmail.com> +# Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Douglas Soares de Andrade <douglas@archlinux.org> +pkgname=('mysql' 'libmysqlclient' 'mysql-clients') pkgbase=mysql -pkgname=('libmysqlclient' 'mysql-clients' 'mysql') -pkgver=5.5.28 -pkgrel=2 +pkgver=5.6.21 +pkgrel=1 +pkgdesc="Fast SQL database server, community edition" arch=('i686' 'x86_64') +makedepends=('openssl' 'zlib' 'cmake' 'systemd-tools' 'libaio' 'jemalloc') license=('GPL') url="https://www.mysql.com/products/community/" -makedepends=('cmake' 'openssl' 'zlib') options=('!libtool') -source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz" - 'mysqld.rc' 'my.cnf' 'mysqld-post.sh' 'mysqld-tmpfile.conf' 'mysqld.service') +source=("https://dev.mysql.com/get/Downloads/MySQL-5.6/${pkgbase}-${pkgver}.tar.gz" + "mysqld-post.sh" + "mysqld-tmpfile.conf" + "mysqld.service" + "my.cnf" + "mysql-srv_buf_size.patch") + +prepare() { + cd "${pkgbase}-${pkgver}" + patch -p0 -i "../mysql-srv_buf_size.patch" +} build() { + rm -rf build mkdir build cd build - # CFLAGS/CXXFLAGS as suggested upstream - - cmake ../${pkgbase}-${pkgver} \ - -DCMAKE_BUILD_TYPE=Release \ + cmake "../${pkgbase}-${pkgver}" \ + -DCMAKE_AR=/usr/bin/gcc-ar \ + -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \ + -DBUILD_CONFIG=mysql_release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DSYSCONFDIR=/etc/mysql \ -DMYSQL_DATADIR=/var/lib/mysql \ @@ -39,95 +51,125 @@ build() { -DINSTALL_MYSQLSHAREDIR=share/mysql \ -DINSTALL_DOCDIR=share/mysql/docs \ -DINSTALL_SHAREDIR=share/mysql \ - -DWITH_READLINE=ON \ -DWITH_ZLIB=system \ -DWITH_SSL=system \ -DWITH_LIBWRAP=OFF \ - -DWITH_MYSQLD_LDFLAGS="${LDFLAGS}" \ + -DCMAKE_EXE_LINKER_FLAGS='-ljemalloc' \ -DWITH_EXTRA_CHARSETS=complex \ -DWITH_EMBEDDED_SERVER=ON \ - -DWITH_INNOBASE_STORAGE_ENGINE=1 \ - -DWITH_PARTITION_STORAGE_ENGINE=1 \ - -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ - -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \ - -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 \ - -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \ - -DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \ - -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti" - + -DWITH_ARCHIVE_STORAGE_ENGINE=ON \ + -DWITH_BLACKHOLE_STORAGE_ENGINE=ON \ + -DWITH_INNOBASE_STORAGE_ENGINE=ON \ + -DWITH_PARTITION_STORAGE_ENGINE=ON \ + -DWITHOUT_EXAMPLE_STORAGE_ENGINE=ON \ + -DWITHOUT_FEDERATED_STORAGE_ENGINE=ON \ + -DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer -fno-delete-null-pointer-checks" \ + -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fno-delete-null-pointer-checks" \ + -DWITH_MYSQLD_LDFLAGS="-pie ${LDFLAGS},-z,now" make } package_libmysqlclient(){ pkgdesc="MySQL client libraries" depends=('openssl') + conflicts=('libmariadbclient') + provides=("libmariadbclient=${pkgver}") cd build - for dir in include libmysql libmysqld libservices; do - make -C ${dir} DESTDIR="${pkgdir}" install + for dir in include libmysql libmysqld libservices + do + make -C "${dir}" DESTDIR="${pkgdir}" install done - install -d "${pkgdir}"/usr/bin - install -m755 scripts/mysql_config "${pkgdir}"/usr/bin/ - install -d "${pkgdir}"/usr/share/man/man1 - for man in mysql_config mysql_client_test_embedded mysqltest_embedded; do - install -m644 "${srcdir}"/${pkgbase}-${pkgver}/man/$man.1 "${pkgdir}"/usr/share/man/man1/$man.1 + install -m 755 -d "${pkgdir}/usr/bin" + install -m 755 scripts/mysql_config "${pkgdir}/usr/bin/" + install -m 755 -d "${pkgdir}/usr/share/man/man1" + for man in mysql_config mysql_client_test_embedded mysqltest_embedded + do + install -m 644 "${srcdir}/${pkgbase}-${pkgver}/man/${man}.1" \ + "${pkgdir}/usr/share/man/man1/${man}.1" done } package_mysql-clients(){ pkgdesc="MySQL client tools" - depends=('libmysqlclient') + depends=('libmysqlclient' 'jemalloc') + conflicts=('mariadb-clients') + provides=("mariadb-clients=${pkgver}") cd build - make -C client DESTDIR="${pkgdir}" install + make -C "client" DESTDIR="${pkgdir}" install # install man pages - install -d "${pkgdir}"/usr/share/man/man1 - for man in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap; do - install -m644 "${srcdir}"/${pkgbase}-${pkgver}/man/$man.1 "${pkgdir}"/usr/share/man/man1/$man.1 + install -d "${pkgdir}/usr/share/man/man1" + for man in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap + do + install -m644 "${srcdir}/${pkgbase}-${pkgver}/man/${man}.1" \ + "${pkgdir}/usr/share/man/man1/${man}.1" done # provided by mysql - rm "${pkgdir}"/usr/bin/{mysql_{plugin,upgrade},mysqlbinlog,mysqltest} + rm "${pkgdir}/usr/bin/mysql_plugin" + rm "${pkgdir}/usr/bin/mysql_upgrade" + rm "${pkgdir}/usr/bin/mysql_config_editor" + rm "${pkgdir}/usr/bin/mysqlbinlog" + rm "${pkgdir}/usr/bin/mysqltest" } package_mysql(){ - pkgdesc="A fast SQL database server" + pkgdesc="Fast SQL database server, community edition" backup=('etc/mysql/my.cnf') - install=mysql.install - depends=('mysql-clients' 'systemd-tools') + install="${pkgbase}.install" + depends=('mysql-clients' 'libaio') + conflicts=('mariadb') + provides=("mariadb=${pkgver}") options=('emptydirs') cd build make DESTDIR="${pkgdir}" install - install -Dm644 "${srcdir}"/my.cnf "${pkgdir}"/etc/mysql/my.cnf - install -Dm755 "${srcdir}"/mysqld.rc "${pkgdir}"/etc/rc.d/mysqld - install -Dm755 "${srcdir}"/mysqld-post.sh "${pkgdir}"/usr/bin/mysqld-post - install -Dm644 "${srcdir}"/mysqld-tmpfile.conf "${pkgdir}"/usr/lib/tmpfiles.d/mysqld.conf - install -d "${pkgdir}"/usr/lib/systemd/system - install -Dm644 "${srcdir}"/mysqld.service "${pkgdir}"/usr/lib/systemd/system/ + install -m 644 -D "${srcdir}/my.cnf" "${pkgdir}/etc/mysql/my.cnf" + install -m 755 -D "${srcdir}/mysqld-post.sh" "${pkgdir}/usr/bin/mysqld-post" + install -m 644 -D "${srcdir}/mysqld-tmpfile.conf" "${pkgdir}/usr/lib/tmpfiles.d/mysqld.conf" + install -m 755 -d "${pkgdir}/usr/lib/systemd/system" + install -m 644 -D "${srcdir}/mysqld.service" "${pkgdir}/usr/lib/systemd/system/" # provided by libmysqlclient - rm "${pkgdir}"/usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded} + rm "${pkgdir}/usr/bin/mysql_config" + rm "${pkgdir}/usr/bin/mysql_client_test_embedded" + rm "${pkgdir}/usr/bin/mysqltest_embedded" rm "${pkgdir}"/usr/lib/libmysql* - rm -r "${pkgdir}"/usr/include/ - rm "${pkgdir}"/usr/share/man/man1/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}.1 + rm -r "${pkgdir}/usr/include/" + rm "${pkgdir}/usr/share/man/man1/mysql_config.1" + rm "${pkgdir}/usr/share/man/man1/mysql_client_test_embedded.1" + rm "${pkgdir}/usr/share/man/man1/mysqltest_embedded.1" # provided by mysql-clients - rm "${pkgdir}"/usr/bin/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap} - rm "${pkgdir}"/usr/share/man/man1/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}.1 + rm "${pkgdir}/usr/bin/mysql" + rm "${pkgdir}/usr/bin/mysqladmin" + rm "${pkgdir}/usr/bin/mysqlcheck" + rm "${pkgdir}/usr/bin/mysqldump" + rm "${pkgdir}/usr/bin/mysqlimport" + rm "${pkgdir}/usr/bin/mysqlshow" + rm "${pkgdir}/usr/bin/mysqlslap" + rm "${pkgdir}/usr/share/man/man1/mysql.1" + rm "${pkgdir}/usr/share/man/man1/mysqladmin.1" + rm "${pkgdir}/usr/share/man/man1/mysqlcheck.1" + rm "${pkgdir}/usr/share/man/man1/mysqldump.1" + rm "${pkgdir}/usr/share/man/man1/mysqlimport.1" + rm "${pkgdir}/usr/share/man/man1/mysqlshow.1" + rm "${pkgdir}/usr/share/man/man1/mysqlslap.1" # not needed - rm -r "${pkgdir}"/usr/{data,mysql-test,sql-bench} - rm "${pkgdir}"/usr/share/man/man1/mysql-test-run.pl.1 - - install -dm700 "${pkgdir}"/var/lib/mysql + rm -r "${pkgdir}/usr/data" + rm -r "${pkgdir}/usr/mysql-test" + rm -r "${pkgdir}/usr/sql-bench" + rm "${pkgdir}/usr/share/man/man1/mysql-test-run.pl.1" } -md5sums=('da8ddb3d00e6e159153d2444360f52a8' - 'e7eb2faeab755cbb2fe03542bf328da9' - 'e0f0c53cb6e3cead8896fa1f0c902789' - '6ea6ceb360d09a774e87335ee098ddd5' + +md5sums=('e47c3a70b8d89db3199a349204b2ae4e' + 'b79e65a5aa536e6b5bc60988eb0b78a2' '2fa6e456964d4ff5e6d4f9ff0126aed6' - 'a0e1460c276a50a9666c331de83271f2') + '81b62df0f569935109c1b107dfe9f9fa' + '162238ee0665e68b37136f3e046123a1' + 'f2b34ac2954bb56c4abf08c66a7f840e') diff --git a/abs/core/mysql/__changelog b/abs/core/mysql/__changelog index ec41d21..a0e903b 100644 --- a/abs/core/mysql/__changelog +++ b/abs/core/mysql/__changelog @@ -1,2 +1,3 @@ -data dir /data/srv/mysql -removed binary logging +PKGBUILD: copy my.cnf to /etc/mysql/ +my.cnf: data dir /data/srv/mysql +my.cnf: removed binary logging diff --git a/abs/core/mysql/my.cnf b/abs/core/mysql/my.cnf index 6d24cfa..f0b87da 100755 --- a/abs/core/mysql/my.cnf +++ b/abs/core/mysql/my.cnf @@ -1,8 +1,7 @@ -# MySQL config file for medium systems. +# Example MySQL config file for very large systems. # -# This is for a system with little memory (32M - 64M) where MySQL plays -# an important part, or systems up to 128M where MySQL is used together with -# other programs (such as a web server) +# This is for a large system with memory of 1G-2G where the system runs mainly +# MySQL. # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. @@ -27,20 +26,21 @@ socket = /var/run/mysqld/mysqld.sock port = 3306 socket = /var/run/mysqld/mysqld.sock datadir = /data/srv/mysql + skip-external-locking net_buffer_length = 8K -key_buffer_size = 80M +key_buffer_size = 384M max_allowed_packet = 1M table_open_cache = 256 -tmp_table_size = 16M -max_heap_table_size = 16M -sort_buffer_size = 1M -read_buffer_size = 1M +tmp_table_size = 32M +max_heap_table_size = 32M +sort_buffer_size = 2M +read_buffer_size = 2M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 -query_cache_size = 16M +query_cache_size = 32M join_buffer_size = 128K @@ -143,8 +143,8 @@ no-auto-rehash #safe-updates [myisamchk] -key_buffer_size = 20M -sort_buffer_size = 20M +key_buffer_size = 256M +sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M diff --git a/abs/core/mysql/mysql-srv_buf_size.patch b/abs/core/mysql/mysql-srv_buf_size.patch new file mode 100644 index 0000000..12212fc --- /dev/null +++ b/abs/core/mysql/mysql-srv_buf_size.patch @@ -0,0 +1,20 @@ +--- storage/innobase/row/row0log.cc.orig 2013-07-10 16:17:27.000000000 +0000 ++++ storage/innobase/row/row0log.cc 2013-08-21 12:48:22.216656556 +0000 +@@ -2364,7 +2364,7 @@ all_done: + and be ignored when the operation is unsupported. */ + fallocate(index->online_log->fd, + FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, +- ofs, srv_buf_size); ++ ofs, srv_sort_buf_size); + #endif /* FALLOC_FL_PUNCH_HOLE */ + + next_mrec = index->online_log->head.block; +@@ -3153,7 +3153,7 @@ all_done: + and be ignored when the operation is unsupported. */ + fallocate(index->online_log->fd, + FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, +- ofs, srv_buf_size); ++ ofs, srv_sort_buf_size); + #endif /* FALLOC_FL_PUNCH_HOLE */ + + next_mrec = index->online_log->head.block; diff --git a/abs/core/mysql/mysql.install b/abs/core/mysql/mysql.install index a98f1a8..f420406 100644 --- a/abs/core/mysql/mysql.install +++ b/abs/core/mysql/mysql.install @@ -1,17 +1,26 @@ +if [[ $(command -v my_print_defaults >/dev/null 2>&1) ]]; then + datadir=$(my_print_defaults mysqld | sed -n "s/^--datadir=//p") +fi +[[ -z $datadir ]] && datadir=/var/lib/mysql + post_install(){ groupadd -g 89 mysql &>/dev/null - useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null - usr/bin/mysql_install_db --user=mysql --basedir=/usr - chown -R mysql:mysql var/lib/mysql &>/dev/null + useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null + + if [[ ! -e $datadir ]]; then + install -dm700 $datadir + usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=$datadir + chown -R mysql:mysql var/lib/mysql &>/dev/null + fi usr/bin/systemd-tmpfiles --create mysqld.conf } post_upgrade(){ getent group mysql >/dev/null 2>&1 || groupadd -g 89 mysql &>/dev/null - getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null + getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d $datadir -s /bin/false mysql &>/dev/null - if [ "$(vercmp $2 5.5)" -lt 0 ]; then + if [ "$(vercmp $2 5.6)" -lt 0 ]; then echo " >> " echo " >> Major version update. Consider restart the service, and then running mysql_upgrade after it." echo " >> " diff --git a/abs/core/mysql/mysqld-post.sh b/abs/core/mysql/mysqld-post.sh index 8dc9c4e..c4ac181 100755 --- a/abs/core/mysql/mysqld-post.sh +++ b/abs/core/mysql/mysqld-post.sh @@ -1,7 +1,8 @@ #!/bin/sh while true; do - response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break + response=$(/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1) && break echo "$response" | grep -q "mysqld is alive" && break + echo "$response" | grep -q "Access denied for user" && break sleep 1 done diff --git a/abs/core/mysql/mysqld.rc b/abs/core/mysql/mysqld.rc deleted file mode 100755 index 4bbddb5..0000000 --- a/abs/core/mysql/mysqld.rc +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -# general config -. /etc/rc.conf -. /etc/rc.d/functions - -getPID() { - echo $(pgrep -u mysql mysqld 2>/dev/null); -} - -case "$1" in - start) - stat_busy "Starting MySQL Server" - [ ! -d /run/mysqld ] && install -d -g mysql -o mysql /run/mysqld &>/dev/null - if [ -z "$(getPID)" ]; then - /usr/bin/mysqld_safe --user=mysql &>/dev/null & - if [ $? -gt 0 ]; then - stat_fail - exit 1 - else - timeo=30 - while [ $timeo -gt 0 ]; do - response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break - echo "$response" | grep -q "mysqld is alive" && break - sleep 1 - let timeo=${timeo}-1 - done - if [ $timeo -eq 0 ]; then - stat_fail - exit 1 - else - echo $(getPID) > /run/mysqld/mysqld.pid - add_daemon mysqld - stat_done - fi - fi - else - stat_fail - exit 1 - fi - ;; - - stop) - stat_busy "Stopping MySQL Server" - if [ ! -z "$(getPID)" ]; then - timeo=30 - kill $(getPID) &> /dev/null - if [ $? -gt 0 ]; then - stat_fail - exit 1 - fi - while [ ! -z "$(getPID)" -a $timeo -gt 0 ]; do - sleep 1 - let timeo=${timeo}-1 - done - if [ -z "$(getPID)" ]; then - rm -f /run/mysqld/mysqld.pid &>/dev/null - rm_daemon mysqld - stat_done - else - stat_fail - exit 1 - fi - else - stat_fail - exit 1 - fi - ;; - - restart) - $0 stop - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac -exit 0 diff --git a/abs/core/mysql/mysqld.service b/abs/core/mysql/mysqld.service index 0175c68..a6fc8cf 100644 --- a/abs/core/mysql/mysqld.service +++ b/abs/core/mysql/mysqld.service @@ -1,11 +1,16 @@ [Unit] -Description=MySQL Server +Description=MySQL database server +After=syslog.target [Service] User=mysql -ExecStart=/usr/bin/mysqld --user=mysql +Group=mysql + +ExecStart=/usr/bin/mysqld --pid-file=/run/mysqld/mysqld.pid ExecStartPost=/usr/bin/mysqld-post + Restart=always +PrivateTmp=true [Install] WantedBy=multi-user.target |