mysql迁移2.docx

上传人:b****6 文档编号:3730588 上传时间:2022-11-25 格式:DOCX 页数:14 大小:1.02MB
下载 相关 举报
mysql迁移2.docx_第1页
第1页 / 共14页
mysql迁移2.docx_第2页
第2页 / 共14页
mysql迁移2.docx_第3页
第3页 / 共14页
mysql迁移2.docx_第4页
第4页 / 共14页
mysql迁移2.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

mysql迁移2.docx

《mysql迁移2.docx》由会员分享,可在线阅读,更多相关《mysql迁移2.docx(14页珍藏版)》请在冰豆网上搜索。

mysql迁移2.docx

mysql迁移2

 MySQL数据库迁移详细步骤

2015-01-0200:

40:

04

标签:

mysql 数据库迁移

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。

否则将追究法律责任。

==========================================================================================

一、背景简介

==========================================================================================

1、问题描述

由于机房搬迁,需要对后台DB服务器进行迁移,同时为了保证在数据迁移过程中,对线上业务不造成影响,并能够做到秒级切换。

如果我们采用普通的逻辑备份,比如:

mysqldump,会存在锁表的情况,显然不可取。

因此我们采取基于物理备份的方案,备份工具选型为:

xtrabackup。

 

2、系统环境

IP地址

系统版本

MySQL版本

角色

172.17.138.239

SUSELinuxEnterpriseServer10(x86_64)

5.0.26

旧环境(临时主)

10.217.121.196

CentOS6.3(x86_64)

5.0.27

新环境(主)

10.217.121.216

CentOS6.3(x86_64)

5.0.27

新环境(从)

(1)、由于当前的mysql版本太旧,故备份工具推荐选择xtrabackup-2.0.8的版本;

(2)、由于当前的系统环境太旧,官方提供的xtrabackup二进制版本无法运行,故需进行源码编译。

 

3、编译要求

(1)、需要安装cmake依赖库;

(2)、需要下载一份mysql-5.1.59的源码包,放在percona-xtrabackup-2.0.8目录下;

(3)、libtool的版本不能高于2.4。

 

==========================================================================================

二、xtrabackup编译安装

==========================================================================================

1、编译安装cmake

http:

//wwwNaNake.org/files/v2.8/cmake-2.8.10.tar.gz

#tar-xvzfcmake-2.8.10.tar.gz

#cdcmake-2.8.10

#./bootstrap--prefix=/usr/local

#gmake--jobs=`grepprocessor/proc/cpuinfo|wc-l`

#gmakeinstall

 

2、编译安装xtrabackup

#tarxvzfpercona-xtrabackup-2.0.8.tar.gz

#cdpercona-xtrabackup-2.0.8

 

## 将mysql-5.1.59源码包下载到percona-xtrabackup-2.0.8目录下,无需解压

#./utils/build.sh innodb50

 

注意:

以上标注部分,需要与当前的MySQL主版本对应上,如果有不明白的,可以参考以下信息。

 

#catBUILD.txt

 

#vim./utils/build.sh

 

#cpinnobackupex/usr/local/bin/

#cdsrc

#cpxbstreamxtrabackup_51/usr/local/bin/

#cd/usr/local/bin/

#ln-sinnobackupexinnobackupex-1.5.1

#ln-sxtrabackup_51xtrabackup

 

==========================================================================================

三、DB数据备份

==========================================================================================

1、一些常用用法

## 如果在从端运行的话

innobackupex--user=root--defaults-file=/etc/f --slave-info --no-timestamp/data/mysql_backup

 

## 如果在主端运行的话

innobackupex--user=root--defaults-file=/etc/f--no-timestamp/data/mysql_backup

 

## 如果在主端运行并压缩传输到远程服务器的话

innobackupex--user=root--defaults-file=/etc/f--no-timestamp--stream=tar/data/mysql_backup| gzip|sshroot@10.133.33.85"cat->/data/mysql_backup.tgz"

 

注意:

我们本次的备份,直接在主DB(172.17.138.239)上进行,因为xtrabackup不会锁表,对业务不造成影响,也会为后续的主从关系建立带来便利。

 

2、备份步骤

由于本地服务器的磁盘空间所剩不多,所以本次备份采用压缩传输到远程服务器的方式。

但为了更好地描述在本次备份中遇到的问题,我们先采用本地模式。

 

#innobackupex--user=root--defaults-file=/etc/f--no-timestamp/data/mysql_backup

注意:

如上报错信息,主要是因为“/etc/f”配置文件里没有指定basedir、datadir参数设置,导致xtrabackup找不到。

 

#psaux|grepmysql[d]

注意:

根据以上信息,我们需要将以下参数添加到配置文件中(/etc/f):

basedir=/usr/local/services/mysql-5.0.26

datadir=/usr/local/services/mysql-5.0.26/var

 

#innobackupex--user=root--defaults-file=/etc/f--no-timestamp/data/mysql_backup

注意:

出现这种错误信息,是因为备份目录“/data/mysql_backup”已经存在,主要是由前一次操作引起的。

因为xtrabackup要求备份目录事先不能存在,需要在执行时才会自动创建。

 

如果我们将数据备份到本地的话(前提是服务器磁盘空间足够多),执行以下命令即可:

#rm-rf/data/mysql_backup

#innobackupex--user=root--defaults-file=/etc/f--no-timestamp/data/mysql_backup

 

在恢复的时候,将本地的备份数据rsync同步到远程服务器,然后采用xtrabackup进行恢复即可。

 

但考虑到本地磁盘空间不足,故本次数据迁移,我们采用压缩传输到远程服务器的备份方式(此种方法比较慢^_^),执行以下命令即可:

innobackupex--user=root--defaults-file=/etc/f--no-timestamp--stream=tar/data/mysql_backup|gzip|sshroot@10.217.121.196"cat->/data/mysql_backup.tgz"

 

## 本地服务器上的备份信息输出

 

## 远程服务器上的文件信息

 

注意:

以上数据备份时间可能会比较长,推荐放在深夜进行,第二天来恢复 ^_^

 

==========================================================================================

四、DB数据恢复

==========================================================================================

1、安装mysql-5.0.27环境

#/usr/sbin/groupaddmysql

#/usr/sbin/useraddmysql-gmysql-s/sbin/nologin

#mkdir-p/data/dbdata/{data,binlog,relaylog,otherlog}/var/run/mysql

#chown-Rmysql:

mysql/data/dbdata/var/run/mysql

 

#cd/usr/local/src

#tarxvzfmysql-5.0.27.tar.gz

#cdmysql-5.0.27

#./configure--prefix=/usr/local/mysql\

--datadir=/data/dbdata/data\

--enable-thread-safe-client\

--enable-assembler\

--enable-local-infile\

--with-charset=utf8\

--with-collation=utf8_general_ci\

--with-extra-charsets=all\

--with-unix-socket-path=/var/run/mysql/mysql.sock\

--without-debug\

--with-embedded-server\

--with-big-tables

 

#make--jobs=`grepprocessor/proc/cpuinfo|wc-l`

#makeinstall

 

#cp./support-files/mysql.server/etc/init.d/mysqld

#chmod+x/etc/init.d/mysqld

#chkconfig--addmysqld

#chkconfigmysqldon

 

#cd/usr/local

#mvmysqlmysql-5.0.27

#ln-smysql-5.0.27mysql

 

#chmod+w/usr/local/mysql

#chown-Rmysql:

mysql/usr/local/mysql/

 

#vim/etc/ld.so.conf

/usr/local/mysql/lib/mysql

 

#/sbin/ldconfig

 

#cd/etc

#rm-ff&&ln-smy_ff

#vimf

……

innodb_data_file_path=ibdata1:

1024M:

autoextend

innodb_log_file_size=512M

innodb_log_files_in_group=3

……

 

注意:

以上我们故意在开始部署MySQL环境时,将表空间文件分配的少一些,这样可以让MySQL启动的快一些,同时也为接下来的恢复操作以作区别。

也需要注意一下以下附件中的参数“bind-address”、“server-id”。

 

#cd/usr/local/mysql

#./bin/mysql_install_db--datadir=/data/dbdata/data--user=mysql

#servicemysqldstart

 

2、编译安装xtrabackup

在此省略,可以参考之前的步骤,或者直接将之前编译后的二进制文件拷贝过来即可。

 

3、DB数据恢复

#mkdir-p/data/mysql_backup

#tar-ixvzf /data/mysql_backup.tgz-C/data/mysql_backup

 

注意:

在做tar解压操作时,一定要加上“-i”参数。

 

#servicemysqldstop

#cd/data/dbdata

#mvdatadata.old&&mkdirdata

#rm-rfbinlog/*

#cd/etc

#rmf&&ln-smy_ff

……

innodb_data_file_path=ibdata1:

2000M;ibdata2:

2000M;ibdata3:

2000M;ibdata4:

2000M;ibdata5:

2000M;ibdata6:

2000M;ibdata7:

2000M;ibdata8:

2000M;ibdata9:

2000M;ibdata10:

2000M;ibdata11:

2000M;ibdata12:

2000M;ibdata13:

2000M;ibdata14:

2000M;ibdata15:

2000M;ibdata16:

2000M;ibdata17:

2000M;ibdata18:

2000M;ibdata19:

2000M;ibdata20:

2000M;ibdata21:

2000M;ibdata22:

2000M;ibdata23:

2000M;ibdata24:

2000M;ibdata25:

2000M;ibdata26:

2000M;ibdata27:

2000M;ibdata28:

2000M;ibdata29:

2000M;ibdata30:

2000M;ibdata31:

2000M;ibdata32:

2000M;ibdata33:

2000M;ibdata34:

2000M;ibdata35:

2000M;ibdata36:

2000M;ibdata37:

2000M;ibdata38:

2000M;ibdata39:

2000M;ibdata40:

2000M;ibdata41:

2000M;ibdata42:

2000M;ibdata43:

2000M;ibdata44:

2000M;ibdata45:

2000M;ibdata46:

2000M;ibdata47:

2000M;ibdata48:

2000M;ibdata49:

2000M;ibdata50:

2000M;ibdata51:

2000M;ibdata52:

2000M;ibdata53:

2000M;ibdata54:

2000M;ibdata55:

2000M;ibdata56:

2000M;ibdata57:

2000M;ibdata58:

2000M;ibdata59:

2000M;ibdata60:

2000M;ibdata61:

2000M;ibdata62:

2000M;ibdata63:

2000M;ibdata64:

2000M;ibdata65:

2000M;ibdata66:

2000M;ibdata67:

2000M;ibdata68:

2000M;ibdata69:

2000M;ibdata70:

2000M;ibdata71:

2000M;ibdata72:

2000M;ibdata73:

2000M;ibdata74:

2000M;ibdata75:

2000M;ibdata76:

2000M;ibdata77:

2000M;ibdata78:

2000M;ibdata79:

2000M;ibdata80:

2000M;ibdata81:

2000M;ibdata82:

2000M;ibdata83:

2000M;ibdata84:

2000M;ibdata85:

2000M;ibdata86:

2000M;ibdata87:

2000M;ibdata88:

2000M;ibdata89:

2000M;ibdata90:

2000M;ibdata91:

2000M;ibdata92:

2000M;ibdata93:

2000M;ibdata94:

2000M;ibdata95:

2000M;ibdata96:

2000M;ibdata97:

2000M;ibdata98:

2000M;ibdata99:

2000M;ibdata100:

2000M;ibdata101:

2000M;ibdata102:

2000M;ibdata103:

2000M;ibdata104:

2000M;ibdata105:

2000M;ibdata106:

2000M;ibdata107:

2000M;ibdata108:

2000M;ibdata109:

2000M;ibdata110:

2000M;ibdata111:

2000M;ibdata112:

2000M;ibdata113:

2000M;ibdata114:

2000M;ibdata115:

2000M;ibdata116:

2000M;ibdata117:

2000M;ibdata118:

2000M;ibdata119:

2000M;ibdata120:

2000M;ibdata121:

2000M:

autoextend

innodb_log_file_size=256M

innodb_log_files_in_group=2

……

注意:

以上参数要和旧环境对应,否则无法启动,如果参数“innodb_log_files_in_group”在旧环境没有设置,此处可以忽略不设置,默认值为2。

也需要注意一下以下附件中的参数“bind-address”、“server-id”。

 

#innobackupex--apply-log/data/mysql_backup

 

#innobackupex--copy-back/data/mysql_backup

 

# cp-a/usr/local/src/mysql-5.0.27/sql/share/*/data/dbdata/data/mysql/

 

注意:

以上步骤必须进行,否则会报错,导致启动失败。

 

#chown-Rmysql:

mysql/data/dbdata/data

#servicemysqldstart

 

## 至于另一台服务器(10.217.121.216)的DB数据恢复,可以将“10.217.121.196”上的解压数据同步过来,然后按照同样的方式进行恢复即可

#rsync-arvPz-e"ssh-lroot-p36000"/data/mysql_backup/10.217.121.216:

/data/mysql_backup/

 

4、主从关系建立

(1)、DB账号恢复

将“172.17.138.239”的“mysql”数据库导出,然后导入到“10.217.121.196”

将“172.17.138.239”的从DB的“mysql”数据库导出,然后导入到“10.217.121.216”

 

(2)、“10.217.121.196”与“10.217.121.216”主从关系建立

在“10.217.121.196”上的操作:

#mysql-uroot-e"grantreplicationslaveon*.*to'repl'@'10.217.121.216'identifiedby'repl123456';"

#mysql-uroot-e"flushprivileges;"

#mysql-uroot-e"showmasterstatus\G"

 

在“10.217.121.216”上的操作:

#mysql-uroot-e"changemastertomaster_host='10.217.121.196',master_user='repl',master_password='repl123456',master_log_file='XXX',master_log_pos=XXX;"

#mysql-uroot-e"startslave;"

#mysql-uroot-e"showslavestatus\G"

 

注意:

以上标注部分,需要根据实际情况填写即可。

 

(3)、“172.17.138.239”与“10.217.121.196”主从关系建立

在“172.17.138.239”上的操作:

#mysql-uroot-e"grantreplicationslaveon*.*to'repl'@'10.217.121.196'identifiedby'repl123456';"

#mysql-uroot-e"flushprivileges;"

#mysql-uroot-e"showmasterstatus\G"

在“10.217.121.196”上的操作:

#cat/data/mysql_backup/xtrabackup_binlog_info

 

#mysql-uroot-e"changemastertomaster_host='172.17.138.239',master_user='repl',master_password='repl123456',master_log_file='TaeSupport.001635',master_log_pos=436953160;"

 

#mysql-uroot-e"startslave;"

#mysql-uroot-e"showslavestatus\G"

 

最终的主从关系如下:

172.17.138.239 → 10.217.121.196 → 10.217.121.216

Mater            MasterSlave       Slave

 

注意:

以上3台DB的配置文件“/etc/f”中的“server-id”参数,必须保持不相同,否则你懂得 ^_^

 

业务侧切换时,只需指向新的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1