编译安装 tokudb-xtrabackup :
感谢知书堂吴老师
环境:centos6 x86_64
官方文档:
https://github.com/xelabs/tokudb-xtrabackup/wiki/How-to-build
先安装高版本的libev依赖包:
wget https://fossies.org/linux/misc/libev-4.24.tar.gz tar xvzf libev-4.22.tar.gz cd libev-4.22 ./configure make && make install
开始编译安装xtrabackup:
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel vim-common git clone cd tokudb-xtrabackup cmake .\ -DBUILD_CONFIG=xtrabackup_release\ -DWITH_BOOST=extra/boost/boost_1_59_0.tar.gz\ -DWITH_MAN_PAGES=OFF\ -DCMAKE_INSTALL_PREFIX=/usr/local/xtrabackup_xelabs/ make -j8 make install
编译完成后, 在 /usr/local/xtrabackup_xelabs/bin/ 目录下就生成了我们需要的文件。
使用备份命令:
/usr/local/xtrabackup_xelabs/bin/innobackupex --user=root --password=123456 --no-timestamp 2>/tmp/bak.log /root/aaa 即可在生成全量的备份文件
整个备份流程如下(https://yq.aliyun.com/articles/213):
1) SET TOKUDB_CHECKPOINT_LOCK=ON;
2) FLUSH TABLES WITH READ LOCK;
3) 记录binlog位置,拷贝最新的binlog和TokuDB的日志文件(*.tokulog)
4) UNLOCK TABLES;
5) 开始拷贝TokuDB的数据文件(不包含日志文件) --移动到这里
6) SET TOKUDB_CHECKPOINT_LOCK=OFF;
操作过程日志,部分内容如下:
180826 19:28:42 innobackupex: Starting the backup operation
IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!".
180826 19:28:43 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;port=3306;mysql_socket=/tmp/mysql.sock' as 'root' (using password: YES).
180826 19:28:43 version_check Connected to MySQL server
180826 19:28:43 version_check Executing a version check against the server...
180826 19:28:43 version_check Done.
180826 19:28:43 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: /tmp/mysql.sock
Using server version 5.7.18-15-log
/usr/local/xtrabackup_xelabs/bin/innobackupex version 2.4.7 based on MySQL server 5.7.13 Linux (x86_64) (revision id: )
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /bdata/data/nowdb2
xtrabackup: open files limit requested 0, set to 65535
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = .
xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 50331648
xtrabackup: using O_DIRECT
InnoDB: Number of pools: 1
180826 19:28:43 >> log scanned up to (1062788205)
xtrabackup: Generating a list of tablespaces
InnoDB: Allocated tablespace ID 21 for sys/sys_config, old maximum was 0
180826 19:28:43 [01] Copying ./ibdata1 to /root/aaa/ibdata1
180826 19:28:44 >> log scanned up to (1062788205)
180826 19:28:45 >> log scanned up to (1062788205)
180826 19:28:45 [01] ...done
180826 19:28:45 [01] Copying ./sys/sys_config.ibd to /root/aaa/sys/sys_config.ibd
180826 19:28:45 [01] ...done
180826 19:28:45 [01] Copying ./test/sbtest1_innodb.ibd to /root/aaa/test/sbtest1_innodb.ibd
180826 19:28:46 >> log scanned up to (1062788205)
180826 19:28:47 >> log scanned up to (1062788205)
180826 19:28:48 >> log scanned up to (1062788205)
180826 19:28:49 >> log scanned up to (1062788205)
180826 19:28:50 >> log scanned up to (1062788205)
180826 19:28:51 >> log scanned up to (1062788205)
180826 19:28:52 >> log scanned up to (1062788205)
180826 19:28:53 >> log scanned up to (1062788205)
180826 19:28:54 >> log scanned up to (1062788205)
180826 19:28:55 >> log scanned up to (1062788205)
180826 19:28:56 >> log scanned up to (1062788205)
180826 19:28:57 >> log scanned up to (1062788205)
180826 19:28:58 >> log scanned up to (1062788205)
180826 19:28:59 >> log scanned up to (1062788205)
180826 19:29:00 >> log scanned up to (1062788205)
180826 19:29:01 >> log scanned up to (1062788205)
180826 19:29:02 >> log scanned up to (1062788205)
180826 19:29:03 >> log scanned up to (1062788205)
180826 19:29:03 [01] ...done
180826 19:29:03 [01] Copying ./test/t2.ibd to /root/aaa/test/t2.ibd
180826 19:29:03 [01] ...done
180826 19:29:05 [01] Copying ./mysql/slave_worker_info.ibd to /root/aaa/mysql/slave_worker_info.ibd
180826 19:29:05 [01] ...done
180826 19:29:05 >> log scanned up to (1062788205)
180826 19:29:05 Executing SET GLOBAL tokudb_checkpoint_lock=ON # 注意这里参数 tokudb_checkpoint_lock=ON, 然后开始拷贝非innodb文件和tokudb文件(不包含日志文件)
180826 19:29:05 tokudb_checkpoint_locked
180826 19:29:05 Executing LOCK TABLES FOR BACKUP...
180826 19:29:05 Starting to backup non-InnoDB tables and files
180826 19:29:05 [01] Copying ./sys/x@0024wait_classes_global_by_avg_latency.frm to /root/aaa/sys/x@0024wait_classes_global_by_avg_latency.frm
180826 19:29:05 [01] ...done
180826 19:29:09 [01] Copying ./performance_schema/events_stages_summary_by_thread_by_event_name.frm to /root/aaa/performance_schema/events_stages_summary_by_thread_by_event_name.frm
180826 19:29:09 [01] ...done
180826 19:29:09 [01] Copying ./performance_schema/events_transactions_summary_by_user_by_event_name.frm to /root/aaa/performance_schema/events_transactions_summary_by_user_by_event_name.frm
180826 19:29:09 [01] ...done
180826 19:29:09 Finished backing up non-InnoDB tables and files
180826 19:29:09 Executing LOCK BINLOG FOR BACKUP...
180826 19:29:09 [00] Writing xtrabackup_binlog_info
180826 19:29:09 [00] ...done
180826 19:29:09 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
180826 19:29:09 Starting to backup tokudb.directory/tokudb.environment/tokudb.rollback... # 开始备份TokuDB redo-log
180826 19:29:09 [01] Copying tokudb.directory to /root/aaa/tokudb.directory
180826 19:29:09 [01] ...done
180826 19:29:09 [01] Copying tokudb.environment to /root/aaa/tokudb.environment
180826 19:29:09 [01] ...done
180826 19:29:09 [01] Copying tokudb.rollback to /root/aaa/tokudb.rollback
180826 19:29:09 [01] ...done
180826 19:29:09 Starting to backup TokuDB redo-log files
180826 19:29:09 [01] Copying ./log000000000067.tokulog29 to /root/aaa/log000000000067.tokulog29
180826 19:29:09 [01] ...done
180826 19:29:09 Finished backing up TokuDB redo-log files
xtrabackup: The latest check point (for incremental): '1062788212'
xtrabackup: Stopping log copying thread.
.180826 19:29:09 >> log scanned up to (1062788221)
180826 19:29:09 Executing UNLOCK BINLOG # 释放锁
180826 19:29:09 Executing UNLOCK TABLES
180826 19:29:09 All tables unlocked
180826 19:29:09 Starting to backup TokuDB data files
180826 19:29:09 [01] Copying ./__tokudb_lock_dont_delete_me_data to /root/aaa/__tokudb_lock_dont_delete_me_data
180826 19:29:09 [01] ...done
180826 19:29:09 [01] Copying ./test/tb123_main_1e3_2_1d.tokudb to /root/aaa/test/tb123_main_1e3_2_1d.tokudb
180826 19:29:09 [01] ...done
180826 19:29:19 [01] Copying ./test/tb123_key_idx_1e5_3_1d_B_0.tokudb to /root/aaa/test/tb123_key_idx_1e5_3_1d_B_0.tokudb
180826 19:29:19 [01] ...done
180826 19:29:19 [01] Copying ./test/tb123_status_1e3_1_1d.tokudb to /root/aaa/test/tb123_status_1e3_1_1d.tokudb
180826 19:29:19 [01] ...done
180826 19:29:19 Finished backing up TokuDB data files
180826 19:29:19 Executing SET GLOBAL tokudb_checkpoint_lock=OFF # 注意这里参数 tokudb_checkpoint_lock=OFF
180826 19:29:19 tokudb_checkpoint_unlocked
180826 19:29:19 [00] Copying ib_buffer_pool to /root/aaa/ib_buffer_pool
180826 19:29:19 [00] ...done
180826 19:29:19 Backup created in directory '/root/aaa/'
MySQL binlog position: filename 'mysql-bin.000053', position '154'
180826 19:29:19 [00] Writing backup-my.cnf
180826 19:29:19 [00] ...done
180826 19:29:19 [00] Writing xtrabackup_info
180826 19:29:19 [00] ...done
xtrabackup: Transaction log of lsn (1062788196) to (1062788221) was copied.
180826 19:29:19 completed OK!