在实际的生产环境中要保证线上的服务正常是非常重要的,所以在平时备份数据库一般都是在使用比较少的时候进行的,而在mysql中有默认的备份工具mysqldump,在一般的场景中备份都没有太大的问题,mysqldump这种古老的工具在备份时是把数据转化成sql的脚本,是一种逻辑备份方式,但是比较大的数据备份时或者需要做主从同步的时的备份时mysqldump的效率就变的十分低下了(长时间的锁表、占用大量的系统资源、备份大量数据时间长等等),所以在这些特殊的场景下mysqldump并时不是很好的选择,因此有人用perl写了一个专门用来备份innodb和myisam引擎的开源工具——xtrabackup,当然在在1.51版本后为了也能备份myisam引擎就进行再次的封装xtrabackup即innobackupex,当然innobackupex在备份myisam引擎时会添加只读锁的。
xtrabackup开源工具官网下载地址:https://www.percona.com/downloads/XtraBackup找到你适合的版本,尽量用最新的,当然官网也有提供rpm包,但是为了方便就下载了二进制包进行快速的部署安装:
[[email protected] src]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.5/> binary/tarball/percona-xtrabackup-2.4.5-Linux-x86_64.tar.gz [[email protected] src]# tar -zxvf percona-xtrabackup-2.4.5-Linux-x86_64.tar.gz -C /usr/local/ #配置说明手册及环境变量 [[email protected] src]# vim /etc/man.conf …略… MANPATH /usr/local/percona-xtrabackup-2.4.5-Linux-x86_64/man [[email protected] src]# vim /etc/profile.d/percona-xtrabackup.sh export PATH=$PATH:/usr/local/percona-xtrabackup-2.4.5-Linux-x86_64/bin
innobackupex中常用的选项参数有:
--host=name:mysql的主机ip地址 --port=#:mysql的端口号 --user=name:mysql的用户名 --socket=name:mysql socket文件路径 --databases=name:指定mysql库 --defaults-file:指定读取默认的my.cnf的文件路径,默认是读取/etc/my.cnf --incremental-basedir=name:指定完全备份的目录名 --apply-log:回滚innodb的事务,个用于备份数据后直接恢复数据用的 --redo-only:强制备份日志时只redo ,跳过rollback,做增量备份的时候必须要用 --copy-back:还原备份的操作 --include=name:备份包含的库表,例如:--include="mysql.*"备份mysql库的所有表 --slave-info:备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE=‘‘, MASTER_LOG_POS=0,用于制作从库时候用的 --safe-slave-backup:和slave-info 结合使用,发起备份的时候,会把SLAVE暂停,确保备份时没有临时表打开,保证一致性 --no-lock:备份时不锁表,如果mysql的session中有“FLUSH TABLES WITH READ LOCK;”也不锁定
基本上一般常见的场景中这些参数都够用了,当然如果有其他特殊的场景所用的参数选项可以在查看innobackupex --help或者是man innobackupex查看更多当然在percona-xtrabackup中还有提供其他的工具:
xbcrypt:用于加密或者解密数据库 xbstream:流式备份的支持 xbcloud、xbcloud_osenv:用于云上上传和下载的工具
时间: 2024-10-19 04:18:12