From 7a65a910b77ad191d69881098c47f9b0c852d92e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 13 Aug 2013 01:33:19 -0700 Subject: Tue Aug 13 01:31:08 PDT 2013 --- community/percona-server/PKGBUILD | 103 +++++++++++++++++++ community/percona-server/my.cnf | 145 +++++++++++++++++++++++++++ community/percona-server/mysqld-post.sh | 8 ++ community/percona-server/mysqld-tmpfile.conf | 1 + community/percona-server/mysqld.service | 16 +++ community/percona-server/percona.install | 37 +++++++ 6 files changed, 310 insertions(+) create mode 100644 community/percona-server/PKGBUILD create mode 100644 community/percona-server/my.cnf create mode 100644 community/percona-server/mysqld-post.sh create mode 100644 community/percona-server/mysqld-tmpfile.conf create mode 100644 community/percona-server/mysqld.service create mode 100644 community/percona-server/percona.install (limited to 'community/percona-server') diff --git a/community/percona-server/PKGBUILD b/community/percona-server/PKGBUILD new file mode 100644 index 000000000..67d824f5a --- /dev/null +++ b/community/percona-server/PKGBUILD @@ -0,0 +1,103 @@ +# $Id: PKGBUILD 93544 2013-07-05 09:53:28Z mtorromeo $ +# Maintainer: Massimiliano Torromeo + +pkgname=percona-server +pkgver=5.5.32_rel31.0 +pkgrel=1 +pkgdesc="A backwards-compatible drop-in replacement for MySQL that provides improved performance, diagnostics and instrumentation" +arch=('i686' 'x86_64') + +depends=('mariadb-clients' 'libaio' 'systemd-tools') +conflicts=('mysql') +provides=("mysql=${pkgver/_rel*}" "mariadb=${pkgver/_rel*}") +optdepends=('perl-dbi' 'perl-dbd-mysql') +makedepends=('cmake' 'openssl' 'zlib') + +license=('GPL') +url="http://www.percona.com/software/percona-server/" +options=('!libtool' 'emptydirs') +backup=('etc/mysql/my.cnf') +install=percona.install +source=("http://www.percona.com/downloads/Percona-Server-${pkgver%.*_*}/Percona-Server-${pkgver/_rel/-}/source/Percona-Server-${pkgver/_/-}.tar.gz" + 'mysqld-post.sh' + 'mysqld.service' + 'mysqld-tmpfile.conf') + +build() { + cd "${srcdir}/Percona-Server-${pkgver/_/-}" + sed -i 's|ADD_SUBDIRECTORY(libmysqld/examples)|# ADD_SUBDIRECTORY(libmysqld/examples)|' CMakeLists.txt + + cd "${srcdir}" + rm -rf build + mkdir build + cd build + + cmake "${srcdir}/Percona-Server-${pkgver/_/-}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DSYSCONFDIR=/etc/mysql \ + -DMYSQL_DATADIR=/var/lib/mysql \ + -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \ + -DDEFAULT_CHARSET=utf8 \ + -DDEFAULT_COLLATION=utf8_general_ci \ + -DENABLED_LOCAL_INFILE=ON \ + -DINSTALL_INFODIR=share/mysql/docs \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_PLUGINDIR=lib/mysql/plugin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_INCLUDEDIR=include/mysql \ + -DINSTALL_DOCREADMEDIR=share/mysql \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -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_LIBEDIT=OFF \ + -DWITH_UNIT_TESTS=OFF \ + -DWITH_MYSQLD_LDFLAGS="${LDFLAGS}" \ + -DWITH_EXTRA_CHARSETS=complex \ + -DWITH_EMBEDDED_SERVER=ON \ + -DWITH_INNOBASE_STORAGE_ENGINE=ON \ + -DWITH_PARTITION_STORAGE_ENGINE=ON \ + -DWITH_PERFSCHEMA_STORAGE_ENGINE=ON \ + -DWITH_ARCHIVE_STORAGE_ENGINE=ON \ + -DWITH_BLACKHOLE_STORAGE_ENGINE=ON \ + -DWITH_FEDERATED_STORAGE_ENGINE=OFF \ + -DWITH_EXAMPLE_STORAGE_ENGINE=OFF \ + -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 -fpermissive" + + make +} + +package() { + cd "${srcdir}"/build + make DESTDIR=${pkgdir} install + + install -Dm644 "${pkgdir}"/usr/share/mysql/my-medium.cnf "${pkgdir}"/etc/mysql/my.cnf + 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 -Dm644 "${srcdir}"/mysqld.service "${pkgdir}"/usr/lib/systemd/system/mysqld.service + + # provided by libmysqlclient + rm ${pkgdir}/usr/bin/mysql_config + 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 + + # 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 + + # not needed + rm -r ${pkgdir}/usr/{data,mysql-test,sql-bench} + rm "${pkgdir}"/usr/share/man/man1/mysql-test-run.pl.1 +} + +sha256sums=('e34676cea5ceb398258408e31e8527724845f83bbbf1f22308f5069304118e8f' + '82a241d9fa4032187a26597d044e94ba810b209b53a7ce14bb6eb92555993a48' + '9bc66470f3f80534c0bb62f9f8325ccf60b164f421f74ad74a963f065d7b1869' + 'badf6a701d9dc6ea3b4ddca26cb0f42b6236432ccdbc14c64962147802594a60') diff --git a/community/percona-server/my.cnf b/community/percona-server/my.cnf new file mode 100644 index 000000000..afdd6dc2c --- /dev/null +++ b/community/percona-server/my.cnf @@ -0,0 +1,145 @@ +# MySQL config file for medium 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) +# +# MySQL programs look for option files in a set of +# locations which depend on the deployment platform. +# You can copy this option file to one of those +# locations. For information about these locations, see: +# http://dev.mysql.com/doc/mysql/en/option-files.html +# +# In this file, you can use all long options that a program supports. +# If you want to know which options a program supports, run the program +# with the "--help" option. + +# The following options will be passed to all MySQL clients +[client] +#password = your_password +port = 3306 +socket = /run/mysqld/mysqld.sock + +# Here follows entries for some specific programs + +# The MySQL server +[mysqld] +port = 3306 +socket = /run/mysqld/mysqld.sock +datadir = /var/lib/mysql +skip-external-locking +key_buffer_size = 16M +max_allowed_packet = 1M +table_open_cache = 64 +sort_buffer_size = 512K +net_buffer_length = 8K +read_buffer_size = 256K +read_rnd_buffer_size = 512K +myisam_sort_buffer_size = 8M + +# Don't listen on a TCP/IP port at all. This can be a security enhancement, +# if all processes that need to connect to mysqld run on the same host. +# All interaction with mysqld must be made via Unix sockets or named pipes. +# Note that using this option without enabling named pipes on Windows +# (via the "enable-named-pipe" option) will render mysqld useless! +# +skip-networking + +# Replication Master Server (default) +# binary logging is required for replication +log-bin=mysql-bin + +# binary logging format - mixed recommended +binlog_format=mixed + +# required unique id between 1 and 2^32 - 1 +# defaults to 1 if master-host is not set +# but will not function as a master if omitted +server-id = 1 + +# Replication Slave (comment out master section to use this) +# +# To configure this host as a replication slave, you can choose between +# two methods : +# +# 1) Use the CHANGE MASTER TO command (fully described in our manual) - +# the syntax is: +# +# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, +# MASTER_USER=, MASTER_PASSWORD= ; +# +# where you replace , , by quoted strings and +# by the master's port number (3306 by default). +# +# Example: +# +# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, +# MASTER_USER='joe', MASTER_PASSWORD='secret'; +# +# OR +# +# 2) Set the variables below. However, in case you choose this method, then +# start replication for the first time (even unsuccessfully, for example +# if you mistyped the password in master-password and the slave fails to +# connect), the slave will create a master.info file, and any later +# change in this file to the variables' values below will be ignored and +# overridden by the content of the master.info file, unless you shutdown +# the slave server, delete master.info and restart the slaver server. +# For that reason, you may want to leave the lines below untouched +# (commented) and instead use CHANGE MASTER TO (see above) +# +# required unique id between 2 and 2^32 - 1 +# (and different from the master) +# defaults to 2 if master-host is set +# but will not function as a slave if omitted +#server-id = 2 +# +# The replication master for this slave - required +#master-host = +# +# The username the slave will use for authentication when connecting +# to the master - required +#master-user = +# +# The password the slave will authenticate with when connecting to +# the master - required +#master-password = +# +# The port the master is listening on. +# optional - defaults to 3306 +#master-port = +# +# binary logging - not required for slaves, but recommended +#log-bin=mysql-bin + +# Uncomment the following if you are using InnoDB tables +#innodb_data_home_dir = /var/lib/mysql +#innodb_data_file_path = ibdata1:10M:autoextend +#innodb_log_group_home_dir = /var/lib/mysql +# You can set .._buffer_pool_size up to 50 - 80 % +# of RAM but beware of setting memory usage too high +#innodb_buffer_pool_size = 16M +#innodb_additional_mem_pool_size = 2M +# Set .._log_file_size to 25 % of buffer pool size +#innodb_log_file_size = 5M +#innodb_log_buffer_size = 8M +#innodb_flush_log_at_trx_commit = 1 +#innodb_lock_wait_timeout = 50 + +[mysqldump] +quick +max_allowed_packet = 16M + +[mysql] +no-auto-rehash +# Remove the next comment character if you are not familiar with SQL +#safe-updates + +[myisamchk] +key_buffer_size = 20M +sort_buffer_size = 20M +read_buffer = 2M +write_buffer = 2M + +[mysqlhotcopy] +interactive-timeout diff --git a/community/percona-server/mysqld-post.sh b/community/percona-server/mysqld-post.sh new file mode 100644 index 000000000..516aeb85e --- /dev/null +++ b/community/percona-server/mysqld-post.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +while true; do + 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/community/percona-server/mysqld-tmpfile.conf b/community/percona-server/mysqld-tmpfile.conf new file mode 100644 index 000000000..91638983f --- /dev/null +++ b/community/percona-server/mysqld-tmpfile.conf @@ -0,0 +1 @@ +d /run/mysqld 0755 mysql mysql - \ No newline at end of file diff --git a/community/percona-server/mysqld.service b/community/percona-server/mysqld.service new file mode 100644 index 000000000..3d2af276c --- /dev/null +++ b/community/percona-server/mysqld.service @@ -0,0 +1,16 @@ +[Unit] +Description=MySQL database server +After=syslog.target network.target + +[Service] +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 diff --git a/community/percona-server/percona.install b/community/percona-server/percona.install new file mode 100644 index 000000000..c3b337ae1 --- /dev/null +++ b/community/percona-server/percona.install @@ -0,0 +1,37 @@ +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 $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 $datadir &>/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 $datadir -s /bin/false mysql &>/dev/null + + if [ "$(vercmp $2 5.5)" -lt 0 ]; then + echo " >> " + echo " >> Major version update. Consider restart the service, and then running mysql_upgrade after it." + echo " >> " + fi +} + +post_remove(){ + if getent passwd mysql >/dev/null 2>&1; then + userdel mysql + fi + if getent group mysql >/dev/null 2>&1; then + groupdel mysql + fi +} -- cgit v1.2.3-54-g00ecf