美文网首页Python运维与数据分析Database TechLinux运维
mysql数据库备份工具mydumper使用总结

mysql数据库备份工具mydumper使用总结

作者: 菩提老鹰 | 来源:发表于2021-10-29 12:26 被阅读0次

    日常备份数据库大家都习惯使用MySQL自带的mysqldump,如果是中小数据体量的数据库,mysqldump没有问题,但是如果数据库体量很大,使用mysqldump备份就特别慢,所以这里推荐一个带指定线程数进行并发备份的工具mydumper,官网参考http://www.mysqldumper.org/, 目前已经到 0.9.1版本

    1、安装

    # download
    wget http://mp-weixin.colinspace.com/mydumper/mydumper-0.9.1.tar.gz
    # untar 
    tar -zxf mydumper-0.9.1.tar.gz
    # cmake
    cd mydumper-0.9.1
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mydumper
    
    # install
    make && make install
    

    2、安装问题

    本次安装是在二进制安装Percona MySQL的环境,在进行 cmake 的时候报错,提示找不到 libperconaserverclient

    mydumper-cmake-error

    但是该文件所在路径已经在ldconfig中配置,如下

    # cat /etc/ld.so.conf.d/mysql-x86_64.conf
    /opt/app/mysql/lib
    

    且 执行 ldconfig 使其生效,但是cmake依旧报错。

    这个时候有两种方式修复:
    2.1、安装mysql-devel,安装之后会在系统/usr/lib64/下生成 mysql 目录,里面有 libmysqlclient.so 文件(在后面编译成功的时候就可以看到依赖这个)

    yum install mysql-devel
    
    [root@devops-walle-vpc mydumper-0.9.1]# ls -l /usr/lib64/mysql
    total 32356
    -rw-r--r-- 1 root root 23379846 Sep  7 15:50 libmysqlclient.a
    lrwxrwxrwx 1 root root       20 Oct 29 09:54 libmysqlclient.so -> libmysqlclient.so.20
    lrwxrwxrwx 1 root root       25 Oct 29 09:54 libmysqlclient.so.20 -> libmysqlclient.so.20.3.23
    -rwxr-xr-x 1 root root  9703280 Sep  7 15:50 libmysqlclient.so.20.3.23
    -rw-r--r-- 1 root root    46558 Sep  7 15:50 libmysqlservices.a
    

    2.2、受上面的启发,知道Cmake的时候会找/usr/lib64 或者 /lib64,所以在这两个目录下,做/opt/app/mysql/lib/libperconaserverclient.so.20.3.16的软连

    ln -s /opt/app/mysql/lib/libperconaserverclient.so.20.3.16 /lib64/libperconaserverclient.so
    ln -s /opt/app/mysql/lib/libperconaserverclient.so.20.3.16 /usr/lib64/libperconaserverclient.so
    

    之后cmake编译成功

    mydumper-cmake-success

    最后安装

    mydumper-make-install

    3、用法介绍

    可以通过mydumper --helpmyloader --help 查看具体的配置选项,这里不做赘述,只说明日常用到的参数

    mydumper
    -h/--host 
    -u/--user
    -p/--password
    -P/--port
    
    -B/--database  需要备份的数据库
    -T/--tables-list 逗号分割的表清单
    
    -m/--no-schemas  不备份表的结构
    -d/--no-data  不备份表的数据
    
    -G/--triggers 备份触发器
    -E/--events 备份events事件
    -R/--routines 备份存储过程和函数
    
    -c/--compress 压缩备份结果文件
    -v/--verbose 备份结果日志输出 默认是2 warnings,建议是3 info
    -t/--threads 备份启用的线程数 默认是4
    -o/--outputdir 备份存放的目录,该目录下每个表单独一个文件,如果启用-c则为独立的压缩文件
    -L/--logfile 备份过程的日志文件
    
    myloader

    -h/-u/-p/-P/-v/-t 与上面的一致

    - -d/--directory 数据库备份的目录,从这个目录进行数据恢复
    - -o/--overwrite-tables 如果表存在,则先清理表
    

    4、实例案例

    针对实际的数据库做备份和恢复,太简单这里就不写实际的脚本了

    备份数据库
    • 常规备份

    mydumper -h localhost -u root -p passwd -B dbanme -c -t 6 -v 3 -o /data/backup/dbname -L /data/backup/dbname-mydumper.log

    • 备份所有数据库

    mydumper -h localhost -u root -p passwd -c -t 6 -v 3 -o /data/backup/dbinstance -L /data/backup/dbinstance-mydumper.log

    • 备份指定的表(或者多表, 多个表之间逗号分割)

    mydumper -h localhost -u root -p passwd -B dbanme -T table1,table2 -c -t 6 -v 3 -o /data/backup/dbname -L /data/backup/dbname-mydumper.log

    • 带存储过程触发器的备份

    mydumper -h localhost -u root -p passwd -B dbanme -G -R -c -t 6 -v 3 -o /data/backup/dbname -L /data/backup/dbname-mydumper.log

    恢复数据库
    • 常规恢复

    myloader - localhost -u root -p passwd -B dbanme -d /data/backup/dbname -o -v 3

    • 恢复到指定的数据库,备份的是dbsource,恢复到 dbtarget

    myloader - localhost -u root -p passwd -B dbtarget --source-db=dbsource -d /data/backup/dbname -o -v 3

    附加

    mydumper 原理图

    mydumper-原理图

    相关文章

      网友评论

        本文标题:mysql数据库备份工具mydumper使用总结

        本文链接:https://www.haomeiwen.com/subject/czsialtx.html