Skip to content
logo
Percona Server for MySQL
TokuDB installation
Initializing search
    percona/psmysql-docs
    percona/psmysql-docs
    • Home
      • The Percona XtraDB storage engine
      • List of features available in Percona Server for MySQL releases
      • Percona Server for MySQL feature comparison
      • Changed in Percona Server 8.0
      • Understand version numbers
      • Install Percona Server for MySQL
        • Install using APT repository
        • Files in DEB package
        • Build APT packages
        • Install from downloaded DEB packages
        • Apt pinning
        • Run Percona Server for MySQL
        • Uninstall
        • Install using a RPM repository
        • Files in RPM package
        • Install from downloaded RPM packages
        • Run Percona Server for MySQL
        • Uninstall
        • Install with binary tarballs
        • Binary tarballs available
        • Install Percona Server for MySQL from a source tarball
        • Compile Percona Server for MySQL 8.0 from source
      • Post-installation
      • Percona Server for MySQL in-place upgrading guide: from 5.7 to 8.0
      • Upgrade using the Percona repositories
      • Upgrade from systems that use the MyRocks or TokuDB storage engine and partitioned tables
      • Upgrade using Standalone Packages
      • Downgrade Percona Server for MySQL
      • Running Percona Server for MySQL in a Docker Container
      • Docker environment variables
      • Improved InnoDB I/O scalability
      • Adaptive network buffers
      • Multiple page asynchronous I/O requests
      • Thread pool
      • XtraDB performance improvements for I/O-bound highly-concurrent workloads
      • Prefix index queries optimization
      • Limit the estimation of records in a Query
      • Jemalloc memory allocation profiling
      • The ProcFS plugin
      • Binary logs and replication improvements
      • Compressed columns with dictionaries
      • Extended SELECT INTO OUTFILE/DUMPFILE
      • Extended SET VAR optimizer hint
      • Improved MEMORY storage engine
      • Suppress warning messages
      • Limiting the disk space used by binary log files
      • Support for PROXY protocol
      • SEQUENCE_TABLE(n) function
      • Slow query log rotation and expiration
      • Trigger updates
      • Extended mysqlbinlog
      • Extended mysqldump
      • InnoDB full-text search improvements
      • Too many connections warning
      • Handle corrupted tables
      • Percona Toolkit UDFs
      • Kill idle transactions
      • XtraDB changed page tracking
      • Enforcing storage engine
      • Expanded fast index creation
      • Backup locks
      • Audit log plugin
      • Start transaction with consistent snapshot
      • Extended SHOW GRANTS
      • Utility user
      • Working with SELinux
      • Working with AppArmor
      • PAM authentication plugin
      • Server variables
      • SSL improvements
      • Data masking
        • Using LDAP authentication plugins
        • LDAP authentication plugin system variables
        • Data at Rest Encryption
        • Use the keyring component or keyring plugin
          • Using the Key Management Interoperability Protocol (KMIP)
          • Use the Amazon Key Management Service (AWS KMS)
          • FIDO authentication plugin
        • Encryption functions
        • Encrypt File-Per-Table Tablespace
        • Encrypt schema or general tablespace
        • Encrypt system tablespace
        • Encrypt temporary files
        • Encrypt Binary Log Files and Relay Log Files
        • Encrypting the Redo Log data
        • Encrypt the undo tablespace
        • Rotate the master key
        • Advanced encryption key rotation
        • Encrypt doublewrite buffers
        • Verify the encryption for tables, tablespaces, and schemas
      • User statistics
      • Slow query log
      • Extended show engine InnoDB status
      • Show storage engines
      • Process list
      • Misc. INFORMATION_SCHEMA tables
      • Thread based profiling
      • InnoDB page fragmentation counters
      • Stacktrace
      • Libcoredumper
      • Manage group replication flow control
      • Group replication system variables
      • Percona MyRocks introduction
      • Percona MyRocks installation guide
      • Updated supported features
      • MyRocks limitations
      • Differences between Percona MyRocks and Facebook MyRocks
      • MyRocks Information Schema tables
      • MyRocks server variables
      • MyRocks status variables
      • Gap locks detection
      • Data loading
      • Installing and configuring Percona Server for MySQL with ZenFS support
      • TokuDB introduction
      • TokuDB installation
        • Prerequisites
          • libjemalloc library
          • Transparent huge pages
        • Installation
        • Enabling the TokuDB Storage Engine
        • Enabling the TokuDB Storage Engine Manually
        • TokuDB Version
        • Upgrade
      • Use TokuDB
      • Fast updates with TokuDB
      • TokuDB files and file types
      • TokuDB file management
      • TokuDB background ANALYZE TABLE
      • TokuDB variables
      • TokuDB status variables
      • TokuDB fractal tree indexing
      • TokuDB troubleshooting
      • TokuDB Performance Schema integration
      • Frequently asked questions
      • Migrate and removing the TokuDB storage engine
      • Percona TokuBackup
      • Release notes index
      • Percona Server for MySQL 8.0.32-24 (2023-03-20)
      • Percona Server for MySQL 8.0.31-23 (2023-02-09)
      • Percona Server for MySQL 8.0.30-22 Update (2022-11-21)
      • Percona Server for MySQL 8.0.30-22 (2022-11-21)
      • Percona Server for MySQL 8.0.29-21 (2022-08-08)
      • Percona Server for MySQL 8.0.28-20 (2022-06-20)
      • Percona Server for MySQL 8.0.28-19 (2022-05-12)
      • Percona Server for MySQL 8.0.27-18 (2022-03-02)
      • Percona Server for MySQL 8.0.26-17 (2022-01-26)
      • Percona Server for MySQL 8.0.26-16 (2021-10-20)
      • Percona Server for MySQL 8.0.25-15 (2021-07-13)
      • Percona Server for MySQL 8.0.23-14 (2021-05-12)
      • Percona Server for MySQL 8.0.22-13 (2020-12-14)
      • Percona Server for MySQL 8.0.21-12 (2020-10-13)
      • Percona Server for MySQL 8.0.20-11 (2020-07-21)
      • Percona Server for MySQL 8.0.19-10 (2020-03-23)
      • Percona Server for MySQL 8.0.18-9
      • Percona Server for MySQL 8.0.17-8
      • Percona Server for MySQL 8.0.16-7
      • Percona Server for MySQL 8.0.15-6
      • Percona Server for MySQL 8.0.15-5
      • Percona Server for MySQL 8.0.14
      • Percona Server for MySQL 8.0.13-4
      • Percona Server for MySQL 8.0.13-3
      • Percona Server for MySQL 8.0.12-2rc1
      • List of variables introduced in Percona Server for MySQL 8.0
      • Development of Percona Server for MySQL
      • Trademark policy
      • Index of INFORMATION_SCHEMA tables
      • Frequently asked questions
      • Copyright and licensing information
      • Glossary

    • Prerequisites
      • libjemalloc library
      • Transparent huge pages
    • Installation
    • Enabling the TokuDB Storage Engine
    • Enabling the TokuDB Storage Engine Manually
    • TokuDB Version
    • Upgrade

    TokuDB installation¶

    Important

    Starting with Percona Server for MySQL 8.0.28-19, the TokuDB storage engine is no longer supported. We have removed the storage engine from the installation packages and disabled the storage engine in our binary builds.

    Starting with Percona Server for MySQL 8.0.26-16, the binary builds and packages include but disable the TokuDB storage engine plugins. The tokudb_enabled option and the tokudb_backup_enabled option control the state of the plugins and have a default setting of FALSE. The result of attempting to load the plugins are the plugins fail to initialize and print a deprecation message.

    We recommend Migrating the data to the MyRocks storage engine. To enable the plugins to migrate to another storage engine, set the tokudb_enabled and tokudb_backup_enabled options to TRUE in your my.cnf file and restart your server instance. Then, you can load the plugins.

    The TokuDB storage engine was declared as deprecated in Percona Server for MySQL 8.0. For more information, see the Percona blog post: Heads-Up: TokuDB Support Changes and Future Removal from Percona Server for MySQL 8.0.

    Percona Server for MySQL is compatible with the separately available TokuDB storage engine package. The TokuDB engine must be separately downloaded and then enabled as a plug-in component. This package can be installed alongside with standard Percona Server for MySQL 8.0 releases and does not require any specially adapted version of Percona Server for MySQL.

    The TokuDB storage engine is a scalable, ACID and MVCC compliant storage engine that provides indexing-based query improvements, offers online schema modifications, and reduces replica lag for both hard disk drives and flash memory. This storage engine is specifically designed for high performance on write-intensive workloads which is achieved with Fractal Tree indexing. To learn more about Fractal Tree indexing, you can visit the following Wikipedia page.

    Warning

    Only the Percona supplied TokuDB engine should be used with Percona Server for MySQL 8.0. A TokuDB engine downloaded from other sources is not compatible. TokuDB file formats are not the same across MySQL variants. Migrating from one variant to any other variant requires a logical data dump and reload.

    Prerequisites¶

    libjemalloc library¶

    TokuDB storage engine requires libjemalloc library 3.3.0 or greater. If the version in the distribution repository is lower than that you can use one from Percona Software Repositories or download it.

    If the libjemalloc wasn’t installed and enabled before it will be automatically installed when installing the TokuDB storage engine package by using the **apt** or **yum** package manager, but *Percona Server for MySQL* instance should be restarted forlibjemallocto be loaded. This waylibjemallocwill be loaded withLD_PRELOAD. You can also enablelibjemallocby specifying malloc-lib variable in the[mysqld_safe]section of themy.cnf` file:

    [mysqld_safe]
    malloc-lib= /path/to/jemalloc
    

    Transparent huge pages¶

    TokuDB won’t be able to start if the transparent huge pages are enabled. Transparent huge pages is a feature available in the newer kernel versions. You can check if the Transparent huge pages are enabled with: cat /sys/kernel/mm/transparent_hugepage/enabled

    If transparent huge pages are enabled and you try to start the TokuDB engine you’ll get the following message in you error.log:

    Transparent huge pages are enabled, according to /sys/kernel/mm/redhat_transparent_hugepage/enabled
    Transparent huge pages are enabled, according to /sys/kernel/mm/transparent_hugepage/enabled
    

    You can disable transparent huge pages permanently by passing transparent_hugepage=never to the kernel in your bootloader

    Note

    For this change to take an effect you must reboot your server.

    You can disable the transparent huge pages by running the following command as root.

    Note

    This setting lasts only until the server is rebooted.

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    

    Installation¶

    The TokuDB storage engine for Percona Server for MySQL is currently available in our apt and yum repositories.

    You can install the Percona Server for MySQL with the TokuDB engine by using the respective package manager:

    For yum, use the following command:

        $ yum install percona-server-tokudb.x86_64
    

    For apt, use the following command:

        $ apt install percona-server-tokudb
    

    Enabling the TokuDB Storage Engine¶

    Once the TokuDB server package is installed, the following output is shown:

    Percona Server for MySQL has implemented ps-admin to make the enabling the TokuDB storage engine easier. This script will automatically disable Transparent huge pages, if they’re enabled, and install and enable the TokuDB storage engine with all the required plugins. You need to run this script as root or with sudo. The script should only be used for local installations and should not be used to install TokuDB to a remote server. After you run the script with required parameters:

    Percona Server for MySQL has implemented ps_tokudb_admin script to make the enabling the TokuDB storage engine easier. This script will automatically disable Transparent huge pages, if they’re enabled, and install and enable the TokuDB storage engine with all the required plugins. You need to run this script as root or with sudo. The script should only be used for local installations and should not be used to install TokuDB to a remote server. After you run the script with required parameters:

    $ ps-admin --enable-tokudb -uroot -pPassw0rd
    

    Following output will be displayed:

    Checking if Percona server is running with jemalloc enabled...
    >> Percona server is running with jemalloc enabled.
    
    Checking transparent huge pages status on the system...
    >> Transparent huge pages are currently disabled on the system.
    
    Checking if thp-setting=never option is already set in config file...
    >> Option thp-setting=never is not set in the config file.
    >> (needed only if THP is not disabled permanently on the system)
    
    Checking TokuDB plugin status...
    >> TokuDB plugin is not installed.
    
    Adding thp-setting=never option into /etc/mysql/my.cnf
    >> Successfuly added thp-setting=never option into /etc/mysql/my.cnf
    
    Installing TokuDB engine...
    >> Successfuly installed TokuDB plugin.
    

    If the script returns no errors, TokuDB storage engine should be successfully enabled on your server. You can check it out by running SHOW ENGINES;

    Enabling the TokuDB Storage Engine Manually¶

    If you don’t want to use ps-admin you’ll need to manually install the storage engine ad required plugins.

    INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';
    INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so';
    

    After the engine has been installed it should be present in the engines list. To check if the engine has been correctly installed and active: SHOW ENGINES;

    To check if all the TokuDB plugins have been installed correctly you should run: SHOW PLUGINS;

    TokuDB Version¶

    TokuDB storage engine version can be checked with: SELECT @@tokudb_version;

    Upgrade¶

    Before upgrading to Percona Server for MySQL 8.0, make sure that your system is ready by running mysqlcheck: mysqlcheck -u root -p --all-databases --check-upgrade

    Warning

    With partitioned tables that use the TokuDB or MyRocks storage engine, the upgrade only works with native partitioning.

    Contact us

    For free technical help, visit the Percona Community Forum.

    To report bugs or submit feature requests, open a JIRA ticket.

    For paid support and managed or consulting services , contact Percona Sales.


    Last update: 2023-01-12
    Percona LLC and/or its affiliates, © 2023
    Made with Material for MkDocs

    Cookie consent

    We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.