安裝TokuDB:
0、關閉記憶體大頁
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
檢視下
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
cat /sys/kernel/mm/transparent_hugepage/defrag
tokuDB記憶體配置設定需要jemalloc支援,是以使用之前需要安裝jemalloc
yum install -y jemalloc
rpm -qa |grep jemalloc
jemalloc-3.6.0-1.el7.x86_64
rpm -ql jemalloc-3.6.0-1.el7.x86_64
/usr/bin/jemalloc.sh
/usr/lib64/libjemalloc.so.1
/usr/share/doc/jemalloc-3.6.0
/usr/share/doc/jemalloc-3.6.0/COPYING
/usr/share/doc/jemalloc-3.6.0/README
/usr/share/doc/jemalloc-3.6.0/VERSION
/usr/share/doc/jemalloc-3.6.0/jemalloc.html
1、從percona官網下載下傳
https://www.percona.com/downloads/Percona-Server-LATEST/ wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.21-21/binary/tarball/Percona-Server-5.7.21-21-Linux.x86_64.ssl101.tar.gztar xf Percona-Server-5.7.21-21-Linux.x86_64.ssl101.tar.gz
mv Percona-Server-5.7.21-21-Linux.x86_64.ssl101 tokudb57
mkdir /home/work/data/mysql3504
2、初如化
/home/work/tokudb57/bin/mysqld --defaults-file=/home/work/data/my3504.conf --basedir=/home/work/tokudb57/ --user=work --initialize-insecure
--initialize-insecure 初如化MySQL是空密碼
--defaults-file= 指定配置檔案,最好放在前面,不要放在最後
3、配置檔案my3306.conf
加入:
[mysqld_safe]
thp-setting=never
malloc-lib=/usr/lib64/libjemalloc.so.1
3、啟動
chown -R work:work /home/work/data/mysql3306/
改密碼:
set password=password('123456');
/home/work/tokudb57/bin/mysqld_safe --defaults-file=/home/work/data/mysql3306/my3306.conf --user=work &
4、安裝TokuDB
cd /home/work/tokudb57/bin/
ps_tokudb_admin --enable -u'root' -p -S /home/work/tmp/mysql3306.sock
/home/work/tokudb57/bin/ps_tokudb_admin --enable --user=root --password='' --socket=/home/work/tmp/mysql3306.sock
Enter password:
WARNING: This script is deprecated and will be removed in 8.0. You can use ps-admin script which has more functionality.
Checking SELinux status...
INFO: SELinux is disabled.
Checking if Percona Server is running with jemalloc enabled...
INFO: Percona Server is running with jemalloc enabled.
Checking transparent huge pages status on the system...
INFO: Transparent huge pages are currently disabled on the system.
Checking if thp-setting=never option is already set in config file...
INFO: Option thp-setting=never is not set in the config file.
(needed only if THP is not disabled permanently on the system)
Checking TokuDB engine plugin status...
INFO: TokuDB engine plugin is not installed.
Adding thp-setting=never option into /etc/my.cnf
INFO: Successfully added thp-setting=never option into /etc/my.cnf
Installing TokuDB engine...
INFO: Successfully installed TokuDB engine plugin.
(root@(none))>show engines; | |||||
---|---|---|---|---|---|
Engine | Support | Comment | Transactions | XA | Savepoints |
PERFORMANCE_SCHEMA | YES | Performance Schema | NO | ||
MRG_MYISAM | Collection of identical MyISAM tables | ||||
CSV | CSV storage engine | ||||
BLACKHOLE | /dev/null storage engine (anything you write to it disappears) | ||||
MyISAM | MyISAM storage engine | ||||
TokuDB | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology | ||||
InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | |||
ARCHIVE | Archive storage engine | ||||
MEMORY | Hash based, stored in memory, useful for temporary tables | ||||
FEDERATED | Federated MySQL storage engine | NULL |
10 rows in set (0.00 sec)
此時InnoDB還是預設引擎 重新開機下server,并在my3306.conf [mysqld]添加如下配置:
------------- tokudb ---------------
default-storage-engine = TokuDB
tokudb_directio = on
tokudb_cache_size = 2G
tokudb_row_format = tokudb_lzma
tokudb_commit_sync = 0
tokudb_fsync_log_period = 1000
重新開機後TokuDB 就是預設存儲引擎了
mysql> show engines; | |||||
---|---|---|---|---|---|
錯誤:
一、 初始化錯誤
[ERROR] InnoDB: Expected to open 4 undo tablespaces but was able to find only 0 undo tablespaces.Set the innodb_undo_tablespaces parameter to the correct value and retry. Suggested value is 0
解決:
報錯原因:
在初始化資料庫的時候沒有指定innodb_undo_tablespaces參數
解決方法:
在初始化資料庫的時候寫上--defaults-file參數,在對應的配置檔案中寫上對應的innodb_undo_tablespaces參數
二、tokudb安裝:
[email protected]:/home/work/data# ps_tokudb_admin --enable -u'root' -p'123456' -h 127.0.0.1 -P 3504
ERROR: Failed to list mysql plugins! Please check username, password and other options for connecting to server...
使用者名和密碼都是正常的
解決:
三、 Percona Server 未啟動
/home/work/tokudb57/bin/ps_tokudb_admin --enable --user=root --password='' --socket=/home/work/tmp/mysql3504.sock
cat: dqd-stat-mysql-slave01.bj.uc.pid: No such file or directory
grep: /proc//environ: No such file or directory
which: no mysqld in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/itools/python/bin/:/home/work/local/mysql/bin:/root/opt/bin/:/home/work/opbin/xtrabackup/bin:/home/work/nodejs/bin:/root/bin)
ldd: missing file arguments
Try `ldd --help' for more information.
ERROR: Percona Server is not running with jemalloc, please restart mysql service to enable it and then run this script...
搞了老錯誤,又來新錯誤, server是啟動的
[email protected]:/home/work/data# grep "Percona Server is not running" /home/work/tokudb57/bin/ps_tokudb_admin
printf "ERROR: Percona Server is not running with jemalloc, please restart mysql service to enable it and then run this script...\n\n";
printf "ERROR: Percona Server is not running with libHotBackup.so preloaded, please restart mysql service to enable it and then run this script again...\n\n";
vim /home/work/tokudb57/bin/ps_tokudb_admin
if [ $ENABLE_TOKUBACKUP = 1 ]; then
printf "Checking if Percona Server is running with libHotBackup.so preloaded...n"
LIBHOTBACKUP_STATUS=$(grep -c libHotBackup.so /proc/${PID_NUM}/environ)
if [ $LIBHOTBACKUP_STATUS = 0 ]; then
printf "ERROR: Percona Server is not running with libHotBackup.so preloaded, please restart mysql service to enable it and then run this script again...\n\n";
exit 1
else
printf "INFO: Percona Server is running with libHotBackup.so preloaded.\n\n";
fi
打開腳本和pid 有關 ,那就回一個pid
[email protected]:/home/work/data# grep "pid" /home/work/data/mysql3306/my3306.conf
pid-file = /home/work/tmp/mysql.pid