TokuDB安裝

swordguan發表於2018-07-11

安裝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
always madvise [never]

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.gz

tar 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 NO NO
MRG_MYISAM YES Collection of identical MyISAM tables NO NO NO
CSV YES CSV storage engine NO NO NO
BLACKHOLE YES /dev/null storage engine (anything you write to it disappears) NO NO NO
MyISAM YES MyISAM storage engine NO NO NO
TokuDB YES Percona TokuDB Storage Engine with Fractal Tree(tm) Technology YES YES YES
InnoDB DEFAULT Percona-XtraDB, Supports transactions, row-level locking, and foreign keys YES YES YES
ARCHIVE YES Archive storage engine NO NO NO
MEMORY YES Hash based, stored in memory, useful for temporary tables NO NO NO
FEDERATED NO Federated MySQL storage engine NULL NULL 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;
Engine Support Comment Transactions XA Savepoints
PERFORMANCE_SCHEMA YES Performance Schema NO NO NO
MRG_MYISAM YES Collection of identical MyISAM tables NO NO NO
CSV YES CSV storage engine NO NO NO
BLACKHOLE YES /dev/null storage engine (anything you write to it disappears) NO NO NO
MyISAM YES MyISAM storage engine NO NO NO
TokuDB DEFAULT Percona TokuDB Storage Engine with Fractal Tree(tm) Technology YES YES YES
InnoDB YES Percona-XtraDB, Supports transactions, row-level locking, and foreign keys YES YES YES
ARCHIVE YES Archive storage engine NO NO NO
MEMORY YES Hash based, stored in memory, useful for temporary tables NO NO NO
FEDERATED NO Federated MySQL storage engine NULL NULL NULL

10 rows in set (0.00 sec)

錯誤:
一、 初始化錯誤
[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引數

/home/work/tokudb57/bin/mysqld –defaults-file=/home/work/data/my3504.conf –basedir=/home/work/tokudb57/ –user=work –initialize-insecure

二、tokudb安裝:
root@dqd-stat-mysql-slave01.bj.uc:/home/work/data# ps_tokudb_admin –enable -u`root` -p`123456` -h 127.0.0.1 -P 3504
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.

ERROR: Failed to list mysql plugins! Please check username, password and other options for connecting to server…

使用者名稱和密碼都是正常的

解決:
/home/work/tokudb57/bin/ps_tokudb_admin –enable –user=root –password=“ –socket=/home/work/tmp/mysql3306.sock

三、 Percona Server 未啟動

/home/work/tokudb57/bin/ps_tokudb_admin –enable –user=root –password=“ –socket=/home/work/tmp/mysql3504.sock

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.

cat: dqd-stat-mysql-slave01.bj.uc.pid: No such file or directory
Checking if Percona Server is running with jemalloc enabled…
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是啟動的

解決:
root@dqd-stat-mysql-slave01.bj.uc:/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...

";
printf "ERROR: Percona Server is not running with libHotBackup.so preloaded, please restart mysql service to enable it and then run this script again...

";

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...

";
exit 1

else

printf "INFO: Percona Server is running with libHotBackup.so preloaded.

";

fi
fi

開啟指令碼和pid 有關 ,那就回一個pid

root@dqd-stat-mysql-slave01.bj.uc:/home/work/data# grep “pid” /home/work/data/mysql3306/my3306.conf
pid-file = /home/work/tmp/mysql.pid


相關文章