Documentation
Getting started
Get started in minutes
Tarantool
In-memory computing platform
Data Grid
Enterprise data services with ease
Cartridge
Cluster Management for Tarantool
Modules
Extensions for the database
Connectors
Language APIs
Tarantool Enterprise
Advanced support and features
Sign in
Sign in
Sign up
Download
En
Ru
Sign in
Sign up
Products
Tarantool Еnterprise
Tarantool Cloud Edition
Tarantool Data Grid
Tarantool CDC
Enterprise vs Community
Documentation
Architectural patterns
Tarantool
Cartridge
Data Grid
Connectors
Modules
Tarantool Enterprise
How to guides
Services
Support
Premium support
Learn
Solutions
Architecture
Company
Contacts
Careers
Clients
Version:
latest (2.x)
1.10
1.6
Getting started
First steps
Installation
Getting to know Tarantool
Configuring a cluster [1 minute]
Creating a data schema [2 minutes]
Writing data [5 minutes]
Setting up HTTP API [2 minutes]
Looking at the data [1 minute]
Scaling the cluster [1 minute]
Checking how sharding works [1 minute]
Disconnecting a shard for a while [1 minute]
See also
Connecting to the cluster
Updating the data schema
Writing code in a cluster application
What’s next?
Basic Tarantool tutorial
Using a Docker image
Launching a container
Attaching to Tarantool
Creating a database
Stopping a container
Using a package manager
Starting Tarantool
Creating a database
Connecting remotely
Connecting from your favorite language
Connecting from Python
Pre-requisites
Connecting to Tarantool
Manipulating the data
Inserting data
Querying data
Updating data
Deleting data
Executing stored procedures
Feature comparison
Connecting from PHP
Pre-requisites
Connecting to Tarantool
Manipulating the data
Inserting data
Querying data
Updating data
Deleting data
Executing stored procedures
Connecting from Go
Pre-requisites
Connecting to Tarantool
Manipulating the data
Inserting data
Querying data
Updating data
Deleting data
Executing stored procedures
Feature comparison
Connecting to Tarantool from C++
Pre-requisites
Installation
Starting Tarantool and creating a database
Setting up access rights
Connecting to Tarantool
Embedding connector
Instantiating objects
Connecting
Error handling
Working with requests
Preparing requests
Sending requests
Receiving responses
Several connections at once
Closing connections
Building and launching C++ application
Decoding and reading the data
Base reader prototype
Parsing values
Parsing array
Setting reader
Creating your first Tarantool Cartridge application
Data model
Tuples
Spaces
Indexes
Data types
Lua versus MsgPack
Field Type Details
Indexed field types
Collations
Sequences
Options for box.schema.sequence.create()
Persistence
Operations
Data operations
Complexity factors
Data Schema Description
Data schema description in a code file
Data schema description using the DDL module
Migrations
Adding a field to the end of a space
Creating an index
Other types of migrations
What you need to know when writing complex migrations
How you can apply migration
CRUD operations
Examples
Example: using box.space functions to read _space tuples
Example: using box.space functions to organize a _space tuple
Example: using data operations
INSERT
DELETE
UPDATE
UPSERT
REPLACE
SELECT
box.schema.space.create()
space_object:alter()
space_object:auto_increment()
space_object:bsize()
space_object:count()
space_object:create_index()
Details about index field types
Allowing null for an indexed key
is_nullable parts option
exclude_null parts option
Creating an index using field names instead of field numbers
Creating an index using the path option for map fields (JSON-path indexes)
Creating a multikey index using the path option with [*]
Creating a functional index
space_object:delete()
space_object:drop()
space_object:format()
space_object:frommap()
space_object:get()
space_object:insert()
space_object:len()
space_object:on_replace()
space_object:before_replace()
space_object:pairs()
space_object:put()
space_object:rename()
space_object:replace() / put()
space_object:run_triggers()
space_object:select()
space_object:truncate()
space_object:update()
space_object:upsert()
space_object:user_defined()
box.space.create_check_constraint()
space_object:enabled
space_object:field_count
space_object.id
space_object.index
box.space._cluster
box.space._func
box.space._index
box.space._vindex
box.space._priv
box.space._vpriv
box.space._schema
box.space._sequence
box.space._sequence_data
box.space._space
box.space._vspace
box.space._user
box.space._vuser
box.space._ck_constraint
box.space._collation
box.space._vcollation
System space views
box.space._session_settings
Indexes
Creating an index
Index operations
Index types
TREE indexes
HASH indexes
RTREE indexes
BITSET indexes
Transactions
Threads, fibers and yields
Cooperative multitasking
Transactions
Implicit yields
Transactional manager
Streams
Overview
Features
Interaction between streams and transactions
Access control
Users
Passwords
Owners and privileges
Roles
Sessions and security
Triggers
Sharding
Architecture
Overview
Virtual buckets
Structure
Storage
Router
CRUD (create, read, update, delete) operations
SELECT requests
Calling stored procedures
Rebalancer
Migration of buckets
The
_bucket
system space
The routing table
Processing requests
Glossary
Administration
Installation
Configuration
Replica weights
Replica set weights
Rebalancing process
Parallel rebalancing
Replica set lock and bucket pin
Replica set lock and rebalancing
Bucket pin and rebalancing
Bucket ref
Defining spaces
Adding data
Bootstrapping and restarting a storage
Fibers
Garbage collector
Bucket recovery
Failover
Quick start guide
Sample configuration
Configuration reference
Basic parameters
Replica set parameters
API Reference
Router API
Router public API
Router internal API
Storage API
Storage public API
Storage internal API
Cluster on Cartridge
Overview
About Tarantool Cartridge
Getting started
Prerequisites
Create your first application
Next steps
Contributing
Developer’s guide
Introduction
Installing Tarantool Cartridge
Creating a project
Cluster roles
Built-in roles
Custom roles
Defining role dependencies
Using multiple vshard storage groups
Role’s life cycle (and the order of function execution)
Configuring custom roles
Custom configuration example
Applying custom role’s configuration
Using the built-in HTTP server
Implementing authorization in the web interface
Application versioning
Using .cartridge.ignore files
Failover architecture
Instance configuration upon a leader change
Leader appointment rules
Disabled mode
Eventual failover
Stateful failover
Raft failover (beta)
Case: external provider outage
Case: coordinator outage
Manual leader promotion
Fencing
Failover configuration
Lua API
GraphQL API
Stateboard configuration
Fine-tuning failover behavior
Configuring instances
Configuration basics
Internal representation of clusterwide configuration
Two-phase commit
Managing role-specific data
HTTP API
GraphQL API
Lua API
Luatest helpers
Deploying an application
Deploying as an RPM or DEB package
Entities created during installation
Deploying as a tar+gz archive
Deploying from sources
Starting/stopping instances
Start/stop using tarantool
Start/stop using cartridge CLI
Start/stop using systemctl
Error handling guidelines
Error objects in Lua
GraphQL
HTTP
Cluster instance lifecycle
Unconfigured
ConfigFound
ConfigLoaded
InitError
BootstrappingBox
RecoveringSnapshot
BootError
ConnectingFullmesh
BoxConfigured
ConfiguringRoles
RolesConfigured
OperationError
Administrator’s guide
Deploying the cluster
Updating the configuration
Managing the cluster
Changing the cluster topology
Data rebalancing
Deactivating replica sets
Expelling instances
Enabling automatic failover
Switching the replica set’s master
Managing users
Resolving conflicts
Monitoring a cluster via CLI
Connecting to nodes via CLI
Monitoring storages
Output example
Status list
Potential issues
Monitoring routers
Output example
Status list
Potential issues
Upgrading schema
Disaster recovery
Backups
Troubleshooting
Problems with replica
Editing clusterwide configuration in WebUI returns an error
An instance is stuck in the ConnectingFullmesh state upon restart
I want to run an instance with a new advertise_uri
The cluster is doomed, I’ve edited the config manually. How do I reload it?
Repairing cluster using Cartridge CLI repair command
Changing instance advertise URI
Changing replicaset leader
Removing instance from the cluster
Cartridge API
Module
cartridge
Functions
cfg (opts, box_opts)
reload_roles ()
is_healthy ()
Tables
VshardGroup
Global functions
_G.cartridge_get_schema ()
_G.cartridge_set_schema (schema)
Clusterwide DDL schema
get_schema ()
set_schema (schema)
Cluster administration
ServerInfo
ReplicasetInfo
admin_get_servers ([uuid])
admin_get_replicasets ([uuid])
admin_probe_server (uri)
admin_enable_servers (uuids)
admin_disable_servers (uuids)
admin_restart_replication (…)
admin_bootstrap_vshard ()
Automatic failover management
FailoverParams
failover_get_params ()
failover_set_params (opts)
failover_promote (replicaset_uuid[, opts])
admin_get_failover ()
admin_enable_failover ()
admin_disable_failover ()
Managing cluster topology
admin_edit_topology (args)
EditReplicasetParams
EditServerParams
JoinServerParams
Clusterwide configuration
config_get_readonly ([section_name])
config_get_deepcopy ([section_name])
config_patch_clusterwide (patch)
config_force_reapply (uuids)
Inter-role interaction
service_get (module_name)
service_set (module_name, instance)
Cross-instance calls
rpc_call (role_name, fn_name[, args[, opts]])
Usage:
rpc_get_candidates (role_name[, opts])
Authentication and authorization
http_authorize_request (request)
http_render_response (response)
http_get_username ()
Deprecated functions
admin_edit_replicaset (args)
admin_edit_server (args)
admin_join_server (args)
admin_expel_server (uuid)
Module
cartridge.auth
Local Functions
set_enabled (enabled)
get_enabled ()
init ()
set_callbacks (callbacks)
get_callbacks ()
Configuration
set_params (opts)
get_params ()
AuthParams
Authorizarion
set_lsid_cookie (user)
get_session_username ()
authorize_request (request)
render_response (response)
User management
UserInfo
add_user (username, password, fullname, email)
get_user (username)
edit_user (username, password, fullname, email)
list_users ()
remove_user (username)
Module
cartridge.roles
Functions
reload ()
forbid_reload ()
allow_reload ()
is_reload_forbidden ()
Local Functions
cfg (module_names)
get_all_roles ()
get_known_roles ()
get_enabled_roles_without_deps ()
get_enabled_roles (roles)
get_role_dependencies (role_name)
validate_config (conf_new, conf_old)
apply_config (conf, opts, is_master)
stop ()
Module
cartridge.issues
Tables
limits
Local Functions
validate_limits (limits)
set_limits (limits)
Module
cartridge.argparse
Functions
parse ()
get_opts (filter)
get_box_opts ()
get_cluster_opts ()
Tables
cluster_opts
box_opts
Module
cartridge.twophase
Functions
twophase_commit (opts)
Usage:
patch_clusterwide (patch)
force_reapply (uuids)
get_schema ()
set_schema (schema)
on_patch (trigger_new, trigger_old)
Usage:
Local Functions
wait_config_release (timeout)
prepare_2pc (upload_id)
commit_2pc ()
abort_2pc ()
Module
cartridge.failover
Functions
get_coordinator ()
Local Functions
schedule_clear ()
schedule_add ()
_get_appointments_disabled_mode ()
_get_appointments_eventual_mode ()
_get_appointments_stateful_mode ()
accept_appointments (replicaset_uuid)
fencing_check ()
check_suppressing_lock ()
failover_loop ()
cfg ()
get_active_leaders ()
is_leader ()
is_rw ()
is_vclockkeeper ()
is_paused ()
failover_suppressed ()
consistency_needed ()
force_inconsistency (replicaset_uuid)
wait_consistency (replicaset_uuid)
Module
cartridge.topology
Functions
cluster_is_healthy ()
Local Functions
get_leaders_order (topology_cfg, replicaset_uuid, new_order)
validate (topology_new, topology_old)
find_server_by_uri (topology_cfg, uri)
refine_servers_uri (topology_cfg)
probe_missing_members (servers)
get_fullmesh_replication (topology_cfg, replicaset_uuid)
Module
cartridge.clusterwide-config
Usage:
Functions
new ([data])
save (clusterwide_config, filename)
load (filename)
Local Functions
load_from_file (filename)
load_from_dir (path)
remove (string)
Module
cartridge.rpc
Functions
get_candidates (role_name[, opts])
call (role_name, fn_name[, args[, opts]])
Usage:
Local Functions
get_connection (role_name[, opts])
Module
cartridge.tar
Functions
pack (files)
unpack (tar)
Module
cartridge.pool
Functions
connect (uri[, opts])
Local Functions
format_uri (uri)
map_call (fn_name[, args[, opts]])
Module
cartridge.upload
Functions
upload (data, uri_list)
Tables
inbox
Module
cartridge.confapplier
Functions
get_active_config ()
get_readonly ([section_name])
get_deepcopy ([section_name])
Local Functions
set_state (state[, err])
wish_state (state[, timeout])
validate_config (clusterwide_config_new)
restart_replication ()
apply_config (clusterwide_config)
Module
cartridge.remote-control
Local Functions
bind (host, port)
accept (credentials)
unbind ()
drop_connections ()
Module
cartridge.service-registry
Functions
set (module_name, instance)
get (module_name)
list ()
Module
custom-role
Functions
init (opts)
stop (opts)
validate_config (conf_new, conf_old)
apply_config (conf, opts)
get_issues ()
Fields
role_name
hidden
permanent
Module
cartridge.lua-api.stat
Local Functions
get_stat (uri)
Module
cartridge.lua-api.boxinfo
Local Functions
get_info (uri)
Module
cartridge.lua-api.get-topology
Tables
ReplicasetInfo
ServerInfo
Local Functions
get_topology ()
Module
cartridge.lua-api.edit-topology
Editing topology
edit_topology (args)
EditReplicasetParams
JoinServerParams
EditServerParams
Module
cartridge.lua-api.topology
Functions
get_servers ([uuid])
get_replicasets ([uuid])
probe_server (uri)
enable_servers (uuids)
disable_servers (uuids)
restart_replication (…)
Local Functions
get_self ()
Module
cartridge.lua-api.failover
Functions
get_params ()
set_params (opts)
get_failover_enabled ()
set_failover_enabled (enabled)
promote (replicaset_uuid[, opts])
pause ()
resume ()
Tables
FailoverParams
Module
cartridge.lua-api.vshard
Functions
get_config ()
bootstrap_vshard ()
Module
cartridge.lua-api.deprecated
Deprecated functions
join_server (args)
edit_server (args)
expel_server (uuid)
edit_replicaset (args)
Class
cartridge.test-helpers.cluster
Functions
Cluster:new (object)
Cluster:server (alias)
Cluster:server_by_role (role_name)
Cluster:servers_by_role (role_name)
Cluster:apply_topology ()
Cluster:start ()
Cluster:stop ()
Cluster:join_server (server)
Cluster:wait_until_healthy (server)
Cluster:upload_config (config, opts)
Cluster:download_config ()
Cluster:retrying (config, fn[, …])
Tables
cartridge.test-helpers.cluster.replicaset_config
Local Functions
cartridge.test-helpers.cluster.iter_servers_by_role (cluster, role_name)
Class
cartridge.test-helpers.server
Functions
Server:build_env ()
Server:start ()
Server:stop ()
Server:graphql (request, http_options)
Server:join_cluster (main_server[, options])
Server:setup_replicaset (config)
Server:upload_config (config, table)
Server:download_config ()
Methods
cartridge.test-helpers.server:new (object)
Class
cartridge.test-helpers.etcd
Functions
Etcd:new (object)
Etcd:start ()
Etcd:stop ()
Class
cartridge.test-helpers.stateboard
Methods
cartridge.test-helpers.stateboard:new (object)
Cartridge CLI
Cartridge application lifecycle
Installation
Enable shell completion
Linux
OS X
Supported Cartridge CLI commands
create
Flags
Details
Project directory
Using a custom template
Text variables
build
Flags
Details
start
Flags
Details
stop
Flags
status
Flags
enter
Flags
connect
log
Options
clean
Flags
pack
TGZ
RPM/DEB
Flags
Package contents
Dependencies
Example dependencies file
Pre-install and post-install scripts
Example pre-/post-install script
Customizing systemd unit files
Example
Supported variables
Passing parameters to unit files
Supported parameters
Example
Installation
Starting application instances
Docker
Flags
Result image tag
Starting application instances
Image details
Installing packages required by the application in runtime
Building in Docker
Flags
Build image
Installing packages required for application build
Flags
Details
Building the package
Customizing your build directory
How building works
Stage 1: Cleaning up the application directory
Stage 2. Building the application
Stage 3. Cleaning up the files before packing
Versioning
Path caching
repair
Subcommands
list-topology
remove-instance
set-leader
set-uri
Flags
What does repair actually do?
admin
Flags
Details
Connecting to an instance
Example
Get functions help
Call an admin function
replicasets
Usage
How it works
Subcommands
setup
save
list
join
list-roles
list-vshard-groups
add-roles
remove-roles
set-weight
set-failover-priority
bootstrap-vshard
expel
Examples
Create two replicasets
List the available roles
Set instance roles
Bootstrap vshard
List current replica sets
Expel an instance
failover
Flags
Details
Subcommands
set
Modes
Flags
setup
Example
status
disable
Failover parameters
Eventual failover
Stateful failover
Global flags
Application instance paths
Path configuration file
Directory paths
Run directory
Data directory
Logs directory
Instance configuration file
Pre-build and post-build scripts
cartridge.pre-build
Example
cartridge.post-build
Example
Cartridge Kubernetes guide
Installation tools
Creating an application
Building the application
Creating a Kubernetes cluster
Using
minikube
Using
kind
Launch the application
Tarantool Kubernetes operator
Deploying a Tarantool Cartridge application
Cluster management
Adding a new replica
Adding a shard (replica set)
Updating application version
Running multiple Tarantool Cartridge clusters in different namespaces
Deleting a cluster
Failover
Eventual mode
Stateful mode
etcd
Stateboard
Troubleshooting
Insufficient CPU
Insufficient disk space
CrashLoopBackOff status
Recreating replicas
Customization
Sidecar containers
Installation in an internal network
Delivery of tools
Installing the Tarantool Kubernetes operator
Installing the Tarantool Cartridge app
Changelog
[Unreleased]
Added
Changed
[2.7.4] - 2021-04-11
Added
Changed
Fixed
[2.7.3] - 2021-10-27
Changed
[2.7.2] - 2021-10-08
Added
Changed
Fixed
[2.7.1] - 2021-08-18
Fixed
[2.7.0] - 2021-08-10
Added
Changed
Fixed
Enhanced in WebUI
[2.6.0] - 2021-04-26
Added
Changed
Fixed
Enhanced in WebUI
[2.5.1] - 2021-03-24
Added
Fixed
[2.5.0] - 2021-03-05
Added
Fixed
Enhanced is WebUI
[2.4.0] - 2020-12-29
Added
Changed
Fixed
Enhanced is WebUI
[2.3.0] - 2020-08-26
Added
Fixed
Enhanced is WebUI
[2.2.0] - 2020-06-23
Added
Changed
Enhanced in WebUI
[2.1.2] - 2020-04-24
Fixed
[2.1.1] - 2020-04-20
Fixed
[2.1.0] - 2020-04-16
Added
Changed
Deprecated
Fixed
Enhanced in WebUI
[2.0.2] - 2020-03-17
Added
Changed
Fixed
Enhanced in WebUI
[2.0.1] - 2020-01-15
Added
Fixed
[2.0.0] - 2019-12-27
Added
Changed
Removed
Fixed
[1.2.0] - 2019-10-21
Added
Changed
Fixed
[1.1.0] - 2019-09-24
Added
Changed
Deprecated
Fixed
[1.0.0] - 2019-08-29
Added
Changed
Removed
[0.10.0] - 2019-08-01
Added
Fixed
[0.9.2] - 2019-07-12
Fixed
[0.9.1] - 2019-07-10
Added
Fixed
[0.9.0] - 2019-07-02
Added
Changed
Fixed
[0.8.0] - 2019-05-20
Added
Changed
Fixed
[0.7.0] - 2019-04-05
Added
Changed
[0.6.3] - 2019-02-08
Fixed
[0.6.2] - 2019-02-07
Fixed
[0.6.1] - 2019-02-05
Fixed
[0.6.0] - 2019-01-30
Fixed
Changed
Added
[0.5.1] - 2018-12-12
Fixed
[0.5.0] - 2018-12-11
Fixed
Changed
Added
[0.4.0] - 2018-11-27
Fixed/Improved
Added
[0.3] - 2018-10-30
Changed
Added
[0.2] - 2018-10-01
Changed
[0.1] - 2018-09-25
Added
Application server
Launching an application
Launching in Docker
Launching a binary program
Creating an application
Modules, rocks and applications
Avro schemas
Bootstrapping a database
GIS
Index iterators
Fibers
Logging
nginx
Non-blocking IO
Installing a module
Installing a module from a repository
Installing a module from deb/rpm
Contributing a module
Contributing a module in Lua
Contributing a module in C
Reloading a module
Reloading a module in Lua
Reloading a module in C
LuaJIT memory profiler
Working with the profiler
Collecting binary profile
Parsing binary profile and generating profiling report
FAQ
Profiling report analysis example
The heap summary and the –leak-only option
LuaJIT getmetrics
misc.getmetrics()
getmetrics table values
getmetrics C API
Example with gc_strnum, strhash_miss, and strhash_hit
Example with gc_allocated and gc_freed
Example with gc_allocated and a space optimization
gc_steps_atomic and gc_steps_propagate
Example with jit_trace_num and jit_trace_abort
Example with jit_snap_restore and a performance unoptimization
Developing with an IDE
Cookbook recipes
hello_world.lua
console_start.lua
fio_read.lua
fio_write.lua
ffi_printf.lua
ffi_gettimeofday.lua
ffi_zlib.lua
ffi_meta.lua
ffi_varbinary_insert.lua
print_arrays.lua
count_array.lua
count_array_with_nils.lua
count_array_with_nulls.lua
count_map.lua
swap.lua
class.lua
garbage.lua
fiber_producer_and_consumer.lua
socket_tcpconnect.lua
socket_tcp_echo.lua
getaddrinfo.lua
socket_udp_echo.lua
http_get.lua
http_send.lua
http_server.lua
http_generate_html.lua
select_all.go
Administration
Instance configuration
Instance file
tarantoolctl
configuration file
Starting/stopping an instance
Running Tarantool locally
Logs
Security
Server introspection
Using Tarantool as a client
Executing code on an instance
Health checks
Profiling performance issues
fiber.info()
Poor man’s profilers
gperftools
perf
jit.p
Daemon supervision
Server signals
Automatic instance restart
Core dumps
Stack traces
Debugger
Disaster recovery
Master-replica
Master-master
Data loss
Backups
Hot backup (memtx)
Hot backup (vinyl/memtx)
Continuous remote backup (memtx)
Continuous backup (memtx)
Upgrades
Upgrading a Tarantool database
Upgrading a Tarantool instance
How to upgrade from Tarantool 1.7 to 2.x
How to upgrade from Tarantool 1.6 to 2.x
How to upgrade from Tarantool 1.6 to 1.7
Upgrading Tarantool in a replication cluster
Notes for operating systems
Mac OS
FreeBSD
Gentoo Linux
Bug reports
Troubleshooting guide
Problem: INSERT/UPDATE-requests result in ER_MEMORY_ISSUE error
Problem: Tarantool generates too heavy CPU load
Problem: Query processing times out
Problem: Replication “lag” and “idle” contain negative values
Problem: Replication “idle” keeps growing, but no related log messages appear
Problem: Replication statistics differ on replicas within a replica set
Problem: Master-master replication is stopped
Problem: Tarantool works much slower than before
Problem: Fiber switch is forbidden in
__gc
metamethod
Problem description
Solution
Monitoring
Monitoring: getting started
Tarantool
Collect HTTP metrics
Instance health check
Cartridge role
Metrics reference
General metrics
Memory general
Memory allocation
Spaces
Network
Fibers
Operations
Replication
Runtime
Cartridge
LuaJIT metrics
CPU metrics
Vinyl
Disk
Regulator
Transactional activity
Memory
Scheduler
Event loop metrics
API reference
Collectors
counter
gauge
histogram
summary
Labels
Metrics functions
Metrics role API
Collecting HTTP request latency statistics
CPU usage metrics
Examples
Metrics plugins
Available plugins
Prometheus
Usage
Sample settings
Graphite
Usage
JSON
Usage
Plugin-specific API
Creating custom plugins
Grafana dashboard
Prepare a monitoring stack
Collect metrics with server agents
Import the dashboard
Troubleshooting
Replication
Replication architecture
Replication mechanism
Replication setup
Replication roles: master and replica
Replication topologies: cascade, ring and full mesh
Bootstrapping a replica set
Master-replica bootstrap
Controlled failover
Master-master bootstrap
Adding instances
Adding a replica
Adding a master
Orphan status
Server startup with replication
Removing instances
Monitoring a replica set
Recovering from a degraded state
Reseeding a replica
Resolving replication conflicts
Solving problems with master-master replication
Replacing the same primary key
Preventing duplicate insert
Synchronous replication
Overview
Usage
Synchronous and asynchronous transactions
Limitations and known problems
Leader election
Tips and tricks
Automated leader election
Leader election and synchronous replication
Leader election process
Configuration
Monitoring
Important notes
Storage engines
Storing data with memtx
Memory model
Data persistence
Accessing data
Replicating data
Summary
Storing data with vinyl
Algorithm
Filling an LSM tree
Controlling the form of an LSM tree
Search
Range searching
Deletion
Advantages of an LSM tree
Disadvantages of an LSM tree and how to deal with them
Unpredictable write speed
Unpredictable read speed
Compression and page index
Bloom filters
Caching
Garbage collection control
Advanced features of vinyl
Upsert
Secondary keys
Difference between memtx and vinyl storage engines
Connectors
C++
Connector class
Public methods
Connection class
Public types
Public methods
Nested classes and their methods
Space class
Index class
Protocol
Packet example
Setting up the server for connector examples
Java
Go
Feature comparison
R
Erlang
Perl
PHP
Python
Feature comparison
Node.js
C#
C
Example 1
SETUP
CONNECT
MAKE REQUEST
SEND REQUEST
GET REPLY
TEARDOWN
Example 2
Interpreting function return values
Reference
SQL reference
What Tarantool’s SQL product delivers
Differences from other products
What Tarantool’s SQL manual delivers
SQL beginners’ guide
SQL user guide
Getting Started
Supported Syntax
Concepts
Tokens
Literals
Identifiers
Reserved words
Operands
Operand data types
Operators
Special situations
Expressions
Comparing and ordering
Statements
List of legal statements
Data Type Conversion
Implicit string/numeric cast
SQL statements and clauses
Statements that change data definition
ALTER TABLE
CREATE TABLE
Column definition
Column definition – data type
Column definition – the rules for the SCALAR data type
Column definition – relation to NoSQL
Column definition – column-constraint or default clause
Column definition – examples
Table Constraint Definition
Table Constraint Definition for foreign keys
DROP TABLE
CREATE VIEW
DROP VIEW
CREATE INDEX
DROP INDEX
CREATE TRIGGER
Trigger extra clauses
Trigger activation
INSTEAD OF triggers
DROP TRIGGER
Statements that change data
INSERT
UPDATE
DELETE
REPLACE
TRUNCATE
SET
Statements that retrieve data
SELECT
Select list
FROM clause
WHERE clause
GROUP BY clause
Aggregate functions
HAVING clause
ORDER BY clause
LIMIT clause
Subquery
WITH clause
WITH RECURSIVE
UNION, EXCEPT, and INTERSECT clauses
INDEXED BY clause
VALUES
PRAGMA
EXPLAIN
Statements for transactions
START TRANSACTION
COMMIT
SAVEPOINT
RELEASE SAVEPOINT
ROLLBACK
Functions
Explanation of functions
List of functions
ABS
CAST
CHAR
COALESCE
GREATEST
HEX
IFNULL
LEAST
LENGTH
LIKELIHOOD
LIKELY
LOWER
NULLIF
POSITION
PRINTF
QUOTE
RAISE
RANDOM
RANDOMBLOB
REPLACE
ROUND
ROW_COUNT
SOUNDEX
SUBSTR
TRIM
TYPEOF
UNICODE
UNLIKELY
UPPER
UUID
VERSION
ZEROBLOB
COLLATE clause
Default function parameters
SQL PLUS LUA – Adding Tarantool/NoSQL to Tarantool/SQL
Lua Requests
System Tables
Calling Lua routines from SQL
Executing Lua chunks
Example Sessions
Example Session – Create, Insert, Select
Example Session – Get a List of Columns
Example Session – Million-Row Insert
Lua functions to make views of metadata
_TABLES view
_COLUMNS view
_VIEWS view
_TRIGGERS view
_REFERENTIAL_CONSTRAINTS view
_CHECK_CONSTRAINTS view
_TABLE_CONSTRAINTS view
SQL features
E011, Numeric data types
E021, Character string types
E031, Identifiers
E051, Basic query specification
E061, Basic predicates and search conditions
E071, Basic query expressions
E081, Basic privileges
E091, Set functions
E101, Basic data manipulation
E111, Single row SELECT statement
E121, Basic cursor support
E131, Null value support
E141, Basic integrity constraints
E151, Transaction support
E152, Basic SET TRANSACTION statement
E*, Other
F021, Basic information schema
F031, Basic schema manipulation
F041, Basic joined table
F051, Basic date and time
F081, UNION and EXCEPT in views
F131, Grouped operations
F181, Multiple module support
F201, CAST function
F221, Explicit defaults
F261, CASE expression
F311, Schema definition statement
F*, Other
S011, Distinct types
T321, Basic SQL-invoked routines
T*, Other
Built-in modules reference
Module box
Submodule box.backup
box.backup.start()
box.backup.stop()
Submodule box.cfg
Submodule box.ctl
box.ctl.wait_ro()
box.ctl.wait_rw()
box.ctl.on_schema_init()
box.ctl.on_shutdown()
box.ctl.is_recovery_finished()
box.ctl.promote()
Submodule box.error
box.error()
box.error.last()
box.error.clear()
box.error.new()
box.error.set()
error_object
Custom error types
Submodule box.index
Examples for
box.index
Example showing use of the box functions
Example showing a user-defined iterator
Example showing submodule
box.index
with index type = RTREE for spatial searches
space_object:create_index()
Details about index field types
Allowing null for an indexed key
is_nullable parts option
exclude_null parts option
Creating an index using field names instead of field numbers
Creating an index using the path option for map fields (JSON-path indexes)
Creating a multikey index using the path option with [*]
Creating a functional index
index_object.unique
index_object.type
index_object:parts()
index_object:pairs()
index_object:select()
index_object:get()
index_object:min()
index_object:max()
index_object:random()
index_object:count()
index_object:update()
index_object:delete()
index_object:alter()
index_object:drop()
index_object:rename()
index_object:bsize()
index_object:stat()
index_object:compact()
index_object:user_defined()
Submodule box.info
box.info()
box.info.gc()
box.info.memory()
box.info.replication_anon()
box.info.replication
box.info.listen
box.info.election
Submodule box.schema
box.schema.space.create()
box.schema.upgrade()
box.schema.user.create()
box.schema.user.drop()
box.schema.user.exists()
box.schema.user.grant()
box.schema.user.revoke()
box.schema.user.password()
box.schema.user.passwd()
box.schema.user.info()
box.schema.role.create()
box.schema.role.drop()
box.schema.role.exists()
box.schema.role.grant()
box.schema.role.revoke()
box.schema.role.info()
box.schema.func.create()
box.schema.func.drop()
box.schema.func.exists()
box.schema.func.reload()
Sequences
box.schema.sequence.create()
sequence_object:next()
sequence_object:alter()
sequence_object:reset()
sequence_object:set()
sequence_object:current()
sequence_object:drop()
specifying a sequence in create_index()
Submodule box.session
box.session.id()
box.session.exists()
box.session.peer()
box.session.sync()
box.session.user()
box.session.type()
box.session.su()
box.session.uid()
box.session.euid()
box.session.storage
box.session.on_connect()
box.session.on_disconnect()
box.session.on_auth()
box.session.on_access_denied()
box.session.push()
Submodule box.slab
box.runtime.info()
box.slab.info()
box.slab.stats()
Submodule box.space
Examples
Example: using box.space functions to read _space tuples
Example: using box.space functions to organize a _space tuple
Example: using data operations
INSERT
DELETE
UPDATE
UPSERT
REPLACE
SELECT
box.schema.space.create()
space_object:alter()
space_object:auto_increment()
space_object:bsize()
space_object:count()
space_object:create_index()
Details about index field types
Allowing null for an indexed key
is_nullable parts option
exclude_null parts option
Creating an index using field names instead of field numbers
Creating an index using the path option for map fields (JSON-path indexes)
Creating a multikey index using the path option with [*]
Creating a functional index
space_object:delete()
space_object:drop()
space_object:format()
space_object:frommap()
space_object:get()
space_object:insert()
space_object:len()
space_object:on_replace()
space_object:before_replace()
space_object:pairs()
space_object:put()
space_object:rename()
space_object:replace() / put()
space_object:run_triggers()
space_object:select()
space_object:truncate()
space_object:update()
space_object:upsert()
space_object:user_defined()
box.space.create_check_constraint()
space_object:enabled
space_object:field_count
space_object.id
space_object.index
box.space._cluster
box.space._func
box.space._index
box.space._vindex
box.space._priv
box.space._vpriv
box.space._schema
box.space._sequence
box.space._sequence_data
box.space._space
box.space._vspace
box.space._user
box.space._vuser
box.space._ck_constraint
box.space._collation
box.space._vcollation
System space views
box.space._session_settings
Submodule box.stat
box.stat()
box.stat.net()
box.stat.vinyl()
box.stat.vinyl().regulator
box.stat.vinyl().disk
box.stat.vinyl().memory
box.stat.vinyl().tx
box.stat.vinyl().scheduler
box.stat.reset()
Submodule box.tuple
box.tuple.new()
box.tuple.is()
#tuple_object
box.tuple.bsize()
tuple_object[field-number]
tuple_object[field-name]
tuple_object[field-path]
tuple_object:find(), tuple_object:findall()
tuple_object:next()
tuple_object:pairs(), tuple_object:ipairs()
tuple_object:totable()
tuple_object:tomap()
tuple_object:transform()
tuple_object:unpack()
tuple_object:update()
tuple_object:upsert()
How to convert tuples to/from Lua tables
Functions for transaction management
box.begin()
box.commit()
box.rollback()
box.savepoint()
box.rollback_to_savepoint()
box.atomic()
box.on_commit()
box.on_rollback()
box.is_in_txn()
Functions for SQL
box.execute()
box.prepare()
object prepared_table
Function box.once
Function box.snapshot
Constant box.NULL
Using box.NULL
Distinction of nil and box.NULL
Module buffer
Module clock
Overview
Index
Module console
Overview
Index
Module crypto
Overview
Index
Incremental methods in the crypto module
Getting the same results from digest and crypto modules
Module csv
Overview
Index
Module decimal
Module digest
Overview
Index
Incremental methods in the
digest
module
Example
Module errno
Overview
Index
Module fiber
Overview
Index
Fibers
Example
Example of yield failure
Channels
Example
Condition variables
Example
Module fio
Overview
Index
Common pathname manipulations
Directory or file existence and type checks
Common file manipulations
FIO constants
Module fun
Module http
Overview
Index
Module iconv
Overview
Index
Module json
Overview
Index
Module key_def
Module log
Overview
Index
Example
Module merger
Overview
Index
Module msgpack
Overview
Index
Module net.box
Overview
Index
Triggers
Example
Module os
Overview
Index
Module pickle
Index
Module popen
Overview
Index
popen handle methods
Module socket
Overview
Index
LuaSocket wrapper functions
Recommended size
Examples
Use of a TCP socket over the Internet
Use of a socket with LuaSocket wrapper functions
Use of a UDP socket on localhost
Use tcp_server to accept file contents sent with socat
Use tcp_server with handler and prepare
Module strict
Module string
Overview
Index
Module swim
Overview
SWIM internals
Module table
Module tap
Overview
Index
Example
Module tarantool
Module uuid
Overview
Index
Example
Module utf8
Overview
Module uri
Overview
Index
Module xlog
Module yaml
Overview
Index
Example
Other package components
Database error codes
Handling errors
Debug facilities
Overview
Index
JSON paths
Overview
Rocks reference
SQL DBMS Modules
MySQL Example
Installation
With LuaRocks
With GitHub
Connecting
How to ping
Executing a statement
Closing connection
Example
PostgreSQL Example
Installation
With LuaRocks
With GitHub
Connecting
How to ping
Executing a statement
Closing connection
Example
Module expirationd
Module membership
Member data structure
API reference
Module vshard
Summary
Architecture
Overview
Virtual buckets
Structure
Storage
Router
CRUD (create, read, update, delete) operations
SELECT requests
Calling stored procedures
Rebalancer
Migration of buckets
The
_bucket
system space
The routing table
Processing requests
Glossary
Administration
Installation
Configuration
Replica weights
Replica set weights
Rebalancing process
Parallel rebalancing
Replica set lock and bucket pin
Replica set lock and rebalancing
Bucket pin and rebalancing
Bucket ref
Defining spaces
Adding data
Bootstrapping and restarting a storage
Fibers
Garbage collector
Bucket recovery
Failover
Quick start guide
Sample configuration
Configuration reference
Basic parameters
Replica set parameters
API Reference
Router API
Router public API
Router internal API
Storage API
Storage public API
Storage internal API
Tarantool Cartridge
Overview
About Tarantool Cartridge
Getting started
Prerequisites
Create your first application
Next steps
Contributing
Developer’s guide
Introduction
Installing Tarantool Cartridge
Creating a project
Cluster roles
Built-in roles
Custom roles
Defining role dependencies
Using multiple vshard storage groups
Role’s life cycle (and the order of function execution)
Configuring custom roles
Custom configuration example
Applying custom role’s configuration
Using the built-in HTTP server
Implementing authorization in the web interface
Application versioning
Using .cartridge.ignore files
Failover architecture
Instance configuration upon a leader change
Leader appointment rules
Disabled mode
Eventual failover
Stateful failover
Raft failover (beta)
Manual leader promotion
Fencing
Failover configuration
Lua API
GraphQL API
Stateboard configuration
Fine-tuning failover behavior
Configuring instances
Configuration basics
Internal representation of clusterwide configuration
Two-phase commit
Managing role-specific data
HTTP API
GraphQL API
Lua API
Luatest helpers
Deploying an application
Deploying as an RPM or DEB package
Entities created during installation
Deploying as a tar+gz archive
Deploying from sources
Starting/stopping instances
Start/stop using tarantool
Start/stop using cartridge CLI
Start/stop using systemctl
Error handling guidelines
Error objects in Lua
GraphQL
HTTP
Cluster instance lifecycle
Unconfigured
ConfigFound
ConfigLoaded
InitError
BootstrappingBox
RecoveringSnapshot
BootError
ConnectingFullmesh
BoxConfigured
ConfiguringRoles
RolesConfigured
OperationError
Administrator’s guide
Deploying the cluster
Updating the configuration
Managing the cluster
Changing the cluster topology
Data rebalancing
Deactivating replica sets
Expelling instances
Enabling automatic failover
Switching the replica set’s master
Managing users
Resolving conflicts
Monitoring a cluster via CLI
Connecting to nodes via CLI
Monitoring storages
Output example
Status list
Potential issues
Monitoring routers
Output example
Status list
Potential issues
Upgrading schema
Disaster recovery
Backups
Troubleshooting
Problems with replica
Editing clusterwide configuration in WebUI returns an error
An instance is stuck in the ConnectingFullmesh state upon restart
I want to run an instance with a new advertise_uri
The cluster is doomed, I’ve edited the config manually. How do I reload it?
Repairing cluster using Cartridge CLI repair command
Changing instance advertise URI
Changing replicaset leader
Removing instance from the cluster
Cartridge API
Module
cartridge
Functions
cfg (opts, box_opts)
reload_roles ()
is_healthy ()
Tables
VshardGroup
Global functions
_G.cartridge_get_schema ()
_G.cartridge_set_schema (schema)
Clusterwide DDL schema
get_schema ()
set_schema (schema)
Cluster administration
ServerInfo
ReplicasetInfo
admin_get_servers ([uuid])
admin_get_replicasets ([uuid])
admin_probe_server (uri)
admin_enable_servers (uuids)
admin_disable_servers (uuids)
admin_restart_replication (…)
admin_bootstrap_vshard ()
Automatic failover management
FailoverParams
failover_get_params ()
failover_set_params (opts)
failover_promote (replicaset_uuid[, opts])
admin_get_failover ()
admin_enable_failover ()
admin_disable_failover ()
Managing cluster topology
admin_edit_topology (args)
EditReplicasetParams
EditServerParams
JoinServerParams
Clusterwide configuration
config_get_readonly ([section_name])
config_get_deepcopy ([section_name])
config_patch_clusterwide (patch)
config_force_reapply (uuids)
Inter-role interaction
service_get (module_name)
service_set (module_name, instance)
Cross-instance calls
rpc_call (role_name, fn_name[, args[, opts]])
Usage:
rpc_get_candidates (role_name[, opts])
Authentication and authorization
http_authorize_request (request)
http_render_response (response)
http_get_username ()
Deprecated functions
admin_edit_replicaset (args)
admin_edit_server (args)
admin_join_server (args)
admin_expel_server (uuid)
Module
cartridge.auth
Local Functions
set_enabled (enabled)
get_enabled ()
init ()
set_callbacks (callbacks)
get_callbacks ()
Configuration
set_params (opts)
get_params ()
AuthParams
Authorizarion
set_lsid_cookie (user)
get_session_username ()
authorize_request (request)
render_response (response)
User management
UserInfo
add_user (username, password, fullname, email)
get_user (username)
edit_user (username, password, fullname, email)
list_users ()
remove_user (username)
Module
cartridge.roles
Functions
reload ()
forbid_reload ()
allow_reload ()
is_reload_forbidden ()
Local Functions
cfg (module_names)
get_all_roles ()
get_known_roles ()
get_enabled_roles_without_deps ()
get_enabled_roles (roles)
get_role_dependencies (role_name)
validate_config (conf_new, conf_old)
apply_config (conf, opts, is_master)
stop ()
Module
cartridge.issues
Tables
limits
Local Functions
validate_limits (limits)
set_limits (limits)
Module
cartridge.argparse
Functions
parse ()
get_opts (filter)
get_box_opts ()
get_cluster_opts ()
Tables
cluster_opts
box_opts
Module
cartridge.twophase
Functions
twophase_commit (opts)
Usage:
patch_clusterwide (patch)
force_reapply (uuids)
get_schema ()
set_schema (schema)
on_patch (trigger_new, trigger_old)
Usage:
Local Functions
wait_config_release (timeout)
prepare_2pc (upload_id)
commit_2pc ()
abort_2pc ()
Module
cartridge.failover
Functions
get_coordinator ()
Local Functions
schedule_clear ()
schedule_add ()
_get_appointments_disabled_mode ()
_get_appointments_eventual_mode ()
_get_appointments_stateful_mode ()
accept_appointments (replicaset_uuid)
fencing_check ()
check_suppressing_lock ()
failover_loop ()
cfg ()
get_active_leaders ()
is_leader ()
is_rw ()
is_vclockkeeper ()
is_paused ()
failover_suppressed ()
consistency_needed ()
force_inconsistency (replicaset_uuid)
wait_consistency (replicaset_uuid)
Module
cartridge.topology
Functions
cluster_is_healthy ()
Local Functions
get_leaders_order (topology_cfg, replicaset_uuid, new_order)
validate (topology_new, topology_old)
find_server_by_uri (topology_cfg, uri)
refine_servers_uri (topology_cfg)
probe_missing_members (servers)
get_fullmesh_replication (topology_cfg, replicaset_uuid)
Module
cartridge.clusterwide-config
Usage:
Functions
new ([data])
save (clusterwide_config, filename)
load (filename)
Local Functions
load_from_file (filename)
load_from_dir (path)
remove (string)
Module
cartridge.rpc
Functions
get_candidates (role_name[, opts])
call (role_name, fn_name[, args[, opts]])
Usage:
Local Functions
get_connection (role_name[, opts])
Module
cartridge.tar
Functions
pack (files)
unpack (tar)
Module
cartridge.pool
Functions
connect (uri[, opts])
Local Functions
format_uri (uri)
map_call (fn_name[, args[, opts]])
Module
cartridge.upload
Functions
upload (data, uri_list)
Tables
inbox
Module
cartridge.confapplier
Functions
get_active_config ()
get_readonly ([section_name])
get_deepcopy ([section_name])
Local Functions
set_state (state[, err])
wish_state (state[, timeout])
validate_config (clusterwide_config_new)
restart_replication ()
apply_config (clusterwide_config)
Module
cartridge.remote-control
Local Functions
bind (host, port)
accept (credentials)
unbind ()
drop_connections ()
Module
cartridge.service-registry
Functions
set (module_name, instance)
get (module_name)
list ()
Module
custom-role
Functions
init (opts)
stop (opts)
validate_config (conf_new, conf_old)
apply_config (conf, opts)
get_issues ()
Fields
role_name
hidden
permanent
Module
cartridge.lua-api.stat
Local Functions
get_stat (uri)
Module
cartridge.lua-api.boxinfo
Local Functions
get_info (uri)
Module
cartridge.lua-api.get-topology
Tables
ReplicasetInfo
ServerInfo
Local Functions
get_topology ()
Module
cartridge.lua-api.edit-topology
Editing topology
edit_topology (args)
EditReplicasetParams
JoinServerParams
EditServerParams
Module
cartridge.lua-api.topology
Functions
get_servers ([uuid])
get_replicasets ([uuid])
probe_server (uri)
enable_servers (uuids)
disable_servers (uuids)
restart_replication (…)
Local Functions
get_self ()
Module
cartridge.lua-api.failover
Functions
get_params ()
set_params (opts)
get_failover_enabled ()
set_failover_enabled (enabled)
promote (replicaset_uuid[, opts])
pause ()
resume ()
Tables
FailoverParams
Module
cartridge.lua-api.vshard
Functions
get_config ()
bootstrap_vshard ()
Module
cartridge.lua-api.deprecated
Deprecated functions
join_server (args)
edit_server (args)
expel_server (uuid)
edit_replicaset (args)
Class
cartridge.test-helpers.cluster
Functions
Cluster:new (object)
Cluster:server (alias)
Cluster:server_by_role (role_name)
Cluster:servers_by_role (role_name)
Cluster:apply_topology ()
Cluster:start ()
Cluster:stop ()
Cluster:join_server (server)
Cluster:wait_until_healthy (server)
Cluster:upload_config (config, opts)
Cluster:download_config ()
Cluster:retrying (config, fn[, …])
Tables
cartridge.test-helpers.cluster.replicaset_config
Local Functions
cartridge.test-helpers.cluster.iter_servers_by_role (cluster, role_name)
Class
cartridge.test-helpers.server
Functions
Server:build_env ()
Server:start ()
Server:stop ()
Server:graphql (request, http_options)
Server:join_cluster (main_server[, options])
Server:setup_replicaset (config)
Server:upload_config (config, table)
Server:download_config ()
Methods
cartridge.test-helpers.server:new (object)
Class
cartridge.test-helpers.etcd
Functions
Etcd:new (object)
Etcd:start ()
Etcd:stop ()
Class
cartridge.test-helpers.stateboard
Methods
cartridge.test-helpers.stateboard:new (object)
Cartridge CLI
Cartridge application lifecycle
Installation
Enable shell completion
Linux
OS X
Supported Cartridge CLI commands
create
Flags
Details
build
Flags
Details
start
Flags
Details
stop
Flags
status
Flags
enter
Flags
connect
log
Options
clean
Flags
pack
TGZ
RPM/DEB
Docker
Building in Docker
Flags
Details
repair
Subcommands
Flags
What does repair actually do?
admin
Flags
Details
Get functions help
Call an admin function
replicasets
Usage
How it works
Subcommands
Examples
failover
Flags
Details
Subcommands
Failover parameters
Global flags
Application instance paths
Path configuration file
Directory paths
Run directory
Data directory
Logs directory
Instance configuration file
Pre-build and post-build scripts
cartridge.pre-build
Example
cartridge.post-build
Example
Cartridge Kubernetes guide
Installation tools
Creating an application
Building the application
Creating a Kubernetes cluster
Using
minikube
Using
kind
Launch the application
Tarantool Kubernetes operator
Deploying a Tarantool Cartridge application
Cluster management
Adding a new replica
Adding a shard (replica set)
Updating application version
Running multiple Tarantool Cartridge clusters in different namespaces
Deleting a cluster
Failover
Eventual mode
Stateful mode
Troubleshooting
Insufficient CPU
Insufficient disk space
CrashLoopBackOff status
Recreating replicas
Customization
Sidecar containers
Installation in an internal network
Delivery of tools
Installing the Tarantool Kubernetes operator
Installing the Tarantool Cartridge app
Changelog
[Unreleased]
Added
Changed
[2.7.4] - 2021-04-11
Added
Changed
Fixed
[2.7.3] - 2021-10-27
Changed
[2.7.2] - 2021-10-08
Added
Changed
Fixed
[2.7.1] - 2021-08-18
Fixed
[2.7.0] - 2021-08-10
Added
Changed
Fixed
Enhanced in WebUI
[2.6.0] - 2021-04-26
Added
Changed
Fixed
Enhanced in WebUI
[2.5.1] - 2021-03-24
Added
Fixed
[2.5.0] - 2021-03-05
Added
Fixed
Enhanced is WebUI
[2.4.0] - 2020-12-29
Added
Changed
Fixed
Enhanced is WebUI
[2.3.0] - 2020-08-26
Added
Fixed
Enhanced is WebUI
[2.2.0] - 2020-06-23
Added
Changed
Enhanced in WebUI
[2.1.2] - 2020-04-24
Fixed
[2.1.1] - 2020-04-20
Fixed
[2.1.0] - 2020-04-16
Added
Changed
Deprecated
Fixed
Enhanced in WebUI
[2.0.2] - 2020-03-17
Added
Changed
Fixed
Enhanced in WebUI
[2.0.1] - 2020-01-15
Added
Fixed
[2.0.0] - 2019-12-27
Added
Changed
Removed
Fixed
[1.2.0] - 2019-10-21
Added
Changed
Fixed
[1.1.0] - 2019-09-24
Added
Changed
Deprecated
Fixed
[1.0.0] - 2019-08-29
Added
Changed
Removed
[0.10.0] - 2019-08-01
Added
Fixed
[0.9.2] - 2019-07-12
Fixed
[0.9.1] - 2019-07-10
Added
Fixed
[0.9.0] - 2019-07-02
Added
Changed
Fixed
[0.8.0] - 2019-05-20
Added
Changed
Fixed
[0.7.0] - 2019-04-05
Added
Changed
[0.6.3] - 2019-02-08
Fixed
[0.6.2] - 2019-02-07
Fixed
[0.6.1] - 2019-02-05
Fixed
[0.6.0] - 2019-01-30
Fixed
Changed
Added
[0.5.1] - 2018-12-12
Fixed
[0.5.0] - 2018-12-11
Fixed
Changed
Added
[0.4.0] - 2018-11-27
Fixed/Improved
Added
[0.3] - 2018-10-30
Changed
Added
[0.2] - 2018-10-01
Changed
[0.1] - 2018-09-25
Added
Luatest
Overview
Requirements
Installation
Usage
Tests order
List of luatest functions
XFail
Capturing output
Parametrization
Test helpers
luacov integration
Development
Contributing
License
API
Module
luatest.helpers
Functions
Class
luatest.group
Instance methods
Class
luatest.http_response
Instance getter methods
Class
luatest.runner
Functions
Class
luatest.server
Functions
Changelog
Unreleased
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Configuration reference
Command options
URI
Specifying several URIs
Initialization file
Configuration parameters
Methods of setting and priorities
Setting via environment variables
Reference
Basic parameters
Configuring the storage
Checkpoint daemon
Binary logging and snapshots
Hot standby
Replication
Networking
Logging
Logging example
Feedback
Deprecated parameters
C API reference
Module box
Module clock
Module coio
Module error
Module fiber
Module index
Module latch
Function on_shutdown
Module lua/utils
Module say (logging)
Module schema
Module trivia/config
Module tuple
Module txn
Internals
Binary protocol
Symbols and terms
Header and body
Requests
IPROTO_SELECT = 0x01
IPROTO_INSERT = 0x02
IPROTO_REPLACE = 0x03
IPROTO_UPDATE = 0x04
IPROTO_DELETE = 0x05
IPROTO_CALL_16 = 0x06
IPROTO_AUTH = 0x07
IPROTO_EVAL = 0x08
IPROTO_UPSERT = 0x09
IPROTO_CALL = 0x0a
IPROTO_EXECUTE = 0x0b
IPROTO_NOP = 0x0c
IPROTO_PREPARE = 0x0d
IPROTO_PING = 0x40
IPROTO_CONFIRM = 0x28
IPROTO_ROLLBACK = 0x29
Responses if no error and no SQL
Responses for no error and out-of-band
Responses for errors
Responses for SQL
Authentication
Greeting message
IPROTO_AUTH = 0x07
Binary protocol – streams
Replication
IPROTO_JOIN = 0x41
IPROTO_SUBSCRIBE = 0x42
HEARTBEATS
BALLOTS
FLAGS
IPROTO_RAFT = 0x1e
Examples
XLOG / SNAP
MessagePack extensions
The DECIMAL type
The UUID type
The ERROR type
File formats
Data persistence and the WAL file format
The snapshot file format
The recovery process
Server startup with replication
Limitations
Interactive console
Utility
tarantoolctl
Command format
Commands for managing Tarantool instances
Commands for managing checkpoint files
Commands for managing Tarantool modules
Tips on Lua syntax
Object reference variations
Parameter variations
Rules for object names
Tutorials
Lua tutorials
Insert one million tuples with a Lua stored procedure
Configure
Delimiter
Create a function that returns a string
Create a function that calls another function and sets a variable
Modify the function so it returns a one-letter random string
Modify the function so it returns a ten-letter random string
Make a tuple out of a number and a string
Modify main_function to insert a tuple into the database
Modify main_function to insert a million tuples into the database
Sum a JSON field for all tuples
Indexed pattern search
C tutorial
C stored procedures
Preparation
easy.c
harder.c
hardest.c
read.c
write.c
Cleaning up
An example in the test suite
SQL tutorial
Starting up with a first table and SELECTs
Initialize
set
CREATE, INSERT, UPDATE, SELECT
CREATE TABLE
INSERT
SELECT with ORDER BY clause
SELECT with WHERE clauses
SELECT with GROUP BY and aggregating
Complications and complex SELECTs
NULLs
Indexes
Create a subset table
SELECT with a subquery
SELECT with a join
Constraints affecting updates
CREATE TABLE, with a CHECK clause
CREATE TABLE, with a FOREIGN KEY clause
UPDATE
DELETE
ALTER TABLE, with a FOREIGN KEY clause
Triggers
Operators and functions
String operations
Number operations
Ranges and limits
Views
Common table expressions
VALUES
Metadata
Calling from a host language to make a big table
box.execute()
Create a million-row table
Select from a million-row table
Cleanup and exit
Improving MySQL with Tarantool
libslave
tutorial
Contributing
How to get involved in Tarantool
What is Tarantool?
How to get help?
How to leave feedback, ideas, or suggestions?
How to contribute
Tarantool ecosystem
Documentation: How to report and fix problems
How to contribute to modules
Contributing to an existing module
Creating a new module
How to contribute to Tarantool Core
How to write tests
How to contribute to language connectors
How to contribute to tools
How to become a maintainer
How to write release notes
Building to contribute
Quick build
Ubuntu/Debian
Fedora
RHEL/CentOS 7
CentOS 8
Mac OS
FreeBSD
Additional steps
-DENABLE_DIST=ON for tarantoolctl installation
Make RPM and Debian packages
Verify your Tarantool installation
See also
Guidelines
Developer guidelines
How to work on a bug
How to write a commit message
Documentation & Localization guidelines
Language and style
General style
Concise is good
Keep your audience in mind
Don’t say “we”
Express one idea in a sentence
Put examples next to theory
Specify link text
Formatting
Use lists and tables
Format code as code
Word choice
Instance vs server
Don’t use i.e. and e.g.
Spelling and punctuation
Tarantool capitalization
US vs British spelling
Check your spelling and punctuation
Dashes
Ending punctuation in lists and tables
Lists
Tables
Localization
State of localization
Glossaries
Tarantool Core
Cartridge
Tarantool Translation Guidelines
Tone of voice
General voice
Modal verbs
Gender neutrality
Term choice
Term choice examples
Best practices
Be creative
Less is more
Topic and focus
No bureaucratese
Consistency
Avoid elliptical sentences
Pronoun collocations
Be critical towards your text
Be nice to your peers
Defining and using terms
What are concepts and terms
Use preferred terms
Define terms by explaining concepts
Introduce terms on first entry
Markup reference
General syntax guidelines
Basic syntax
Wrapping text
Indentation
Making comments
Headings
Heading markup
Title headings
Links and references
Linking to other documentation pages
Linking to labels (anchors)
Linking to external resources
Tables
Writing about code
Defining what code is
Code blocks and inline code
Code snippets
Inline code
Highlighting variables in code
Formatting file and directory names
Referring to GUI elements
Admonitions
Examples and templates
Documenting functions
Documenting class methods and data
Parameters in functions and classes
Configuration parameters
Example
Building Tarantool Docs
How to build Tarantool documentation using Docker
Prepare for work
Update submodules and generate documentation sources from code
Build and run the documentation on your machine
Linkcheck
Localization
How to contribute
Sphinx-build warnings reference
Bullet list ends without a blank line; unexpected unindent
Could not lex literal_block as “…”. Highlighting skipped
Duplicate explicit target name: “…”
Document isn’t included in any toctree
Duplicate label “…”, other instance in “…/…/…”
Malformed hyperlink target
Toctree contains reference to nonexisting document ‘…’
Undefined label: … (if the link has no caption the label must precede a section header)
Unexpected indentation
Unknown document
Documentation infrastructure
Adding submodules
1. Add a submodule
2. Update build_submodules.sh
metrics
cartridge_cli
3. Update .gitignore
Git workflow
Branching
Linking issues and PRs
Commit messages
Good examples
Bad examples
Selecting a reviewer
Merging
C Style Guide
Tarantool coding style
Chapter 1: Indentation
Chapter 2: Breaking long lines and strings
Chapter 3: Placing Braces and Spaces
Chapter 3.1: Spaces
Chapter 4: Naming
Chapter 5: Typedefs
Chapter 6: Functions
Chapter 7: Centralized exiting of functions
Chapter 8: Commenting
Chapter 9: Macros, Enums and RTL
Chapter 10: Allocating memory
Chapter 11: The inline disease
Chapter 12: Function return values and names
Chapter 13: Editor modelines and other cruft
Chapter 14: Conditional Compilation
Chapter 15: Header files
Chapter 16: Other
Appendix I: References
Python Style Guide
Introduction
A Foolish Consistency is the Hobgoblin of Little Minds
Code lay-out
Indentation
Tabs or Spaces?
Maximum Line Length
Blank Lines
Encodings (PEP 263)
Imports
Whitespace in Expressions and Statements
Pet Peeves
Other Recommendations
Comments
Block Comments
Inline Comments
Documentation Strings
Version Bookkeeping
Naming Conventions
Descriptive: Naming Styles
Prescriptive: Naming Conventions
Names to Avoid
Package and Module Names
Class Names
Exception Names
Global Variable Names
Function Names
Function and method arguments
Method Names and Instance Variables
Constants
Designing for inheritance
References
Copyright
Lua style guide
Indentation and formatting
Avoid global variables
Naming
Idioms and patterns
Modules
Commenting
Testing
Error handling
luacheck
Release notes
Release policies
Tarantool release policy
Summary
Versioning policy
Release series and versions
Pre-release versions
Release series lifecycle
Early development
Support
End of life
Versions per lifecycle stage
Example of a release series
Tarantool legacy release policy
Release notes for Tarantool versions
Tarantool 2.10.0
Overview
Compatibility
Functionality added or changed
Core
Memtx
Vinyl
Replication
Raft
LuaJIT
Lua
Datetime
Digest
Fiber
Log
Msgpack
Netbox
Schema
SQL
Box
Datetime
Fiber
Luarocks
Xlog
Build
Bugs fixed
Core
Memtx
Vinyl
Replication
Raft
LuaJIT
Lua
Triggers
SQL
Box
Datetime
HTTP client
Mvcc
Net.box
Recovery
Tarantoolctl
Build
Tarantool 2.10.0-rc1
Overview
Compatibility
Functionality added or changed
Core
Memtx
Vinyl
Replication
Raft
LuaJIT
Lua
Datetime
Digest
Fiber
Log
Msgpack
Netbox
Schema
SQL
Box
Fiber
Luarocks
Xlog
Build
Bugs fixed
Core
Memtx
Vinyl
Replication
Raft
LuaJIT
Lua
Triggers
SQL
Box
Datetime
HTTP client
MVCC
Net.box
Recovery
Tarantoolctl
Build
Tarantool 2.10.0-beta2
Overview
Compatibility
Breaking changes
Functionality added or changed
Core
Replication
LuaJIT
Lua
Datetime
Digest
Fiber
Log
Msgpack
Netbox
Schema
SQL
Fiber
Luarocks
Xlog
Build
Bugs fixed
Core
Memtx
Vinyl
Replication
Raft
LuaJIT
Lua
Triggers
SQL
Box
MVCC
Build
Tarantool 2.10.0-beta1
Overview
Compatibility
Functionality added or changed
Core
Replication
LuaJIT
Lua
Digest
Fiber
Logging
SQL
Fiber
Luarocks
Build
Bugs fixed
Core
Vinyl
Replication
Raft
LuaJIT
Lua
Triggers
SQL
MVCC
Tarantool 2.8.4
Overview
Compatibility
Functionality added or changed
Build
Bugs fixed
Core
Vinyl
Raft
LuaJIT
Lua
Box
HTTP client
Recovery
Tarantool 2.8.3
Overview
Compatibility
Functionality added or changed
LuaJIT
Build
Bugs fixed
Core
Replication
LuaJIT
Lua
Triggers
SQL
Build
Tarantool 2.8.2
Overview
Compatibility
Functionality added or changed
LuaJIT
Lua
Logging
SQL
Build
Bugs fixed
Core
Vinyl
Replication
Raft
LuaJIT
Lua
Triggers
SQL
MVCC
Tarantool 2.8.1
Overview
Compatibility
Functionality added or changed
Core
Replication
LuaJIT
Tools
Build
Testing
Bugs fixed
Core
Replication
Swim
LuaJIT
Lua
SQL
Build
Tarantool 2.7.3
Overview
Compatibility
Functionality added or changed
Core
LuaJIT
Lua
SQL
Build
Bugs fixed
Core
Vinyl
Replication
Raft
LuaJIT
Lua
Triggers
SQL
MVCC
Tarantool 2.7.2
Overview
Compatibility
Functionality added or changed
Core
Replication
Build
Testing
Bugs fixed
Core
Replication
Module swim
LuaJIT
Lua
SQL
Build
Tarantool 2.7.1
Overview
Compatibility
Functionality added or changed
Core
LuaJIT
Lua
SQL
Replication
Build
Miscellaneous
Bugs fixed
Core
Replication
SQL
LuaJIT
Lua
Memtx
Tarantool 2.6.3
Overview
Compatibility
Functionality added or changed
Core
Replication
Build
Testing
Bugs fixed
Core
Replication
Swim
Lua
SQL
LuaJIT
Build
Tarantool 2.6.2
Overview
Compatibility
Functionality added or changed
Replication
Lua
Build
Bugs fixed
Core
Replication
SQL
LuaJIT
Lua
Memtx
Tarantool 2.6.1
Overview
Compatibility
Functionality added or changed
Core
Vinyl
LuaJIT
SQL
Replication
Build
Misc
Module API
Bugs fixed
Core
Replication
LuaJIT
Lua
Memtx
Module API
Tarantool 2.5.3
Overview
Compatibility
Functionality added or changed
Replication
Lua
Build
Bugs fixed
Core
Replication
SQL
LuaJIT
Lua
Memtx
Tarantool 2.5.2
Overview
Compatibility
Functionality added or changed
Core
Module API
Bugs fixed
Core
Replication
LuaJIT
Lua
SQL
Misc
Module API
Tarantool 2.5.1
Overview
Compatibility
Functionality added or changed
Core
Vinyl
SQL
Replication
Build
Misc
Bugs fixed
Core
Replication
Lua
SQL
Vinyl
Memtx
Misc
Tarantool 2.4.3
Overview
Compatibility
Functionality added or changed
Module API
Bugs fixed
Core
Replication
LuaJIT
Lua
SQL
Misc
Module API
Tarantool 2.4.2
Overview
Compatibility
Functionality added or changed
Core
Misc
Bugs fixed
Core
Replication
Lua
SQL
Vinyl
Memtx
Tarantool 2.4.1
Overview
Compatibility
Functionality added or changed
Core
Lua
Misc
Bugs fixed
Core
Replication
Lua
SQL
Types related changes
HTTP client
LuaJIT
Vinyl
Misc
Building from sources
Tarantool 2.3.3
Overview
Compatibility
Bugs fixed
Core
Replication
Lua
SQL
Vinyl
Memtx
Tarantool 2.3.2
Overview
Compatibility
Bugs fixed
Core
Replication
Lua
SQL
HTTP client
LuaJIT
Vinyl
Misc
Building from sources
Tarantool 2.3.1
Overview
Compatibility
Functionality added or changed
SQL
Core
Replication
Lua
HTTP client
Misc
Bugs fixed
SQL
Core
Replication
Lua
HTTP client
Console Lua output
LuaJIT
Misc
Building from sources
Tarantool 2.2.3
Overview
Compatibility
Bugs fixed
Core
Replication
Lua
SQL
HTTP client
LuaJIT
Vinyl
Misc
Building from sources
Tarantool 2.2.2
Overview
Compatibility
Functionality added or changed
Core
Lua
Misc
Bugs fixed
SQL
Core
Replication
Lua
HTTP client
Console Lua output
LuaJIT
Misc
Building from sources
Tarantool 2.2.1
Overview
Compatibility
Functionality added or changed
Tarantool 2.1.2 and earlier
Tarantool 1.10.13
Overview
Compatibility
Functionality added or changed
Build
Bugs fixed
Core
Vinyl
Replication
LuaJIT
Box
Recovery
Tarantool 1.10.12
Overview
Compatibility
Functionality added or changed
Build
Bugs fixed
Core
Replication
LuaJIT
Lua
Triggers
Build
Tarantool 1.10.11
Overview
Compatibility
Functionality added or changed
LuaJIT
Build
Bugs fixed
Core
Vinyl
Replication
LuaJIT
Lua
Triggers
Tarantool 1.10.10
Overview
Compatibility
Functionality added or changed
Build
Testing
Bugs fixed
Core
Lua
Build
Tarantool 1.10.9
Overview
Compatibility
Functionality added or changed
Build
Misc
Bugs fixed
Core
LuaJIT
Lua
Tarantool 1.10.8
Overview
Compatibility
Functionality added or changed
Module API
Bugs fixed
Core
Lua
LuaJIT
Misc
Module API
Tarantool 1.10.7
Overview
Compatibility
Bugs fixed
Core
Lua
LuaRocks
Vinyl
Tarantool 1.10.6
Overview
Compatibility
Bugs fixed
Core
Replication
Lua
HTTP client
LuaJIT
Vinyl
Misc
Building from sources
Tarantool 1.10.5
Overview
Compatibility
Functionality added or changed
Lua
Misc
Bugs fixed
Core
Replication
Lua
HTTP client
LuaJIT
Misc
Building from sources
Tarantool 1.10
Tarantool 1.9
Tarantool 1.8
Tarantool 1.7
Tarantool 1.6
Compatibility guarantees
Binary data layout
Binary protocol
Replication protocol
Lua code
SQL code
C code
Major features
Release calendar
Release lifetime table
Check out the new release policy
Details
Reference
Built-in modules reference
Module box
Submodule box.session
box.session.user()
box.session.user()
box.session.
user
(
)
¶
Return:
the name of the
current user
Rtype:
string
Found what you were looking for?
Yes
No
Feedback
box.session.sync()
box.session.type()