使用xtrabackup备份恢复innodb数据(不同机器之间)
2010-05-27 16:27
776 查看
###########################备份数据库############################
1. 直接使用二进制版本
#centOS4.6版本用这个
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-0.9.5rc/RPM/rhel4/xtrabackup-0.9.5rc-35.rhel4.x86_64.rpm
#centOS5.0以上版本用这个
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-0.9.5rc/RPM/rhel5/xtrabackup-0.9.5rc-50.rhel5.x86_64.rpm
2. 安装
rpm -ivh xtrabackup-0.9.5rc-35.rhel4.x86_64.rpm
3. 修改/etc/my.cnf
[mysqld]
datadir=/data/database/mysql/
不用重启数据库
4. 在A机上运行 xtrabackup , 并将输出文件打包到B机, 准备在B机上用xtrabackup还原这些数据
#### A机上备份数据 注意,增加--slave-info是为了保存主从同步信息
/usr/bin/innobackupex-1.5.1 --user=root --password='`cat /data/save/mysql_root`' --no-lock --stream=tar /tmp/ --slave-info | gzip - > backup74.tar.gz
###########################还原数据库############################
scp backup74.tar.gz 123.123.123.123:/data/database/xtra/
cd /data/database/xtra/
#### 注意解压的时候一定要加上i参数
tar xfzi backup.tar.gz
#### 日志(/data/database/xtra/ 此目录为解压后的目录)
innobackupex-1.5.1 --apply-log /data/database/xtra/
#### 数据(/data/database/xtra/ 此目录为解压后的目录)
innobackupex-1.5.1 --copy-back /data/database/xtra/
####修改权限,否则mysql无法启动
chown -R mysql:mysql .
还原数据库后要重启数据库
还原数据库最好把需要恢复的数据库关掉,恢复后启动会存在三个问题:
1.由于备份是在未锁库未停MYSQL服务的情况下进行的。所以还原出来的数据存在事务回滚。
事务回滚的同时又进行了数据库主从同步,那就会造成,记录重复。那么恢复后的数据库会报如下错误:
ERROR: 1062 Duplicate entry '257959' for key 1 080422.....
2.因为是从一台机器拉到另外一台机器上,所以主机名发生了变化,那么用以同步的relay-bin日志名称
也跟原来的不同,如果不改正过来,会发生如下错误:
100526 3:39:38 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=/data/database/mysql/ww-relay-bin' to avoid this problem.
3.同样是因为从一台机器上备份过来,所以root的密码也己经给恢复到备份源机一样。如不改正,会发生如下错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方法如下:
vi /etc/my.cnf
relay-log=ww-relay-bin #重定义日志名称
slave-skip-errors=1007,1051,1062 #跳过错误
重启数据库。
1. 直接使用二进制版本
#centOS4.6版本用这个
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-0.9.5rc/RPM/rhel4/xtrabackup-0.9.5rc-35.rhel4.x86_64.rpm
#centOS5.0以上版本用这个
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-0.9.5rc/RPM/rhel5/xtrabackup-0.9.5rc-50.rhel5.x86_64.rpm
2. 安装
rpm -ivh xtrabackup-0.9.5rc-35.rhel4.x86_64.rpm
3. 修改/etc/my.cnf
[mysqld]
datadir=/data/database/mysql/
不用重启数据库
4. 在A机上运行 xtrabackup , 并将输出文件打包到B机, 准备在B机上用xtrabackup还原这些数据
#### A机上备份数据 注意,增加--slave-info是为了保存主从同步信息
/usr/bin/innobackupex-1.5.1 --user=root --password='`cat /data/save/mysql_root`' --no-lock --stream=tar /tmp/ --slave-info | gzip - > backup74.tar.gz
###########################还原数据库############################
scp backup74.tar.gz 123.123.123.123:/data/database/xtra/
cd /data/database/xtra/
#### 注意解压的时候一定要加上i参数
tar xfzi backup.tar.gz
#### 日志(/data/database/xtra/ 此目录为解压后的目录)
innobackupex-1.5.1 --apply-log /data/database/xtra/
#### 数据(/data/database/xtra/ 此目录为解压后的目录)
innobackupex-1.5.1 --copy-back /data/database/xtra/
####修改权限,否则mysql无法启动
chown -R mysql:mysql .
还原数据库后要重启数据库
还原数据库最好把需要恢复的数据库关掉,恢复后启动会存在三个问题:
1.由于备份是在未锁库未停MYSQL服务的情况下进行的。所以还原出来的数据存在事务回滚。
事务回滚的同时又进行了数据库主从同步,那就会造成,记录重复。那么恢复后的数据库会报如下错误:
ERROR: 1062 Duplicate entry '257959' for key 1 080422.....
2.因为是从一台机器拉到另外一台机器上,所以主机名发生了变化,那么用以同步的relay-bin日志名称
也跟原来的不同,如果不改正过来,会发生如下错误:
100526 3:39:38 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=/data/database/mysql/ww-relay-bin' to avoid this problem.
3.同样是因为从一台机器上备份过来,所以root的密码也己经给恢复到备份源机一样。如不改正,会发生如下错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方法如下:
vi /etc/my.cnf
relay-log=ww-relay-bin #重定义日志名称
slave-skip-errors=1007,1051,1062 #跳过错误
重启数据库。
相关文章推荐
- 【转】IOS开发使用委托delegate在不同窗口之间传递数据
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- 使用类的重载实现不同数据类型之间的运算
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- 本地和远程机器之间传输数据使用winscp
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- 【委托】 IOS开发使用委托delegate在不同窗口之间传递数据
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- MYSQL数据库同一台机器不同数据库之间的数据同步
- IOS开发使用委托delegate在不同窗口之间传递数据
- iPhone使用委托在不同的窗口之间传递数据
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- iPhone使用委托在不同的窗口之间传递数据
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- 使用repeater,遍历数据,不规则排序,不同的样式之间切换
- iphone 使用委托(delegate)在不同的窗口之间传递数据-转
- IOS开发使用委托delegate在不同窗口之间传递数据
- 两台不同window7机器上的oralce,实例之间相互拷贝的方式(EXPDP和IMPDP数据泵)
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- 使用OPENDATASOURCE和OPENROWSET在不同类型的数据库之间导入导出数据