赞
踩
XtraBackup 是一个用来备份 MySQL 的 InnoDB 数据库的开源工具。支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
(2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁。本文主要介绍和实践xtrabackup工具。
如下是常用参数说明,更多参数信息见官网https://www.percona.com/doc/percona-xtrabackup/LATEST/xtrabackup_bin/xbk_option_reference.html
–backup 模式以在目标目录中进行备份。
–prepare模式以从备份还原数据(以–backup模式创建)。
–copy-back将数据从备份复制到包含原始数据的位置;要移动数据而不是复制,请使用备用–move-back模式。
–defaults-file 从给定文件中读取默认选项。
–apply-log-only 此选项使准备备份时仅执行重做阶段。这对于增量备份非常重要。
–compress
此选项告诉xtrabackup使用quicklz或 lz4压缩算法压缩所有输出数据,包括事务日志文件和元数据文件。quicklz默认情况下处于选中状态。当使用–compress=quicklz或时–compress,生成的文件具有qpress存档格式,即xtrabackup*.qp生成的每个文件本质上都是一个单文件的qpress存档,并且可以由qpress文件存档器提取和解压缩。
–compress=lz4产生*.lz4文件。您可以使用诸如的程序来提取这些文件的内容lz4。
–compress-chunk-size=#
压缩线程的工作缓冲区的大小(以字节为单位)。默认值为64K。
–compress-threads=#
此选项指定xtrabackup用于并行数据压缩的工作线程数。此选项默认为1。并行压缩(–compress-threads)可以与并行文件复制(–parallel)一起使用。例如, 将创建4个I / O线程,这些线程将读取数据并将其通过管道传递给2个压缩线程。–parallel=4 --compress --compress-threads=2
–databases=#
此选项指定应备份的数据库和表的列表。该选项接受表单列表。“databasename1[.table_name1] databasename2[.table_name2] . . .”
–databases-exclude=name
排除基于名称的数据库,操作方式与相同–databases,但匹配的名称将从备份中排除。请注意,此选项的优先级高于 --databases。
–databases-file=#
此选项指定文件路径,该文件包含应备份的数据库和表的列表。该文件可以包含形式的列表元素,databasename1[.table_name1]每行一个元素。
–decompress
.qp在以前使用该–compress选项进行的备份中,将所有带有扩展名的文件解压缩。该 --parallel选项将允许同时解密多个文件。为了解压缩,必须在路径内安装qpress实用程序并对其进行访问。Percona XtraBackup不会自动删除压缩文件。为了清理备份目录,用户应使用–remove-originaloption。该–decompress选项可与xbstream一起使用以解压缩单个qpress文件。
如果您使用lz4压缩算法来压缩文件(–compress=lz4),请相应地更改–decompress参数:–decompress=lz4。
–decompress-threads=#
强制xbstream使用指定数量的线程进行解压缩。
–help
当使用此选项或没有任何选项运行时,xtrabackup会显示有关如何在命令行上运行程序的信息,以及所有支持的选项和带有默认值的变量(如果适用)。
–history=NAME
使用此选项可以跟踪PERCONA_SCHEMA.xtrabackup_history表中的备份历史记录 。可以指定一个可选的历史系列名称,该名称将与获取当前备份的历史记录一起放置。
–host=HOST
此选项接受一个字符串参数,该参数指定使用TCP / IP连接到数据库服务器时要使用的主机。它被直接传递给mysql子进程。有关详细信息,请参见mysql --help。
–incremental
此选项告诉xtrabackup创建增量备份。它被传递给xtrabackup子进程。指定此选项后,可以指定 --incremental-lsn或–incremental-basedir。如果两个选项均未给出,–incremental-basedir则默认情况下将选项传递给xtrabackup,设置为备份基本目录中第一个带时间戳的备份目录。
–incremental-basedir=DIRECTORY
创建增量备份时,该目录包含完整备份,该目录是增量备份的基本数据集。
–incremental-dir=DIRECTORY
准备增量备份时,该目录是增量备份与完全备份结合在一起以创建新的完全备份的目录。
–incremental-force-scan
创建增量备份时,即使有完整的已更改页面位图数据,也要强制对正在备份的实例中的数据页进行全面扫描。
–incremental-history-name=name
此选项指定存储在PERCONA_SCHEMA.xtrabackup_history历史记录中的备份系列的名称, 以作为增量备份的基础。xtrabackup将搜索历史记录表以查找innodb_to_lsn该系列中最近(最高)的成功备份,并使用to_lsn值作为lsn增量备份的起点。这将是互相排斥的 --incremental-history-uuid,–incremental-basedir和 --incremental-lsn。如果找不到有效的lsn(该名称没有序列,该名称没有成功备份),xtrabackup将返回错误。与该–incremental选项一起使用。
–password=PASSWORD
此选项指定连接到数据库时要使用的密码。它接受一个字符串参数。有关详细信息,请参见mysql --help。
–port=PORT
该选项接受一个字符串参数,该参数指定使用TCP / IP连接到数据库服务器时要使用的端口。它被直接传递给 mysql子进程。有关详细信息,请参见mysql --help。
–remove-original
实施了Percona的XtraBackup 2.4.6,当指定将删除此选项.qp,.xbcrypt并.qp.xbcrypt解密和解压后的文件。
–socket
该选项接受一个字符串参数,该参数指定使用UNIX域套接字连接到本地数据库服务器时要使用的套接字。它被直接传递给mysql子进程。有关详细信息,请参见mysql --help。
–tables=name
与完整表名(databasename.tablename格式)匹配的正则表达式 。如果名称匹配,则备份表。请参阅部分备份。
–version
此选项打印xtrabackup版本并退出。
#wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.14/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.14-1.el7.x86_64.rpm
#yum install -y percona-xtrabackup-24-2.4.14-1.el7.x86_64.rpm
mysql> create user backup@‘localhost’ identified by ‘123456’;
mysql> grant reload,lock tables,replication client,CREATE TABLESPACE,PROCESS,SUPER,CREATE,INSERT,SELECT on . to ‘backup’@‘localhost’;
在my.cnf配置文件,增加以下参数
[xtrabackup]
target_dir = /data/backup/
若没在my.cnf配置文件增加xtrabackup参数,可以在备份时指定备份目录,如:
#xtrabackup -S /tmp/mysql.sock -ubackup -p123456 --backup --target-dir=/data/backup/
#xtrabackup --backup -S /tmp/mysql3306.sock -ubackup -pmysql --target-dir=/data/backup/
xtrabackup --prepare --target-dir=/data/backup/
#service mysqld stop
#rm -rf ~/mysql/data/* ~/mysql/data目录为真实目录,可以通过my.cnf文件查看确认
#xtrabackup —defaults-file=/etc/my.cnf -copy-back --target-dir=/data/backup/
#chown -R mysql:mysql data
#service start mysqld
#mkdir /data/backup/base
#mkdir /data/backup/incre
#chown mysql:mysql /data/backup/*
#xtrabackup --backup -S /tmp/mysqlsock -ubackup -pmysql --target-dir=/data/backup/base/
数据库中执行一些增删改操作后执行增量备份
#xtrabackup --backup -S /tmp/mysql.sock -ubackup -pmysql --target-dir=/data/backup/incre/ --incremental-basedir=/data/backup/base/
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
#mysqladmin -S /tmp/mysql.sock shutdown
#rm -rf ~/mysql/data/*
#xtrabackup —defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base/
#chown -R mysql:mysql data
#service start mysqld
[root@mysqlenv mysql]# xtrabackup -v
xtrabackup: recognized server arguments: --datadir=/var/lib/mysql
xtrabackup version 2.4.14 based on MySQL server 5.7.19 Linux (x86_64) (revision id: ef675d4)
此选项会影响分配多少内存以使用进行备份 --prepare或使用进行分析 --stats。其目的类似于innodb_buffer_pool_size。它与Oracle InnoDB热备份工具中类似命名的选项没有相同的作用。默认值为100MB,如果您有足够的可用内存,建议使用1GB到2GB。支持提供单位的倍数(例如1MB,1M,1GB,1G)。
可以使用如下方式清空目录
#mv data data_bak
#mkdir data
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。