單臺數據庫服務器,跑多個數據庫實例,對slave庫進行遷移

單臺數據庫服務器,跑多個數據庫實例,對slave庫進行遷移


如:
master(A):192.168.137.16:3306
slave(A):192.168.137.18:3306
slave(B):192.168.137.58:3306


MySQL-Version:MySQL-5.5.24
Linux-OS:2.6.32-504.3.3.el6.x86_64
遷移工具:innobackupex


之所以選擇xtrabackup-2.0.1版,原因,單機多數據庫實例,無法只指定defaults-file=...,需要藉助defaults=group=[multi_mysqldxx name]
具體,可以查看,--help


注意:slave(A)和Slave(B)需要安裝如下環境:


1.下載安裝percona-xtrabackup-2.0.1.tar.gz + mysql-5.5.17.tar.gz
tar -zxf percona-xtrabackup-2.0.1.tar.gz 
mv mysql-5.5.17.tar.gz percona-xtrabackup-2.0.1
2.安裝依賴包
vi /percona-xtrabackup-2.0.1/BUILD.txt 第16-19行
$yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel
3.安裝percona-xtrabackup-2.0.1
cd percona-xtrabackup-2.0.1
$ ./utils/build.sh #執行,顯示如下內容,根據自己數據庫引擎,選擇,我的DB-5.5.24,所以,選擇,innodb55
Build an xtrabackup binary against the specified InnoDB flavor.


Usage: build.sh CODEBASE
where CODEBASE can be one of the following values or aliases:
  innodb51_builtin | 5.1 build against built-in InnoDB in MySQL 5.1
  innodb51         | plugin build agsinst InnoDB plugin in MySQL 5.1
  innodb55         | 5.5 build against InnoDB in MySQL 5.5
  xtradb51         | xtradb   build against Percona Server with XtraDB 5.1
  xtradb55         | xtradb55 build against Percona Server with XtraDB 5.5
$ ./utils/build.sh innodb55 #耐心等待編譯完成


4.在percona-xtrabackup-2.0.1/src生成,xtrabackup_innodb55,xbstream,配置path環境
$ ln -s /percona-xtrabackup-2.0.1/src/xtrabackup_innodb55 /usr/bin/xtrabackup_55
$ ln -s /percona-xtrabackup-2.0.1/src/xbstream /usr/bin/xbstream #可選
$ ln -s /percona-xtrabackup-2.0.1/innobackupex /usr/bin/innobackupex
$ ln -s /data/mysql_root/mysql/bin/mysql /usr/bin/mysql #根據自己DB安裝環境

5.完成安裝和配置
/usr/bin/innobackupex --help|more 


開始遷移:
slave(A):192.168.137.18:3306
slave(A)數據庫:
1.登入mysql,執行stop slave io_thread
2.Read_Master_Log_Pos: 250004 ==(恆等於) Exec_Master_Log_Pos: 250004 ?
3.show status like '%Slave_open_temp_tables%'; #如下狀態值需要爲:0;
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Slave_open_temp_tables | 0     |
+------------------------+-------+
4.執行stop slave sql_thread;
5.exit mysql
對slave(A)庫備份:
/usr/bin/innobackupex --host=192.168.137.18 --port=3306 --user=root --password='123456' --slave-info  /data/db3306 --defaults-file=/data/mysql_root/mysql/my.cnf --defaults-group=mysqld11 --no-timestamp
執行成功後.打包 /data/db3306
tar -zcf db3306.tar.gz db3306 或scp -r /data/db3306/* [email protected]:/data/db3306


slave(B):192.168.137.58:3306
把192.168.137.18 打包備份文件上傳到192.168.137.58服務器/data/db3306目錄下(自定義)
開始恢復:
1.service mysqld stop
2.rm -rf datadir
3./usr/bin/innobackupex --host=192.168.137.58 --port=3306 --user=root --password='123456' --apply-log  /data/db3306 --defaults-file=/data/mysql_root/mysql/my.cnf --defaults-group=mysqld11
4.cd /data/db3306,把ls -l ib* 複製到 datadir(192.168.137.58)
5.我選擇os級別cp或其他方法,把程序DB 複製到 datadir(192.168.137.58)
6.cd datadir
7.chown -R mysql:mysql * #注意所屬用戶和組
8.開啓mysqld
9.cd /data/db3306;cat xtrabackup_slave_info 
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000421', MASTER_LOG_POS=368204191
10.登入(192.168.137.58)執行,
CHANGE MASTER TO 
MASTER_HOST='192.168.137.16,
MASTER_PORT=3306,
MASTER_USER='rpl_test',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=368204191;
start slave;
show slave status \G;


綜上所述:完成slave庫遷移過程.[遷移時間長短和數據量大小有關聯]


--EOF




































可能錯誤,
innobackupex: Starting mysql with options:  --defaults-file='/data/mysql_root/mysql/my.cnf' --password=xxxxxxxx --user='root' --host='127.0.0.1' --port='3306' --unbuffered --
innobackupex: Connected to database with mysql child process (pid=5367)
innobackupex: Error: mysql child process has died: sh: mysql: command not found
根據自己環境,不在/usr/bin/在mysql可能在執行/usr/bin/innobackupex 備份時回提示上面錯誤:
ln -s /data/mysql_root/mysql/bin/mysql /usr/bin/mysql





























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章