网上有一堆采用源码编译, 或者直接 so 文件替代,或者用 install plugin 之类的安装办法。
在我看来实在有点 low。 我们直接搜索怎么用 yum repository 安装 MariaDB,就可以去页面:
https://downloads.mariadb.org/mariadb/repositories
按照里面的选择,我们会得到如下几行,在 /etc/yum.repos.d 目录下创建一个 mariadb.repo 的文件内容如下:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
然后运行
yum -y install MariaDB-tokudb-engine
就会自动升级 MariaDB 的版本, 并安装这个新的引擎以及相关的依赖包。
然后, systemctl stop mariadb (可能会存在不能 stop 的情况, 那就 kill -9 了)。
再启动 mariadb.
在操作系统里, 运行 mysql , 在交互界面下,输入 \s,查看系统信息, 可以看到服务器的最新版本号, 输入 show engines, 可以看到: “| TokuDB | YES | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology | YES ”
用 alter table tablename engine=tokudb,就可以把某一张表的引擎修改成 tokudb 了。
整个流程简单顺畅,没有拖泥带水。搞不懂外面那些小朋友的安装方法为什么要如此复杂。
以下是一张 800多万行的表迁移(InnoDB 到 TokuDB)前后的 select count(*) 比较:
MariaDB [stock]> select count(*) from dayline;
+———-+
| count(*) |
+———-+
| 8622272 |
+———-+
1 row in set (1 min 17.31 sec)
MariaDB [stock]> alter table dayline engine=’tokudb’;
Stage: 1 of 2 ‘Fetched about 1622000 rows, loading data still remains’ 18.8% of stage done
(中间居然还网络断开了!幸亏回来以后发现迁移算成功了)
MariaDB [stock]> select count(*) from dayline;
+———-+
| count(*) |
+———-+
| 8622272 |
+———-+
1 row in set (4.84 sec)
=======================
2017.12.4 后记:
升级到 MariaDB 后,由于 PHP MySQL 库头文件版本的不匹配会导致所有的 PHP 会报警:
PHP Warning: mysqli_connect(): Headers and client library minor version mismatch. Headers:50556 Library:100126 in
解决办法是: 卸载 php56w-mysql,安装 php56w-mysqlnd
===========
2018.3.12 后记:
外国的源很慢, 阿里和清华的源实际上上有的, 但是去 Web 网站都转去官网。
清华的正确路径是:
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum//RPM-GPG-KEY-MariaDB
再后记, 安装完后, show engines 发现 tokudb 没有在列表里, 查看数据库错误日志发现:
2018-03-12 23:42:50 140254380386432 [ERROR] TokuDB will not run with transparent huge pages enabled.
2018-03-12 23:42:50 140254380386432 [ERROR] Please disable them to continue.
2018-03-12 23:42:50 140254380386432 [ERROR] (echo never > /sys/kernel/mm/transparent_hugepage/enabled)
根据提示运行 # echo never > /sys/kernel/mm/transparent_hugepage/enabled 然后重启 MariaDB,就可以看到 tokudb 的引擎了。
再再后记:
日志里发现错误“
”Mar 13 23:40:34 [ERROR] Missing system table mysql.roles_mapping; please run mysql_upgrade to create it
根据要求运行 mysql_upgrade 即可。 由于 socket 不是常规的 /var/lib/mysql/mysql.sock,导致报错, 去 .my.cnf 设置 socket=/opt/mysql/mysql.sock 正确的路径即可。