mysql数据库数据迁移_MySQL数据库迁移详细步骤
==========================================================================================
⼀、背景简介
==========================================================================================
1、问题描述
由于机房搬迁,需要对后台DB服务器进⾏迁移,同时为了保证在数据迁移过程中,对线上业务不造成影响,并能够做到秒级切换。如果我
们采⽤普通的逻辑备份,⽐如:mysqldump,会存在锁表的情况,显然不可取。因此我们采取基于物理备份的⽅案,备份⼯具选型为:xtrabackup。
2、系统环境
IP地址
系统版本
MySQL版本
⾓⾊
172.17.138.239
SUSE Linux Enterprise Server 10 (x86_64)
5.0.26
旧环境(临时主)
10.217.121.196
CentOS 6.3 (x86_64)
5.0.27
新环境(主)
10.217.121.216
CentOS 6.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
# tar -xvzf cmake-2.8.
# cd cmake-2.8.10
# ./bootstrap --prefix=/usr/local
# gmake --jobs=`grep processor/proc/cpuinfo | wc -l`
# gmake install
2、编译安装xtrabackup
# tar xvzf percona-xtrabackup-2.0.
# cd percona-xtrabackup-2.0.8
## 将mysql-5.1.59源码包下载到percona-xtrabackup-2.0.8⽬录下,⽆需解压
# ./utils/build.sh innodb50
注意:
以上标注部分,需要与当前的MySQL主版本对应上,如果有不明⽩的,可以参考以下信息。
#
# vim ./utils/build.sh
# cp innobackupex /usr/local/bin/
# cd src
# cp xbstream xtrabackup_51 /usr/local/bin/
# cd /usr/local/bin/
# ln -s innobackupex innobackupex-1.5.1
# ln -s xtrabackup_51 xtrabackup
==========================================================================================
三、DB数据备份
==========================================================================================
1、⼀些常⽤⽤法
## 如果在从端运⾏的话
innobackupex --user=root --defaults-file=/etc/myf --slave-info --no-timestamp /data/mysql_backup
## 如果在主端运⾏的话
innobackupex --user=root --defaults-file=/etc/myf --no-timestamp /data/mysql_backup
简述安装mysql的过程
## 如果在主端运⾏并压缩传输到远程服务器的话
innobackupex --user=root --defaults-file=/etc/myf --no-timestamp --stream=tar /data/mysql_backup | gzip | ssh
root@10.133.33.85" cat - > /data/"
注意:
我们本次的备份,直接在主DB(172.17.138.239)上进⾏,因为xtrabackup不会锁表,对业务不造成影响,也会为后续的主从关系建⽴带来便利。
2、备份步骤
由于本地服务器的磁盘空间所剩不多,所以本次备份采⽤压缩传输到远程服务器的⽅式。但为了更好地描述在本次备份中遇到的问题,我们先采⽤本地模式。
# innobackupex --user=root --defaults-file=/etc/myf --no-timestamp /data/mysql_backup
注意:
如上报错信息,主要是因为“/etc/myf”配置⽂件⾥没有指定basedir、datadir参数设置,导致xtrabackup不到。
# ps aux | grep mysql[d]
注意:
根据以上信息,我们需要将以下参数添加到配置⽂件中(/etc/myf):
basedir=/usr/local/services/mysql-5.0.26
datadir=/usr/local/services/mysql-5.0.26/var
# innobackupex --user=root --defaults-file=/etc/myf --no-timestamp /data/mysql_backup
注意:
出现这种错误信息,是因为备份⽬录“/data/mysql_backup”已经存在,主要是由前⼀次操作引起的。因为xtrabackup要求备份⽬录事
先不能存在,需要在执⾏时才会⾃动创建。
如果我们将数据备份到本地的话(前提是服务器磁盘空间⾜够多),执⾏以下命令即可:
# rm -rf /data/mysql_backup
# innobackupex --user=root --defaults-file=/etc/myf --no-timestamp /data/mysql_backup
在恢复的时候,将本地的备份数据rsync同步到远程服务器,然后采⽤xtrabackup进⾏恢复即可。
但考虑到本地磁盘空间不⾜,故本次数据迁移,我们采⽤压缩传输到远程服务器的备份⽅式(此种⽅法⽐较慢^_^),执⾏以下命令即可:
innobackupex --user=root --defaults-file=/etc/myf --no-timestamp --stream=tar /data/mysql_backu
p | gzip | ssh
root@10.217.121.196 "cat - > /data/"
## 本地服务器上的备份信息输出
## 远程服务器上的⽂件信息
注意:
以上数据备份时间可能会⽐较长,推荐放在深夜进⾏,第⼆天来恢复 ^_^
==========================================================================================
四、DB数据恢复
==========================================================================================
1、安装mysql-5.0.27环境
# /usr/sbin/groupadd mysql
# /usr/sbin/useradd mysql -g mysql -s /sbin/nologin
# mkdir -p /data/dbdata/{data,binlog,relaylog,otherlog} /var/run/mysql
# chown -R mysql:mysql /data/dbdata /var/run/mysql # cd /usr/local/src
# tar xvzf mysql-5.0.
# cd mysql-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=`grep processor/proc/cpuinfo | wc -l` # make install
# cp ./support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
# cd /usr/local
# mv mysql mysql-5.0.27
# ln -s mysql-5.0.27 mysql
# chmod +w /usr/local/mysql
# chown -R mysql:mysql /usr/local/mysql/
# vim /etc/f
/usr/local/mysql/lib/mysql
# /sbin/ldconfig
# cd /etc
# rm -f myf && ln -s my_oldf myf
# vim myf
……

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。