MySQL資料移轉實戰

來源:互聯網
上載者:User

標籤:mysql   資料移轉   

一、背景:

公司因為機器資源緊張,需要給測試部分騰出幾台機器做測試用,需要把現有機器上的應用全部遷移到別的機器上。

經過討論,採用Xtrabackup工具對對InnoDB做資料備份。

二、準備工作

1、安裝Xtrabackup工具

1)安裝依賴包

yum install libaio libaio-devel perl-Time-HiRes curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel perl-ExtUtils-MakeMaker perl-DBD-MySQL.* 

安裝 perl-DBD-MySQL 時遇到了安裝錯誤的提示:

#rpm -ivh perl-DBD-mysql-4.006-1.el5.rf.i386.rpm

warning: perl-DBD-mysql-4.006-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6

error: Failed dependencies:

libmysqlclient.so.16 is needed by perl-DBD-mysql-4.006-1.el5.rf.i386

libmysqlclient.so.16(libmysqlclient_15) is needed by perl-DBD-mysql-4.006-1.el5.rf.i386

原因分析:因為沒有安裝 MySQL-shared ,mysql沒有lib庫,導致找不到libmysqlclient.so.16

解決辦法:下載安裝 MySQL-shared-compat-5.5.43-1.el7.x86_64.rpm 注意MySQL-shared 的版本不能太過,5.6以上就是libmysqlclient.so.18

2)下載安裝Xtrabackup 

可以下載rpm包也可以下載源碼包,如果沒有特殊要求建議rpm包安裝

下面介紹源碼包安裝方法:

1)解壓     

        cd /usr/local

        tar zxvf percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz

     2)拷貝innobackupex、xtrabackup、xtrabackup_51 工具到/usr/bin

        cp /usr/local/percona-xtrabackup-2.1.5-680-Linux-x86_64/bin/innobackupex /usr/bin/innobackupex

        cp /usr/local/percona-xtrabackup-2.1.5-680-Linux-x86_64/bin/xtrabackup  /usr/bin/xtrabackup

        cp /usr/local/percona-xtrabackup-2.1.5-680-Linux-x86_64/bin/xtrabackup_55  /usr/bin/xtrabackup_55

如果不拷貝到/usr/bin 目錄下可以做個軟串連。當在命令列能夠tab出innobackupex 命令就表示安裝成功

三、資料移轉

1、備份資料庫,因為資料庫比較大,可以先對資料庫做備份然後再做其他動作

usr/bin/innobackupex  --user=user --password=pass --defaults-file=/etc/my.cnf --socket=/app/mydata/mysql.sock  --stream=tar /app/bak/ 2>/app/bak/mydata.log | gzip 1>/app/bak/mydata.tar.gz

備份壓縮資料

因為怕在兩台機器見傳輸出現網路問題所以,沒有選擇壓縮傳輸到遠程伺服器,如果網路穩定或者磁碟空間不夠可以選擇壓縮傳輸到遠程伺服器操作

/usr/bin/innobackupex --user=root --password=pass --defaults-file=/etc/my.cnf --no-timestamp --stream=tar /data/mysql_backup | gzip | ssh [email protected]" cat - > /data/mysql_backup.tgz"

2、實現資料單機多執行個體:

因為要遷移到的主機上已經有一個mysql資料庫在跑了,所以要在這台主機上實現單機多執行個體。

(單機多執行個體的操作可以看我的另一篇微博:http://yylinux.blog.51cto.com/8831641/1677678)

1)建立一個新的目錄存放資料

#mkdir /app/mydata3308

2)配置my.cnf檔案,配置兩個my.cnf 不同的mysql執行個體指向不同的my.cnf

#cp -p /etc/my.cnf /etc/my3308.cnf

#vim /etc/my3308.cnf

將port 修改為3308 和 相關path修改為對應的/app/mydata3308 的 path

3、將壓縮的檔案遠程拷貝到目標主機

#scp [email protected]:/app/bak/mydata.tar.gz /apiapp/

4、資料恢複

1) 先停止資料庫:mysqladmin -uroot -p -S /app/mydata/mysql.sock shotdown

2) 解壓 tar -izxvf mydata.tar.gz -C /apiapp/db/   (沒有db ,需要mkdir /data/back_data/db/,注意解壓時一定要加上參數-i,不然沒法解壓)  

3) 恢複 /usr/bin/innobackupex  --defaults-file=/apiapp/db/backup-my.cnf --apply-log /apiapp/db/  (注意要指出backup-my.cnf的位置,這一步是把已經解壓的Database Backup檔案,和備份過程產生的redo做一下整合,保持資料的一致性,如果不做這一步資料庫啟動不起來)

        /usr/bin/innobackupex  --defaults-file=/etc/my3308.cnf --copy-back /apiapp/db/  (--copy-back 選項的命令從備份目錄拷貝資料,索引,日誌到my.cnf文   件裡規定的初始位置。注意my.cnf檔案中的basedir一定是空檔案夾。如果不是空檔案夾,執行不了)

4) 賦權 chown -R mysql:mysql /app/mydata3308

5) 重啟資料庫 /usr/bin/mysqld_safe --defaults-file=/etc/my3308.cnf

進入資料庫查看,一切OK~


MySQL資料移轉實戰

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.