暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TokuDB引擎备份以及主从搭建

运维技术经验分享 2021-10-09
782

 尽力做好一件事,实乃人生之首务。




为什么使用TokuDB引擎?

Mariadb 数据库默认使用Innodb,随着存储数据越来越大,磁盘空间要求就越来越大,在我们有限的资源情况下选择使用TokuDB引擎来满足我们的需求。

 

TokuDB的特点

· 高压缩比,官方宣称可以达到112

· insert性能,官方称至少比innodb9倍。

· 可以在线添加索引和字段,速度快




01



编译tokudb-xtrabackup工具




系统环境:centos 7.2

数据库:mariadb-10.0.13

 

官方文档:https://github.com/xelabs/tokudb-xtrabackup/wiki/How-to-build

 

安装依赖包:

wget http://dist.schmorp.de/libev/libev-4.33.tar.gz

tar -xf libev-4.33.tar.gz && cd libev-4.33

./configure

make && make install

 

开始编译:

yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel vim-common unzip  -y

wget https://github.com/xelabs/tokudb-xtrabackup/archive/refs/heads/2.4.zip

注意:如果下载不了,请自行科学上网到https://github.com/xelabs/tokudb-xtrabackup下载

unzip  tokudb-xtrabackup-2.4.zip &&mv tokudb-xtrabackup-2.4 tokudb-xtrabackup && 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/innobackupex --help



02




热备份


1.备份

/usr/local/xtrabackup_xelabs/bin/innobackupex --defaults-file=/work/config/mysql/my.cnf --user=root --password='kxxxxxxxx' --host=localhost --socket=/tmp/mysql3306.sock /work/tmp/ > /work/tmp/innobackupex.log 2>&1

 

--defaults-file 指定数据库配置文件

--socket     指定数据库sock文件


2.恢复

#备份数据目录

mv /work/data/mysql_data3306  /work/data/mysql_data3306_20211009

#执行恢复数据

/usr/local/xtrabackup_xelabs/bin/innobackupex   --defaults-file=/work/config/mysql/my.cnf --user=root --host=localhost --use-memory=200M --apply-log /work/tmp/2021-10-09_14-43-42

#执行恢复数据

/usr/local/xtrabackup_xelabs/bin/innobackupex   --defaults-file=/work/config/mysql/my.cnf --user=root --host=localhost --copy-back --rsync /work/tmp/2021-10-09_14-43-42

#修改数据目录属性

chown -R work.work /work/data/mysql_data3306

 

#安全方式启动mysql查看是否异常

/work/servers/mysql/bin/mysqld_safe --defaults-file=/work/config/mysql/my.cnf &

 

#如果没有异常报错,就关闭mysql

/work/servers/mysql/bin/mysqladmin -uroot -p shutdown



03




快速建立主从关系



建议数据库版本一致,如果使用不同版本需要执行mysql_upgrade进行初始化,这个在主库mariadb-10.0.13 从库mariadb-10.3.23验证过,这里不详细写,有兴趣自己研究下。


#检查从库配置文件的ID是否大于主库配置文件ID

#主库创建一个用户

>GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.3.128.%' IDENTIFIED BY '123xxx';

>FLUSH PRIVILEGES;


#查看点位或binlog文件

cat /work/tmp/2021-10-09_14-43-42/xtrabackup_binlog_info

mysql-bin.000021   25762    0-621133399-2161


#从库执行建立关系

>CHANGE MASTER TO MASTER_HOST='10.3.128.145',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='123xxx',MASTER_LOG_FILE='mysql-bin.000021', MASTER_LOG_POS=25762;

>start slave;

>show slave status\G;


希望我踩的坑能够帮助你们,为你们节省一点宝贵的时间!



文章转载自运维技术经验分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论