extra/mariadb to 10.3.13-1

This commit is contained in:
Kevin Mihelich 2019-02-24 21:19:41 +00:00
parent 3818dc611d
commit 6681538da5
7 changed files with 277 additions and 67 deletions

View file

@ -1,31 +0,0 @@
From 8b87e87252f7d0599a99f18cd5f51914d2611397 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= <vicentiu@mariadb.org>
Date: Thu, 24 Jan 2019 00:58:20 +0200
Subject: MDEV-18360 Prevent set_max_open_files from allocating too many files
If the rlimit.rlim_cur value returned by getrlimit is not the
RLIM_INFINITY magic constant, but a *very* large number, we can allocate
too many open files. Restrict set_max_open_files to only return at most
max_file_limit, as passed via its parameter.
---
mysys/my_file.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/mysys/my_file.c b/mysys/my_file.c
index 8d01285a94b..b3aef8494cb 100644
--- a/mysys/my_file.c
+++ b/mysys/my_file.c
@@ -52,10 +52,9 @@ static uint set_max_open_files(uint max_file_limit)
DBUG_PRINT("info", ("rlim_cur: %u rlim_max: %u",
(uint) rlimit.rlim_cur,
(uint) rlimit.rlim_max));
- if ((ulonglong) rlimit.rlim_cur == (ulonglong) RLIM_INFINITY)
- rlimit.rlim_cur = max_file_limit;
- if (rlimit.rlim_cur >= max_file_limit)
- DBUG_RETURN(rlimit.rlim_cur); /* purecov: inspected */
+ if ((ulonglong) rlimit.rlim_cur == (ulonglong) RLIM_INFINITY ||
+ rlimit.rlim_cur >= max_file_limit)
+ DBUG_RETURN(max_file_limit);
rlimit.rlim_cur= rlimit.rlim_max= max_file_limit;
if (setrlimit(RLIMIT_NOFILE, &rlimit))
max_file_limit= old_cur; /* Use original value */

View file

@ -0,0 +1,134 @@
From 07abbcbbe129a4c44c58fa2496b0921e52a759c2 Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 29 Jan 2019 23:12:01 +0100
Subject: enable PrivateTmp for a little bit more security
---
support-files/mariadb.service.in | 2 +-
support-files/mariadb@.service.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/support-files/mariadb.service.in b/support-files/mariadb.service.in
index 8d43b6db428..a96fbcc9d2c 100644
--- a/support-files/mariadb.service.in
+++ b/support-files/mariadb.service.in
@@ -117,7 +117,7 @@ UMask=007
# If you don't use the /tmp directory for SELECT ... OUTFILE and
# LOAD DATA INFILE you can enable PrivateTmp=true for a little more security.
-PrivateTmp=false
+PrivateTmp=true
##
## Options previously available to be set via [mysqld_safe]
diff --git a/support-files/mariadb@.service.in b/support-files/mariadb@.service.in
index a2f5cff0828..83d75f80b87 100644
--- a/support-files/mariadb@.service.in
+++ b/support-files/mariadb@.service.in
@@ -41,7 +41,7 @@ Type=notify
# Setting this to true can break replication and the Type=notify settings
# See also bind-address mysqld option.
-PrivateNetwork=false
+PrivateNetwork=true
##############################################################################
## Package maintainers
From 0e4a158086b765aa3a12b84646aefb9b192443f7 Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 29 Jan 2019 23:12:54 +0100
Subject: force preloading jemalloc for memory management
---
support-files/mariadb.service.in | 1 +
support-files/mariadb@.service.in | 1 +
2 files changed, 2 insertions(+)
diff --git a/support-files/mariadb.service.in b/support-files/mariadb.service.in
index a96fbcc9d2c..6bb5d4227b9 100644
--- a/support-files/mariadb.service.in
+++ b/support-files/mariadb.service.in
@@ -140,6 +140,7 @@ LimitNOFILE=16364
# Library substitutions. previously [mysqld_safe] malloc-lib with explicit paths
# (in LD_LIBRARY_PATH) and library name (in LD_PRELOAD).
# Environment="LD_LIBRARY_PATH=/path1 /path2" "LD_PRELOAD=
+Environment="LD_PRELOAD=/usr/lib/libjemalloc.so"
# Flush caches. previously [mysqld_safe] flush-caches=1
# ExecStartPre=sync
diff --git a/support-files/mariadb@.service.in b/support-files/mariadb@.service.in
index 83d75f80b87..d1d24d685f9 100644
--- a/support-files/mariadb@.service.in
+++ b/support-files/mariadb@.service.in
@@ -161,6 +161,7 @@ LimitNOFILE=16364
# Library substitutions. previously [mysqld_safe] malloc-lib with explicit paths
# (in LD_LIBRARY_PATH) and library name (in LD_PRELOAD).
# Environment="LD_LIBRARY_PATH=/path1 /path2" "LD_PRELOAD=
+Environment="LD_PRELOAD=/usr/lib/libjemalloc.so"
# Flush caches. previously [mysqld_safe] flush-caches=1
# ExecStartPre=sync
From 72b42fb1a344bfc3f3c3c905fe85c93ac4a752e3 Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 29 Jan 2019 23:14:23 +0100
Subject: fix path to our config
---
support-files/rpm/enable_encryption.preset | 2 +-
support-files/rpm/my.cnf | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/support-files/rpm/enable_encryption.preset b/support-files/rpm/enable_encryption.preset
index 722db7e5fa1..978a7494c6b 100644
--- a/support-files/rpm/enable_encryption.preset
+++ b/support-files/rpm/enable_encryption.preset
@@ -1,5 +1,5 @@
#
-# !include this file into your my.cnf (or any of *.cnf files in /etc/my.cnf.d)
+# !include this file into your my.cnf (or any of *.cnf files in /etc/mysql/my.cnf.d)
# and it will enable data at rest encryption. This is a simple way to
# ensure that everything that can be encrypted will be and your
# data will not leak unencrypted.
diff --git a/support-files/rpm/my.cnf b/support-files/rpm/my.cnf
index 913b88f8328..17d25361178 100644
--- a/support-files/rpm/my.cnf
+++ b/support-files/rpm/my.cnf
@@ -7,5 +7,5 @@
#
# include all files from the config directory
#
-!includedir /etc/my.cnf.d
+!includedir /etc/mysql/my.cnf.d
From 820b47c1e70d36f1272cca3ddbdf4bbd2dd62bde Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Wed, 30 Jan 2019 00:46:47 +0100
Subject: remove aliases from systemd unit files
---
support-files/mariadb.service.in | 2 --
support-files/mariadb@.service.in | 2 --
2 files changed, 4 deletions(-)
diff --git a/support-files/mariadb.service.in b/support-files/mariadb.service.in
index 8d43b6db428..d7fa6bf5b14 100644
--- a/support-files/mariadb.service.in
+++ b/support-files/mariadb.service.in
@@ -20,8 +20,6 @@ After=network.target
[Install]
WantedBy=multi-user.target
-Alias=mysql.service
-Alias=mysqld.service
[Service]
diff --git a/support-files/mariadb@.service.in b/support-files/mariadb@.service.in
index a2f5cff0828..3fc41358e14 100644
--- a/support-files/mariadb@.service.in
+++ b/support-files/mariadb@.service.in
@@ -27,8 +27,6 @@ ConditionPathExists=@sysconf2dir@/my%I.cnf
[Install]
WantedBy=multi-user.target
-Alias=mysql.service
-Alias=mysqld.service
[Service]

View file

@ -0,0 +1,60 @@
From dc7aff5e5331820205282576f6ade015f672969b Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 2 Jan 2018 14:32:21 +0100
Subject: Use descriptive file names for sysusers and tmpfiles configuration
These files were installed to:
${INSTALL_SYSTEMD_SYSUSERSDIR}/sysusers.conf
${INSTALL_SYSTEMD_TMPFILESDIR}/tmpfiles.conf
Instead rename the files to more descriptive file names 'mariadb.conf'.
---
support-files/CMakeLists.txt | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt
index 4ad3810e082..8363922d468 100644
--- a/support-files/CMakeLists.txt
+++ b/support-files/CMakeLists.txt
@@ -117,7 +117,8 @@ IF(UNIX)
CONFIGURE_FILE(sysusers.conf.in
${CMAKE_CURRENT_BINARY_DIR}/sysusers.conf @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/sysusers.conf
- DESTINATION ${INSTALL_SYSTEMD_SYSUSERSDIR} COMPONENT Server)
+ DESTINATION ${INSTALL_SYSTEMD_SYSUSERSDIR}
+ RENAME mariadb.conf COMPONENT Server)
ENDIF()
IF(INSTALL_SYSTEMD_TMPFILESDIR)
@@ -125,7 +126,8 @@ IF(UNIX)
CONFIGURE_FILE(tmpfiles.conf.in
${CMAKE_CURRENT_BINARY_DIR}/tmpfiles.conf @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tmpfiles.conf
- DESTINATION ${INSTALL_SYSTEMD_TMPFILESDIR} COMPONENT Server)
+ DESTINATION ${INSTALL_SYSTEMD_TMPFILESDIR}
+ RENAME mariadb.conf COMPONENT Server)
ENDIF()
# @ in directory name broken between CMake version 2.8.12.2 and 3.3
From c86912c8896b65c1dd9226c1bc2987189d4840c2 Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 2 Jan 2018 14:36:49 +0100
Subject: Make systemd-tmpfiles create MYSQL_DATADIR
This is a no-op if the directory exists, but makes sure it is created by
systemd-tmpfiles with proper permissions otherwise.
This solves packaging issues when the user MYSQLD_USER is created by
systemd-sysusers and uid is not known in advance.
---
support-files/tmpfiles.conf.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/support-files/tmpfiles.conf.in b/support-files/tmpfiles.conf.in
index 03d66abc0c7..3c89cb258c9 100644
--- a/support-files/tmpfiles.conf.in
+++ b/support-files/tmpfiles.conf.in
@@ -1 +1,2 @@
d @MYSQL_UNIX_DIR@ 0755 @MYSQLD_USER@ @MYSQLD_USER@ -
+d @MYSQL_DATADIR@ 0700 @MYSQLD_USER@ @MYSQLD_USER@ -

View file

@ -0,0 +1,56 @@
From 8fe9b2658664d0ece15fe57442706446fed66d6e Mon Sep 17 00:00:00 2001
From: Christian Hesse <mail@eworm.de>
Date: Tue, 15 Jan 2019 17:22:56 +0100
Subject: do not break main configuration with instantiated one
The main configuration file /etc/my.cnf includes all configuration files in
/etc/my.cnf.d/. However an instantiated service mariadb@example.service
reads its configuration from /etc/my.cnf.d/myexample.cnf. This breaks
the main configuration as that includes a snippet intended for an instance.
This can be fixed by changing the path: Let the instantiated service
read its configuration from /etc/myexample.cnf.
---
support-files/mariadb@.service.in | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/support-files/mariadb@.service.in b/support-files/mariadb@.service.in
index a2f5cff0828..1207e690f47 100644
--- a/support-files/mariadb@.service.in
+++ b/support-files/mariadb@.service.in
@@ -1,7 +1,7 @@
# Multi instance version of mariadb. For if you run multiple versions at once.
# Also used for mariadb@bootstrap to bootstrap Galera.
#
-# create config file @sysconf2dir@/my{instancename}.cnf
+# create config file @sysconfdir@/my{instancename}.cnf
#
# start as systemctl start mariadb@{instancename}.server
@@ -23,7 +23,7 @@ Documentation=man:mysqld(8)
Documentation=https://mariadb.com/kb/en/library/systemd/
After=network.target
-ConditionPathExists=@sysconf2dir@/my%I.cnf
+ConditionPathExists=@sysconfdir@/my%I.cnf
[Install]
WantedBy=multi-user.target
@@ -75,7 +75,7 @@ PermissionsStartOnly=true
ExecStartPre=/bin/sh -c "systemctl unset-environment _WSREP_START_POSITION%I"
ExecStartPre=/bin/sh -c "[ ! -e @bindir@/galera_recovery ] && VAR= || \
- VAR=`@bindir@/galera_recovery --defaults-file=@sysconf2dir@/my%I.cnf`; [ $? -eq 0 ] \
+ VAR=`@bindir@/galera_recovery --defaults-file=@sysconfdir@/my%I.cnf`; [ $? -eq 0 ] \
&& systemctl set-environment _WSREP_START_POSITION%I=$VAR || exit 1"
# Alternate: (remove ConditionPathExists above)
@@ -96,7 +96,7 @@ ExecStartPre=/bin/sh -c "[ ! -e @bindir@/galera_recovery ] && VAR= || \
# Note: Place $MYSQLD_OPTS at the very end for its options to take precedence.
-ExecStart=@sbindir@/mysqld --defaults-file=@sysconf2dir@/my%I.cnf \
+ExecStart=@sbindir@/mysqld --defaults-file=@sysconfdir@/my%I.cnf \
$_WSREP_NEW_CLUSTER $_WSREP_START_POSITION%I $MYSQLD_OPTS
# Alternate: (remove ConditionPathExists above)
# use [mysqld.INSTANCENAME] as sections in my.cnf

View file

@ -8,54 +8,50 @@
pkgbase=mariadb
pkgname=('mariadb-libs' 'mariadb-clients' 'mariadb' 'mytop')
pkgdesc='Fast SQL database server, derived from MySQL'
pkgver=10.3.12
pkgrel=5
pkgver=10.3.13
pkgrel=1
arch=('x86_64')
license=('GPL')
url='https://mariadb.org/'
makedepends=('boost' 'bzip2' 'cmake' 'jemalloc' 'libaio' 'libxml2' 'lz4' 'lzo'
'openssl' 'systemd' 'zlib' 'zstd')
validpgpkeys=('199369E5404BD5FC7D2FE43BCBCB082A1BB943DB') # MariaDB Package Signing Key <package-signing-key@mariadb.org>
source=("https://ftp.heanet.ie/mirrors/mariadb/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz"{,.asc}
'0001-MDEV-18360-Prevent-set_max_open_files-from-allocating-too-many-files.patch'
'0002-fix-galera_recovery-with-fs.protected_regular-enabled.patch'
source=("https://mirrors.n-ix.net/mariadb/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz"{,.asc}
'0001-arch-specific.patch'
'0002-systemd-sysusers-tmpfiles.patch'
'0004-do-not-break-main-configuration-with-instantiated-one.patch'
'0005-fix-galera_recovery-with-fs.protected_regular-enabled.patch'
'atomic.patch')
sha256sums=('f7449a34c25e0455928d7983dae83fd2069fe1f16c4c5f4aeed9ed9d3f081ff6'
sha256sums=('b2aa857ef5b84f85a7ea60a1eac7b34c0ca5151c71a0d44ce2d7fb028d71459a'
'SKIP'
'f2a93769bfd9a5421871846b091ff752dfceea1791beab2ee55ac93d24df02c7'
'5a443a403821931ce35759e9583d23cd809b3b5a5df5b8293ac8e33b9c0cbc0f'
'1cd009b473d5965c7cbe6d48fff272030a2ccdd9c7e67b4f837d03252786a09a'
'd12806e4f90cc0fc081205dd4c0a5e0e7c455844f04276811b61b57fd24f5545'
'66e0acac7436fd8925710ef5cc66ba1a8f63a385ce374f01ae83096cc33d97a0'
'7769fd8eb2bb3a6644a2200d01918ff887be25638d79dbec25897fe0d87badc4')
prepare() {
cd $pkgbase-$pkgver/
# Changes to the upstream unit files:
# * remove the alias from unit files, we install symlinks in package function
# Arch Linux specific patches:
# * enable PrivateTmp for a little bit more security
# * force preloading jemalloc for memory management
sed -i -e '/^Alias/d' \
-e '/^PrivateTmp/c PrivateTmp=true' \
-e '/# Environment="LD_/a Environment="LD_PRELOAD=/usr/lib/libjemalloc.so"' \
support-files/mariadb{,@}.service.in
# * fix path to our config
patch -Np1 < ../0001-arch-specific.patch
# let's create the datadir from tmpfiles
echo 'd @MYSQL_DATADIR@ 0700 @MYSQLD_USER@ @MYSQLD_USER@ -' >> support-files/tmpfiles.conf.in
# MDEV-17028 Fix glitches with systemd sysusers and tmpfiles:
# * Use descriptive file names for sysusers and tmpfiles configuration
# * Make systemd-tmpfiles create MYSQL_DATADIR
# https://github.com/MariaDB/server/pull/530
patch -Np1 < ../0002-systemd-sysusers-tmpfiles.patch
# instantiated configs are not subject to be included from main config
sed -i 's|@sysconf2dir@|@sysconfdir@|' support-files/mariadb@.service.in
# fix path to our config
sed -i 's|my.cnf.d|mysql/my.cnf.d|' support-files/rpm/{my.cnf,enable_encryption.preset}
# MDEV-18360 Prevent set_max_open_files from allocating too many files
# https://bugs.archlinux.org/task/61433
# https://github.com/systemd/systemd/issues/11510
# https://jira.mariadb.org/browse/MDEV-18360
patch -Np1 < ../0001-MDEV-18360-Prevent-set_max_open_files-from-allocating-too-many-files.patch
# do not break main configuration with instantiated one
# https://github.com/MariaDB/server/pull/1095
patch -Np1 < ../0004-do-not-break-main-configuration-with-instantiated-one.patch
# fix galera_recovery with fs.protected_regular enabled
# https://github.com/MariaDB/server/pull/1137
patch -Np1 < ../0002-fix-galera_recovery-with-fs.protected_regular-enabled.patch
patch -Np1 < ../0005-fix-galera_recovery-with-fs.protected_regular-enabled.patch
if [[ $CARCH == arm || $CARCH == armv6h ]]; then
patch -p0 -i ../atomic.patch
@ -180,7 +176,7 @@ package_mariadb() {
'etc/mysql/my.cnf.d/mysql-clients.cnf'
'etc/mysql/my.cnf.d/server.cnf')
install=mariadb.install
depends=("mariadb-clients=${pkgver}" 'inetutils' 'libsystemd' 'libxml2' 'zstd')
depends=("mariadb-clients=${pkgver}" 'inetutils' 'systemd-libs' 'libxml2' 'zstd')
optdepends=('galera: for MariaDB cluster with Galera WSREP'
'perl-dbd-mysql: for mysqlhotcopy, mysql_convert_table_format and mysql_setpermission')
conflicts=('mysql')
@ -198,11 +194,7 @@ package_mariadb() {
rm usr/bin/rcmysql
rm usr/share/mysql/{binary-configure,mysql{,d_multi}.server}
# these should have useful names
mv usr/lib/sysusers.d/{sysusers,mariadb}.conf
mv usr/lib/tmpfiles.d/{tmpfiles,mariadb}.conf
# links service files with old name for compatibility
# link service files with old name for compatibility
ln -s mariadb.service usr/lib/systemd/system/mysqld.service
ln -s mariadb@.service usr/lib/systemd/system/mysqld@.service
@ -211,8 +203,7 @@ package_mariadb() {
mv usr/share/doc/mariadb/COPYING* usr/share/licenses/mariadb/
# move it where one might look for it
#mv usr/share/{groonga,doc/mariadb/}
#mv usr/share/{groonga-normalizer-mysql,doc/mariadb/}
mv usr/share/{groonga{,-normalizer-mysql},doc/mariadb/}
# already installed to real systemd unit directory or useless
rm -r usr/share/mysql/systemd/

View file

@ -6,7 +6,7 @@ post_install() {
echo " mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql"
}
post_upgrade(){
post_upgrade() {
# show for feature release: 10.1 -> 10.2 -> 10.3 -> ...
if [ $(vercmp "${1%.*}" "${2%.*}") -ne 0 ]; then
echo ":: MariaDB was updated to a new feature release. To update the data run:"