xtrabackup能同时备份myisam和innodb吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xtrabackup能同时备份myisam和innodb吗相关的知识,希望对你有一定的参考价值。
一、Xtrabackup介绍 A、Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup有两个主要的工具:xtrabackup、innobackupex 1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的f、/etc/mysql/myf、~/f,并读取配置文件中的[mysqld]和[xtrabackup]配置段。[mysqld]中只需要指定datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir、innodb_log_files_in_group、innodb_log_file_size6个参数即可让xtrabackup正常工作。 --defaults-extra-file=# 如果使用了该参数,在读取了全局配置文件之后,会再读取这里指定的配置文件 --target-dir=name 备份文件的存放目录路径 --backup 实施备份到target-dir --prepare 实施对备份文件进行恢复前的准备(生成InnoDB log file) --print-param 打印备份或恢复时需要的参数 --use-memory=# 该参数在 prepare 的时候使用,控制prepare时innodb实例使用的内存量 --suspend-at-end 在target-dir目录下产生一个xtrabackup_suspended文件,将xtrabackup进程挂起,不停地将数据文件的变化同步到备份文件,直到用户手工删除xtrabackup_suspended文件 --throttle=# 每秒IO次数,限制backup时使用的I/O操作量,使备份对数据库正常业务的影响最小化 --log-stream 该参数在backup的时候使用,将xtrabackup_logfile的内容输出到标准输出,使用该参数时会自动使用suspend-at-end参数,innobackupex脚本的stream 模式会使用该参数。 --incremental-lsn=name 增量备份时只拷贝LSN比该参数指定值新的ibd pages,前次备份到了哪个LSN可以看前次备份集的xtrabackup_checkpoints文件 --incremental-basedir=name 该参数在backup的时候使用,备份比该参数指定位置的备份集新的idb pages --incremental-dir=name 该参数在prepare的时候使用,指定prepare时产生的f --backup --target-dir=/data0/backup/mysql/ cp -r /data0/mysql/data/testinnodb/ /data0/backup/mysql/ 注意:xtrabackup只备份数据文件,并不备份数据表结构(f --prepare --target-dir=/data0/backup/mysql/ 从备份目录复制对应数据库表结构到默认的数据目录 BASH cp -r /data0/backup/mysql/testinnodb/ /data0/mysql/data/ 删除默认数据目录中对应的数据文件并复制备份的数据文件到默认数据目录 BASH rm /data0/backup/mysql/ib* cp /data0/backup/mysql/ib* /data0/mysql/data/ 修改数据目录权限 BASH chown -R mysql:mysql /data0/mysql/data 重启MySQL BASH /data0/mysql/mysql restart b)增量备份 增量备份优点: 1、数据库太大没有足够的空间全量备份,作增量备份有效节省空间,且效率高。 2、支持热备份。备份过程不锁表,不受时间限制,不影响用户使用。 3、每日备份只产生少量数据,远程备份传输更方便。同时节省空间。 4、备份恢复基于文件操作,降低直接对数据库操作风险。 5、备份效率更高,恢复效率更高。 这个我研究N久没成功,原因暂时还没找到。我测试环境的Mysql版本是5f --backup --target-dir=/data0/backup/mysql/base #生成的备份数据文件 ls /data0/backup/mysql/base/ ibdata1 xtrabackup_checkpoints xtrabackup_logfile #备份数据库表结构 cp -r /data0/mysql/data/testinnodb/ /data0/backup/mysql/ 以此全量备份为基础进行增量备份 BASH 复制代码 代码如下: #建立备份目录 mkdir -p /data0/backup/mysql/delta #建立一个增量备份 xtrabackup_55 --defaults-file=/data0/mysql/myf --prepare --target-dir=/data0/backup/mysql/base xtrabackup_55 --defaults-file=/data0/mysql/myf里datadir这个参数是必须要指定的,xtrabackup_55是根据它去定位innodb数据文件的位置。 innobackupex语法 BASH innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME] [--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp] [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar] [--defaults-file=MYf /data0/backup/mysql 2>/tmp/mysqlbackupf --no-lock --stream=tar /data0/backup/mysql/ 2>/tmp/innobackupf --no-lock --stream=tar /data0/backup/mysql/ 2>/tmp/innobackupf --no-lock --stream=tar /data0/backup/mysql/ssh root@192f --no-lock /data0/backup/mysql 从备份目录拷贝数据、索引、日志到myf --no-lock /data0/backup/mysql 修改数据目录权限 BASH chown -R mysql:mysql /data0/mysql/data 重启MySQL BASH /data0/mysql/mysql restart 五、参考文档 /Linux/2011-05/35410/u4/122567/showart_2537465.html 参考技术A有时候我们需要获取文件的创建时间。
例如:我在研究 《xtrabackup 原理图》的时候,想通过观察确认 xtrabackup_log 是最早创建 并且是 最晚保存的文件。我们就需要知道 xtrabackup_logfile 这个文件的创建时间戳和修改时间戳。
复习:Linux关于文件的三个时间戳
Linux 的文件系统保存有三个时间戳,利用 stat 指令查看文件信息可以获取。他们分别是 ATime、MTime 和 CTime
[root@192-168-199-198 backups]# stat 2.txt File: ‘2.txt’ Size: 16 Blocks: 8 IO Block: 4096 regular fileDevice: 821h/2081d Inode: 15 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-07-23 12:12:14.276981038 +0800Modify: 2019-07-23 12:12:41.415980158 +0800Change: 2019-07-23 12:12:41.415980158 +0800 Birth: -
ATime ——文件的最近访问时间
只要读取文件,ATime 就会更新,对应的是 stat 命令获取的 Access 的值。
[root@192-168-199-198 backups]# cat 2.txt #<-- 读取文件121231233123123[root@192-168-199-198 backups]# stat 2.txt File: ‘2.txt’ Size: 16 Blocks: 8 IO Block: 4096 regular fileDevice: 821h/2081d Inode: 15 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-07-23 12:22:09.644961733 +0800 #<-- 时间变化了Modify: 2019-07-23 12:12:41.415980158 +0800Change: 2019-07-23 12:12:41.415980158 +0800 Birth: -MTime ——文件的内容最近修改的时间
当文件进行被写的时候,MTime 就会更新,对应的是 stat 命令获取的 Modify 的值。[root@192-168-199-198 backups]# echo hello_world > 2.txt #<-- 修改文件内容[root@192-168-199-198 backups]# stat 2.txt File: ‘2.txt’ Size: 12 Blocks: 8 IO Block: 4096 regular fileDevice: 821h/2081d Inode: 15 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-07-23 12:22:09.644961733 +0800Modify: 2019-07-23 12:26:23.466953503 +0800 #<-- 时间变化了Change: 2019-07-23 12:26:23.466953503 +0800 Birth: -这里不要用vi修改文件内容,因为用vi修改文件内容有可能会引起Inode变更,也就是你观察的文件并不是之前的文件了!这个和vi的原理有关。
CTime ——文件属性最近修改的时间
当文件的目录被修改,或者文件的所有者,权限等被修改时,CTime 也就会更新,对应的是 stat 命令获取的 Change 的值。[root@192-168-199-198 backups]# chmod 777 2.txt #<-- 修改文件属性[root@192-168-199-198 backups]# stat 2.txt File: ‘2.txt’ Size: 12 Blocks: 8 IO Block: 4096 regular fileDevice: 821h/2081d Inode: 15 Links: 1Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-07-23 12:22:09.644961733 +0800Modify: 2019-07-23 12:26:23.466953503 +0800Change: 2019-07-23 12:30:35.830945320 +0800 #<-- 时间变化了 Birth: -Linux 无法获取文件创建时间?现在我们知道了Linux有三种时间,ATime、MTime 和 CTime,那么很好奇为什么没有 CRTime (创建时间) 呢? 对比 Windows 系统 (上图),Windows 的 NTFS 文件系统里存在三个时间戳,其中就包含了“创建时间”,但在 Linux 的设计哲学上没有文件“创建时间”这么一说,所以早期版本的ext文件系统不支持文件“创建时间”。但从 ext4 版本开始,文件创建时间存储在ext4文件系统的inode中,所以 ext4 文件系统使用特殊方法也是可以获取文件的创建时间的。
也说明了,是否能获取文件的创建时间,和文件系统是否支持有关。
Linux 上获取文件创建时间的步骤
CentOS7 Linux系统自带一个工具,叫做 debugfs,他可以查出 ext4 文件系统上的文件的创建时间。man debugfs 发现工具的描述是 “ext2/ext3/ext4 file system debugger”,所以他是不支持 xfs 文件系统的。常用的 xfs 文件系统是否支持获取文件创建时间,还有如何获取,这个暂时不清楚,需读者查阅官方文档
以上是关于xtrabackup能同时备份myisam和innodb吗的主要内容,如果未能解决你的问题,请参考以下文章