本文介绍mysql各种安装方法(rpm/glibc通用二进制/源码编译)以及多实例配置的方法,没什么技术,算是一篇方法归总文章。
本文安装MySQL时,它们的运行身份为mysql,数据目录datadir为/mydata/data。
pid文件路径设置为/mydata/data/mysql.pid或/mydata/data/hostname
.pid。
由于mariadb和mysql 5系列并没有太大的不同。因此仅详细展示mysql的安装。最后将简单提一提mariadb。
直接yum安装mysql-server即可。但注意两点:
(1).centos7上,yum默认将安装mariadb。
(2).centos6上,yum默认安装的版本比较老(5.1版),要安装mysql 5.6或mysql 5.7,可以从官方下载,也可以使用以下配置的yum源。
cat <<eof>/etc/yum.repos.d/mysql.repo
[mysql]
name=MySQL
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/\$basearch/
# baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/\$basearch/
# baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/\$basearch/
# baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/\$basearch/
enabled=1
gpgcheck=0
eof
此外,在sohu镜像站点也提供了mysql的各个rpm版本。地址:http://mirrors.sohu.com/mysql/
还需注意,配置了yum源后安装Mysql将使用mysql-community-*安装各mysql相关包,例如mysql-community-server。
安装完成后,启动mysqld。
shell> service mysqld start # 或 systemctl start mysqld
如果启动失败,则可能需要初始化MySQL。
shell> mkdir -p /mydata/data
shell> chown -R mysql.mysql /mydata/data
shell> mysql_install_db --datadir=/mydata/data --user=mysql
如果使用mysql_install_db初始化时提示该命令已经废弃(5.7版本可能会如此提示),那么使用下面的命令进行初始化。
# 初始化时,为root@localhost创建一个临时密码存放在mysql.log中
shell> mysqld --initialize --datadir=/mydata/data --user=mysql
# 初始化时,为root@localhost创建一个空密码
shell> mysqld --initialize-insecure --datadir=/mydata/data --user=mysql
初始化后再启动,启动成功后连接数据库并修改root@localhost用户的密码,然后退出。
shell> mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> \q
如果前面使用mysqld –initialize初始化数据库,那么将会为”root@localhost”创建一个密码,这将使得无法直接使用mysql命令连接数据库。可以先从mysql.log中筛选出创建的临时密码,然后再手动修改为”123456″。
shell> grep 'temporary password' /var/log/mysqld.log
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> \q
通用二进制包相当于windows中的便携版软件,解压后稍微配置下就可以直接使用,不用安装。
mysql通用二进制版官方下载地址:
MySQL 5.7通用二进制包下载:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.12-x86_64.tar.gz
其中文件中的glibc2.12表示的是Linux系统的glibc版本要比2.12新,可以使用ldd –version查看glibc版本。在CentOS 6上glibc默认就是2.12的,所以无需顾虑。
shell> tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
shell> ln -s /usr/local/mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
不使用rpm包安装,就需要对mysql进行初始化以创建一些文件、库和指定一些参数。但在初始化mysql前,要预先做一些操作。
shell> mkdir -p /mydata/data
shell> useradd -r -s /sbin/nologin mysql
shell> chown -R mysql.mysql /usr/local/mysql
shell> chown -R mysql.mysql /mydata/data
shell> cd /usr/local/mysql
shell> scripts/mysql_install_db --datadir=/mydata/data --user=mysql
shell> chown -R root.root /usr/local/mysql
执行mysql_install_db时会在/tmp下创建临时表,所以mysql用户需要对/tmp有写权限,否则执行实例初始化脚本时可能会报类似下面的错误:
ERROR: 1 Can't create/write to file '/tmp/#sql_7a0e_0.MYI' (Errcode: 13)
这说明没有写权限,所以需要修改/tmp目录的权限:
chmod 1777 /tmp
同样,mysql_install_db初始时如果提示已废弃,则使用如下方法:
bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql
初始化完成后,提供配置文件和服务启动脚本。
shell> cp -a support-files/mysql.server /etc/init.d/mysqld
shell> cp -a support-files/my-default.cnf /etc/my.cnf
# 修改my.cnf的datadir
shell> vim /etc/my.cnf
[mysqld]
datadir=/mydata/data
如果是centos7,则提供如下服务启动脚本(如有必要,修改pid文件路径)。
shell> cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/run/mysqld/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql-5.7.19/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
修改”root@localhost”密码。
shell> mysql
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> \q
编译安装或通用二进制安装后,一般都需要做一些额外的操作,包括设置环境变量、输出头文件和库文件、设置man路径。
echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql
建议别没事找事,尝试编译装MySQL,完全是吃力不讨好的事。如果确实要编译安装,把my.cnf、服务管理脚本、编译选项等涉及到运行文件路径的项确保相同,例如pid文件、socket文件、datadir路径、log文件。并保证mysql涉及到的目录所有者和所属组都是mysql,例如默认的pid路径/var/run/mysql/。
mysql源码包下载地址:
MySQL 5.7源码包下载:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
关于编译选项,见下文。
使用以下命令安装mysql 5.6。
yum -y install ncurses-devel cmake
tar xf ~/mysql-5.6.37.tar.gz
cd ~/mysql-5.6.37
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.37 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_SSL=bundled \
-DWITH_DEBUG=0
make
make install
使用以下命令安装mysql 5.7。比上述多了最后一个boost相关设置项,不设置此项可能会cmake失败。
yum -y install ncurses-devel cmake
tar xf ~/mysql-5.7.19.tar.gz
cd ~/mysql-5.7.19
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.19 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_SSL=bundled \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
make
make install
如果是centos7,则加上一项-DWITH_SYSTEMD=1,这会提供systemd脚本。
注意,上述编译选项中没有提供sysconfdir、datadir、pidfile和socket等mysql运行时文件类设置选项。虽然可以设置,但没必要,而且在做多实例的时候可能会出现问题。不过,可以考虑加上MYSQL_UNIX_ADDR项来设置socket路径,因为不设置的话其会采用默认的/tmp/mysql.sock。
shell> ln -s /usr/local/mysql-5.6.37 /usr/local/mysql
shell> cd /usr/local/mysql
shell> useradd -r -s /sbin/nologin mysql
shell> mkdir -p /mydata/data
shell> chown -R mysql.mysql /mydata/data
shell> chmod o-rx /mydata/data
shell> chown -R mysql.mysql /usr/local/mysql
shell> scripts/mysql_install_db --user=mysql --datadir=/mydata/data
shell> cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
shell> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
shell> chown -R root.root /usr/local/mysql
# 修改my.cnf的datadir、socket、log和pid路径。
shell> vim /etc/my.cnf
[mysqld]
datadir=/mydata/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/mydata/data/mysql.log
pid-file=/mydata/data/mysqld.pid
注:mysql 5.7建议采用如下语句进行初始化。
/usr/local/mysql/bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql
如果是centos7,则提供systemd风格的服务管理脚本,并确认是否要修改pid文件路径。
输出头文件、库文件,设置PATH环境变量,设置man路径。
echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql
Installation Layout Options
Storage Engine Options
存储引擎是插件式的,可被静态编译到MySQL服务中,也可以动态编译成模块,编译成模块时需要使用INSTALL PLUGIN语句或者–plugin-load选项来启用。但某些插件是固化的,无法指定是静态编译还是动态编译。
InnoDB,MyISAM,MERGE,MEMORY和CSV存储引擎总是默认静态编译到MySQL服务中的,在编译安装的时候无需显式指定它们。
编译存储引擎的时候,使用-DWITH_enginename_STORAGE_ENGINE=1表示静态编译到MySQL。可选的引擎有:ARCHIVE、BLACKHOLE、EXAMPLE、FEDERATED、PARTITION(分区支持引擎)、PERFSCHEMA(Performance Schema)。如:
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
使用-WITHOUT_enginename_STORAGE_ENGINE=1表示显式的排除这些引擎,即强制不使用它们。如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
-DWITH_enginename_STORAGE_ENGINE和-WITHOUT_enginename_STORAGE_ENGINE都没有指定某些引擎的话,这些引擎默认动态编译成模块,如果无法动态编译成模块则不编译。
Feature Options
设置默认字符集,默认为latin1。例如,binary,ascii,big5 ,gb2312,gbk,latin1,latin2,latin5,latin7,utf8。
在cmake/character_sets.cmake文件中的CHARSETS_AVAILABLE定义了允许使用的字符集列表。
字符集的设置可以在MySQL服务启动的时候使用”–character_set_server”选项来指定。
设置默认的排序规则。默认排序规则为latin1_swedish_ci。使用SHOW COLLATION语句可以查看每种字符集可以使用的排序规则。
排序规则的设置可以在MySQL服务启动的时候使用–collation_server选项来指定。
Whether to enable LOCAL capability in the client library for LOAD DATA INFILE.
This option controls client-side LOCAL capability, but the capability can be set on the server side at server startup with the –local-infile option.
指定MySQL的TCP端口,默认是3306。可以在启动服务时使用–port选项指定。
指定MySQL的套接字路径,必须是绝对路径,默认是/tmp/mysql.sock。可以在启动服务时使用–port选项指定。
Whether to generate memcached shared libraries (libmemcached.so and innodb_engine.so).
no: No SSL support. This is the default before MySQL 5.6.6. As of 5.6.6, this is no longer a permitted value and the default is bundled.
yes: Use the system SSL library if present, else the library bundled with the distribution.
bundled: Use the SSL library bundled with the distribution. This is the default as of MySQL 5.6.6.
system: Use the system SSL library.
mysql可以实现多实例,但因为多实例会共用服务器资源,导致资源争用,在某实例某一刻资源占用很多时(高并发、慢查询),其他的实例会受到影响。
无论是rpm安装、通用二进制安装还是编译安装,都有两种方法实现多实例。
mysqld_multi start 1,2,4-6
本文介绍第二种方法,并采用rpm包安装的mysql实现多实例。再次说明,无论使用何种方式安装mysql,都可以实现多实例,其实看明白下面配置的过程就知道了。
创建并设置datadir,并初始化、分别提供配置文件。
shell> mkdir -p /mydata/{3306,3307}/data
shell> chown -R mysql.mysql /mydata/{3306,3307}/data
shell> mysql_install_db --datadir=/mydata/3306/data --user=mysql
shell> mysql_install_db --datadir=/mydata/3307/data --user=mysql
shell> cp /etc/my.cnf /mydata/3306/my.cnf
shell> cp /etc/my.cnf /mydata/3307/my.cnf
如果是设置mysql 5.7的多实例,则初始化时使用如下命令替换上面的mysql_install_db。
shell> mysqld --initialize-insecure --datadir=/mydata/3306/data --user=mysql
shell> mysqld --initialize-insecure --datadir=/mydata/3307/data --user=mysql
分别修改两个配置文件。
#以下是3306实例的配置文件要修改的部分。
shell> vim /mydata/3306/my.cnf
[mysqld]
port=3306
datadir=/mydata/3306/data
socket=/mydata/3306/data/mysql.sock
server_id=1
[mysqld_safe]
log-error=/mydata/3306/data/mysqld.log
pid-file=/mydata/3306/data/mysqld.pid
#以下是3307实例的配置文件要修改部分。
shell> vim /mydata/3307/my.cnf
[mysqld]
port=3307
datadir=/mydata/3307/data
socket=/mydata/3307/data/mysql.sock
server_id=2
[mysqld_safe]
log-error=/mydata/3307/data/mysqld.log
pid-file=/mydata/3307/data/mysqld.pid
再分别提供服务管理脚本。
由于我的示例中mysql是采用rpm安装,所以mysql的basedir为/usr,如果是编译安装或通用二进制安装,则对应修改下面脚本中的basedir变量。
下面的datadir变量设置为/mydata/$port/data。请务必和上面的初始化设置和配置文件中设置的相同。
将此管理脚本复制为/etc/init.d/mysqld3307,再修改下port=3307即可作为3307实例的服务管理脚本。
此脚本不会初始化mysql(我把这部分代码删了)创建实例,所以启动服务前务必先初始化好对应的mysql实例。
下面的脚本即可作为多实例服务管理脚本,也可以作为单实例服务管理脚本,只需将脚本名称改一改即可。
#!/bin/sh
#
# mysqld This shell script takes care of starting and stopping
# the MySQL subsystem (mysqld).
#
# chkconfig: 345 64 36
# description: MySQL database server.
# processname: mysqld
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
basedir=/usr
port=3306
# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld
STARTTIMEOUT=120
STOPTIMEOUT=60
# Set in /etc/sysconfig/mysqld, will be passed to mysqld_safe
MYSQLD_OPTS=
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
lockfile=/var/lock/subsys/$prog
case $socketfile in
/*) ;;
*) ;;
esac
start(){
[ -x $exec ] || exit 5
# check to see if it's already running
RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1)
if [ $? = 0 ]; then
# already running, do nothing
action $"Starting $prog: " /bin/true
ret=0
elif echo "$RESPONSE" | grep -q "Access denied for user"
then
# already running, do nothing
action $"Starting $prog: " /bin/true
ret=0
else
# Now start service
$exec $MYSQLD_OPTS --defaults-file="$cnf" --datadir="$datadir" --socket="$socketfile" \
--pid-file="$mypidfile" \
--basedir="$basedir" --user=mysql >/dev/null &
safe_pid=$!
# Spin for a maximum of N seconds waiting for the server to come up;
# exit the loop immediately if mysqld_safe process disappears.
# Rather than assuming we know a valid username, accept an "access
# denied" response as meaning the server is functioning.
ret=0
while [ $TIMEOUT -gt 0 ]; do
RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) && break
echo "$RESPONSE" | grep -q "Access denied for user" && break
if ! /bin/kill -0 $safe_pid 2>/dev/null; then
echo "MySQL Daemon failed to start."
ret=1
break
fi
sleep 1
let TIMEOUT=${TIMEOUT}-1
done
if [ $TIMEOUT -eq 0 ]; then
echo "Timeout error occurred trying to start MySQL Daemon."
ret=1
fi
if [ $ret -eq 0 ]; then
action $"Starting $prog: " /bin/true
touch $lockfile
else
action $"Starting $prog: " /bin/false
fi
fi
return $ret
}
stop(){
if [ ! -f "$mypidfile" ]; then
# not running; per LSB standards this is "ok"
action $"Stopping $prog: " /bin/true
return 0
fi
MYSQLPID=`cat "$mypidfile"`
if [ -n "$MYSQLPID" ]; then
/bin/kill "$MYSQLPID" >/dev/null 2>&1
ret=$?
if [ $ret -eq 0 ]; then
while [ $TIMEOUT -gt 0 ]; do
/bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
sleep 1
let TIMEOUT=${TIMEOUT}-1
done
if [ $TIMEOUT -eq 0 ]; then
echo "Timeout error occurred trying to stop MySQL Daemon."
ret=1
action $"Stopping $prog: " /bin/false
else
rm -f $lockfile
rm -f "$socketfile"
action $"Stopping $prog: " /bin/true
fi
else
action $"Stopping $prog: " /bin/false
fi
else
# failed to read pidfile, probably insufficient permissions
action $"Stopping $prog: " /bin/false
ret=4
fi
return $ret
}
restart(){
stop
start
}
condrestart(){
[ -e $lockfile ] && restart || :
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p "$mypidfile" $prog
;;
restart)
restart
;;
condrestart|try-restart)
condrestart
;;
reload)
exit 3
;;
force-reload)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?
使用下面的命令管理两个mysql实例:
service mysqld3306 {start|stop|status|restart}
service mysqld3307 {start|stop|status|restart}
第一次启动可能会失败,也可能会警告和log相关的项,这是正常的,之后都会正常。
由于我的示例中mysql是采用rpm安装,所以mysql的basedir为/usr,如果是编译安装或通用二进制安装,则对应修改下面脚本中的basedir变量。
由于rpm包安装在centos 7上,已经没有mysqld_safe命令,因此使用mysqld来启动mysql实例。
将此管理脚本复制为/usr/lib/systemd/system/mysqld3307.service,再将其内的3306修改为3307即可作为3307实例的服务管理脚本。
此脚本不会初始化mysql(我把这部分代码删了)创建实例,所以启动服务前务必先初始化好对应的mysql实例。
下面的脚本即可作为多实例服务管理脚本,也可以作为单实例服务管理脚本,只需将脚本名称改一改即可。
mysql为systemd自带了多实例服务管理脚本/usr/lib/systemd/system/mysqld@.service。我没有采用,但其设置方法可以借鉴下。
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/mydata/3306/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Start main service
ExecStart=/usr/sbin/mysqld --defaults-file=/mydata/3306/my.cnf --basedir=/usr --daemonize $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
然后重载下systemd服务管理脚本。
systemctl daemon-reload
之后就可以使用下面的命令管理两个实例:
systemctl {start|stop|status|restart} mysqld3306
systemctl {start|stop|status|restart} mysqld3307
mariadb基本上算是mysql的另一个实现,绝大多数以及基础功能上和MySQL都相同。具体到安装上,也基本完全一样。
在centos7上,直接yum install mysql-server将默认安装mariadb,如果配置了mysql的yum源,需要指定”mysql-community-server”才表示安装mysql。
以下仅提供mariadb的各项资源下载地址,具体安装方法见前文对应mysql安装方法。个人建议,将mariadb的服务启动脚本阅读一遍,和MySQL的做个比较。
mariadb的镜像站点:
[mariadb]
name=mariadb
baseurl=http://yum.mariadb.org/10.2.6/centos/6.6/$basearch/
#baseurl=http://yum.mariadb.org/10.2.6/centos/7.2/$basearch/
enabled=1
gpgcheck=0
mariadb各通用二进制版:
mariadb各种二进制版本:https://downloads.mariadb.org/mariadb/+releases/
mariadb 10.2.6 systemd版(centos7):http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/bintar-linux-systemd-x86_64/mariadb-10.2.6-linux-systemd-x86_64.tar.gz
mariadb 10.2.6 非systemd版(centos6):http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/bintar-linux-x86_64/mariadb-10.2.6-linux-x86_64.tar.gz
mariadb源码包: http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/source/mariadb-10.2.6.tar.gz