【MySql】 MySql备份工具Xtrabackup之二
2023-09-14 08:57:29 时间
1. Xtrabackup二进制64位下载地址:
http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/Linux/binary/x86_64/
2.MySQL5.1.56的下载地址:
http://dev.mysql.com/downloads/mysql/5.1.html#downloads
操作系统环境:
CentOS release 5.4 (Final) x86_64 GNU/Linux 2.6.18-164.el5
2.安装配置
1)安装配置mysql-5.1.56
在MySQL 5.1.38前的版本中,当你需要安装InnoDB Plugin时,必须下载Plugin的文件,解压后再进行一系列的安装。从MySQL 5.1.38开始往后,MySQL包含了2个不同版本的InnoDB存储引擎—一个是旧版本的引擎,称之为build-in innodb;另一个是1.0.4版本的InnoDB存储引擎。
Shell tar –zxvvf mysql-5.1.56.tar.gz
Shell cd mysql-5.1.56
Shell ./configure --prefix=/opt/mysql5156
--with-charset=utf8 --with-collation=utf8_general_ci
--with-extra-charsets=latin1,gb2312
--with-plugins=innobase,innodb_plugin,myisam,heap,csv,federated,blackhole
--enable-local-infile --enable-thread-safe-client
Shell make
Shell make install
Shell cp support-files/my-medium.cnf /etc/my.cnf
Shell cd /opt/mysql5156
Shell chown –R mysql .
Shell chgrp –R mysql .
Shell bin/mysql_install_db –user=mysql
Shell chown –R root .
Shell chown –R mysql var
配置启动plugin-innodb
Shell vi /etc/my.cnf
port= 3307
socket= /tmp/mysql5156.sock
[mysqld]
port= 3307
socket= /tmp/mysql5156.sock
ignore_builtin_innodb
启动:shell /opt/mysql5156/bin/mysqld_safe –user=mysql
加载plugin-innodb:
mysql INSTALL PLUGIN INNODB SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_TRX SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_LOCKS SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_LOCK_WAITS SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_CMP SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_CMP_RESET SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_CMPMEM SONAME ha_innodb_plugin.so;
mysql INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME ha_innodb_plugin.so;
上述语句只需执行一次就ok了,即使重启mysqld也不需要再次安装了。
mysql show plugins;
mysql select @@innodb_version;
+------------------+
| @@innodb_version |
+------------------+
| 1.0.15|
+------------------+
1 row in set (0.00 sec)
mysql执行INSTALL PLUGIN INNODB SONAME ha_innodb_plugin.so;
如果报错提示:ERROR 1289 (HY000): The ‘plugin’ feature is disabled; you need MySQL built with ‘HAVE_DLOPEN’ to have it working
经上网搜索找到解决问题方法:
在编译时不要用静态编译,将下面两个从编译参数中删除
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
至于原因不是很清楚。
另有人提出可以用下面方法解决
在编译mysql时先执行下面的命令
export CFLAGS=”-O2 -DHAVE_DLOPEN=1″export CXXFLAGS=”-O2 -DHAVE_DLOPEN=1″
但在做测试时,发现仍然有问题不能编译通过,可能是环境不同吧,我的系统环境为:
Centos 5.4x86_64 GNU/Linux
(2)安装配置Xtrabackup
先看看如何安装Xtrabackup,最简单的安装方式是使用RPM包,不过想使用源代码方式安装的话,其安装方式有点古怪,因为它采用的在MySQL源代码上打补丁构建的方式安装的。这里使用二进制包的安装方式,相对比较灵活。
Shell mkdir /usr/local/xtrabackup
Shell tar -zxvf xtrabackup-1.6.tar.gz –C /usr/local/xtrabackup
Shell cd /usr/local/xtrabackup/bin
Shell ln –s innobackupex-1.5.1 innobackupex
配置环境变量:
Shell export PATH=$PATH:/usr/local/xtrabackup/bin
修改mysql配置文件:
Shell vi /etc/my.cnf
添加或修改:datadir =/usr/local/mysql/var(数据库目录)
特别注意:default_table_type = InnoDB(必须改,否则进行增量备份的时候不成功)
三.xtrabackup的备份与恢复使用
关于xtrabackup的参数选项,如下:–defaults-file=#默认配置文件的路径,如果补该参数,xtrabackup将从依次从以下位置查找配置文件/etc/my.cnf /etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf,并读取配置文件中的[mysqld]和[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时产生的.delta文件和日志文件的存放路径
–tables=name在备份file-per-table类型的数据文件时使用,使用正则表达式指定需要备份的innodb表
–datadir=name
MySQL数据库的数据文件目录。
xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)
1.普通备份(全量备份)
shell mkdir -p /backup/xtrabackup
shell xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/xtrabackup
全量备份模拟恢复:需要执行两次xtrabackup –prepareshell xtrabackup –defaults-file=/etc/my.cnf –prepare –target-dir=/backup/xtrabackup
shell xtrabackup –defaults-file=/etc/my.cnf –prepare –target-dir=/backup/xtrabackup
删除数据库目录下的数据文件:
Shell rm –rf /usr/local/mysql/var/ib*
Shell cp /backup/xtrabackup/ib* /usr/local/mysql/var
Shell chown –R mysql.root /usr/local/mysql/var
重启测试是否恢复成功。
注意,xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm)。
2.普通备份(增量备份)
增量备份优点:
1.数据库太大没有足够的空间全量备份,作增量备份有效节省空间,且效率高。
2.支持热备份。备份过程不锁表,不受时间限制,不影响用户使用。
3.每日备份只产生少量数据,远程备份传输更方便。同时节省空间。
4.备份恢复基于文件操作,降低直接对数据库操作风险。
5.备份效率更高,恢复效率更高。
增量备份及模拟恢复步骤:
shell mkdir -p /backup/xtrabackup/base
shell mkdir -p /backup/xtrabackup/delta(1)先做一次全量备份,因为后面的增量备份要以此为基础
shell xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/xtrabackup/base
shell ls /backup/xtrabackup/base
ibdata1xtrabackup_checkpointsxtrabackup_logfile
(2)以此全量备份为基础进行增量备份
Shell xtrabackup --defaults=/etc/my.cnf--backup--target-dir=/backup/xtrabackup/delta/ --incremental-basedir=/backup/xtrabackup/base/
shell ls /backup/xtrabackup/delta
ibdata1.deltaxtrabackup_checkpointsxtrabackup_logfile
ps:在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份后被修改过的page,所以增量备份只暂用较少的空间。
增量备份可以在增量备份的基础上增量。
(注:/backup/xtrabackup/delta/是每次都需修改的。比如第二次增量就改成/backup/xtrabackup/delta2,当然可以写个脚本进行自动备份)
增量备份模拟恢复过程:
我们需要分别对全量、增量备份各做一次prepare操作。
shell xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/
shell xtrabackup --defaults-file=/etc/my.cnf --prepare--target-dir=/backup/xtrabackup/base/
--incremental-dir=/backup/xtrabackup/delta/
shell xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/
shell rm –rf /usr/local/mysql/var/ib* #删除原来数据目录下的数据文件Shell cp /backup/xtrabackup/base/ib* /usr/local/mysql/var
Shell chown –R mysql.root /usr/local/mysql/var
重启后测试是否成功。
再次提醒,xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)。
3.增量备份对比innobackupex和xtrabackup我们可以看到,innobackupex操作起来更方便,但是innobackupex会有短暂的锁表(时间依赖于MyISAM大小)。xtrabackup备份还有另一个重要特性:增量备份。(未来的版本innobackupex也可能增长该功能)比如表中目前有10条数据,先备份.备份到/usr/local/backup/1/目录(完整备份)
shell xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/1/查看它的lsn点:
shell cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0:0
to_lsn = 0:592411再向表中插入数据,增量备份
shell xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/2/ --incremental-basedir=/usr/local/backup/1/把增量备份到2(1到2的增量备份)查看它的lsn点:
shell cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:592411
to_lsn = 0:908563再向表中插入数据,增量备份
shell xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/1/把增量备份到3(1到3的增量备份,2的备份已经包含在里面了,按照这种方式备份的话,最后的还原只需要还原完全备份和最后一份增量备份即可)查看它的lsn点:
shell cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:592411
to_lsn = 0:1507854
或则另一种增量备份方式:
shell xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/2/把增量备份到3(2到3的增量备份,各个增量备份独立,按照这种方式备份的话,最后的还原需要还原完全备份和各个增量备份)查看它的lsn点:
shell cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:908563
to_lsn = 0:1507854
增量备份模拟恢复:我们需要分别对全量、增量备份各做一次prepare操作。①:基于(1到3的增量备份,2的备份已经包含在里面了,按照这种方式备份的话,最后的还原只需要还原完全备份和最后一份增量备份即可)把第1次的完备恢复
shell xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/继续把增量备份恢复上去
shell xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/
shell xtrabackup --prepare --target-dir=/usr/local/backup/1/恢复完成接着
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
chown –R mysql.root /usr/local/mysql/var
/etc/init.d/mysql restart
2基于(2到3的增量备份,各个增量备份独立,按照这种方式备份的话,最后的还原需要还原完全备份和各个增量备份)把第1次的完备恢复
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/继续把增量备份恢复上去
shell xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/2/继续把增量备份恢复上去
shell xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/恢复完成接着
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
chown –R mysql.root /usr/local/mysql/var
/etc/init.d/mysql restart
四、innobackupex备份与恢复
Usage:
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=MY.CNF]
[--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR
innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]
[--ibbackup=IBBACKUP-BINARY] BACKUP-DIR
innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR
第一个命令行是热备份mysql数据库。
带有--apply-log选项的命令是准备在一个备份上启动mysql服务。
带有--copy-back选项的命令从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置。
参数注释:
–defaults-file=同xtrabackup的–defaults-file参数;
–apply-log对xtrabackup的–prepare参数的封装;
–copy-back做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir;
–remote-host=HOSTNAME通过ssh将备份数据存储到进程服务器上;
--stream=[tar]
http://samyubw.blog.51cto.com/978243/555388
MySQL Workbench 图形化界面工具 MySQL官方提供了一款免费的图形工具——MySQL Workbench,它是一款功能强大且易于使用的数据库设计、管理和开发工具,总之,MySQL Workbench是一款非常好用的MySQL图形工具,可以满足大多数MySQL用户的需求。
03_mysql下载安装登入及图形化工具Windows版 https://github.com/qq153916230/study.git mysql windows 5.7及8.0版本下载安装步骤和常见问题,mysql登入方式,5.7版本中文插入报错
MySQL基础(mysql下载,图形化界面工具,DDL) 1.Mysql下载安装启动 1.下载 3.配置 4. 启动mysql 5.客户端连接 2.图形化界面工具 2. 使用 3.SQL 1.SQL分类 1.DDL 1.数据库操作 2. 表操作 3.表操作-数据类型 4.表操作-案例
推荐几款MySQL相关工具 随着互联网技术的不断发展, MySQL 相关生态也越来越完善,越来越多的工具涌现出来。一些公司或个人纷纷开源出一些不错的工具,本篇文章主要介绍几款 MySQL 相关实用工具。提醒下,这里并不介绍 Navicat 等这类图形化操作工具哦。
MySQL Workbench 图形化界面工具 MySQL官方提供了一款免费的图形工具——MySQL Workbench,它是一款功能强大且易于使用的数据库设计、管理和开发工具,总之,MySQL Workbench是一款非常好用的MySQL图形工具,可以满足大多数MySQL用户的需求。
03_mysql下载安装登入及图形化工具Windows版 https://github.com/qq153916230/study.git mysql windows 5.7及8.0版本下载安装步骤和常见问题,mysql登入方式,5.7版本中文插入报错
MySQL基础(mysql下载,图形化界面工具,DDL) 1.Mysql下载安装启动 1.下载 3.配置 4. 启动mysql 5.客户端连接 2.图形化界面工具 2. 使用 3.SQL 1.SQL分类 1.DDL 1.数据库操作 2. 表操作 3.表操作-数据类型 4.表操作-案例
推荐几款MySQL相关工具 随着互联网技术的不断发展, MySQL 相关生态也越来越完善,越来越多的工具涌现出来。一些公司或个人纷纷开源出一些不错的工具,本篇文章主要介绍几款 MySQL 相关实用工具。提醒下,这里并不介绍 Navicat 等这类图形化操作工具哦。
相关文章
- MySQL 数据对比之旅:一款强大的工具(mysql数据对比工具)
- MySQL数据库查看:强大而便捷的工具(mysql数据库查看工具)
- 定时自动执行MySQL增量备份(mysql定时增量备份)
- MySQL过程和函数:优雅的数据库操作方式(mysql过程函数)
- MySQL数据库灵活实用的备份服务器(mysql备份服务器)
- MySQL数据备份:可靠的安全保障(mysql的数据备份工具)
- MySQL调试工具:迈向数据库之路(mysql调试工具)
- MySQL:启用服务高效运行(mysql运行服务)
- 揭秘MySQL默认密码之谜(mysql默认密码是什么)
- MySQL数据库界面工具:实现快速开发(mysql界面工具)
- MySQL备份出现乱码(mysql备份乱码)
- 使用 MySQL 日志查看工具提高数据库运维效率(mysql日志查看工具)
- Mysql 中外键的实现与应用(mysql外键)
- 据库快速掌握MySQL查询连接数据库技巧(mysql查询连接数)
- 如何实现MySQL全库备份?(mysql全库备份)
- MySQL备份软件:保护你的数据安全(mysql数据库备份软件)
- MySQL列相加:实现数据求和操作(mysql列相加)
- MySQL 数组,提高数据处理效率的必备工具(mysql数组)
- 技术MySQL集群技术:让性能飞跃(mysql的集群)
- MySQL汉字拼音排序轻松实现(mysql汉字拼音排序)
- 解决方案:如何处理MySQL数据不支持序列的问题(mysql数据不支持序列)
- MySQL无法响应:探索停止命令的奥秘(mysql 停止命令)
- 使用MySQL在线工具就可以搞定各种数据库任务(mysql在线工具)
- MySQL中的data文件存储表和数据的核心组成部分(mysql中data文件)
- MySQL中一列求和函数SUM(mysql一列求和函数)
- 高效求解MySQL问题,瞬间秒杀上机答案(mysql上机答案)
- MySQL 预留了代码页,无法支持中文版(mysql不能有中文版)