Xtrabackup是由 Percona 開發(fā)的一個(gè)開源軟件翘狱,可實(shí)現(xiàn)對(duì) InnoDB 的數(shù)據(jù)備份,支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫)。備份時(shí)遇革,Xtrabackup 會(huì)將 Master 的 binlog 信息記錄在 xtrabackup_slave_info 文件中,通過(guò)此信息可以方便的搭建主從復(fù)制。
XtraBackup 有兩個(gè)工具:xtrabackup 和 innobackupex萝快。xtrabackup 本身只能備份 InnoDB 和 XtraDB 锻霎,不能備份 MyISAM;innobackupex 本身是 Hot Backup 腳本修改而來(lái)揪漩,同時(shí)可以備份 MyISAM 和 InnoDB旋恼,但是備份 MyISAM 需要加讀鎖。
修改MySQL配置文件
Master
# vim /etc/my.cnf //修改主服務(wù)器MySQL的配置文件
server-id=1 //master id需要設(shè)定為1
log-bin=mysql-bin // mysql bin日志需要打開
Slave
# vim /etc/my.cnf //修改從服務(wù)器MySQL的配置文件
server-id=2 //slave id不能設(shè)為1
安裝XtraBackup
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm //添加源
yum list | grep percona //檢查源
yum install percona-xtrabackup
創(chuàng)建備份
innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
如果執(zhí)行正確奄容,其輸出信息通常類似:
innobackupex: Backup created in directory '/path/to/BACKUP-DIR/2016-03-23_00-00-09'
innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 1946
111225 00:00:53 innobackupex: completed OK!
備份時(shí)冰更,innobackupex 會(huì)調(diào)用 xtrabackup 備份 InnoDB 表的數(shù)據(jù),并且會(huì)復(fù)制 MyISAM, MERGE昂勒,CSV 和 ARCHIVE 表的表定義文件(.frm 文件)蜀细、數(shù)據(jù)文件。同時(shí)還會(huì)備份觸發(fā)器和數(shù)據(jù)庫(kù)配置信息相關(guān)的文件戈盈。這些文件將會(huì)保存在指定備份目錄中一個(gè)以時(shí)間戳命名的目錄下奠衔。
準(zhǔn)備備份
innobackupex --apply-log /path/to/BACKUP-DIR
如果執(zhí)行正確,其最后輸出的幾行信息通常如下:
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
120407 9:01:36 InnoDB: Starting shutdown...
120407 9:01:40 InnoDB: Shutdown completed; log sequence number 92036620
120407 09:01:40 innobackupex: completed OK!
恢復(fù)備份
將數(shù)據(jù)恢復(fù)到從服務(wù)器上:
scp -r /path/to/BACKUP-DIR root@slave_host:/data/
關(guān)閉從服務(wù)器的mysql服務(wù):
sudo /etc/init.d/mysql stop
在從服務(wù)器上恢復(fù)備份數(shù)據(jù):
innobackupex --copy-back /path/to/BACKUP-DIR
如果從數(shù)據(jù)庫(kù)存在多個(gè)mysql塘娶,則需要使用以下命令:
innobackupex --defaults-file=/etc/my.cnf --defaults-group=mysqld1 --socket=/var/lib/mysql/mysqld1.sock /path/to/BACKUP-DIR
信息設(shè)置
修改備份數(shù)據(jù)的用戶和組:
chown -R mysql:mysql /path/to/BACKUP-DIR
在主服務(wù)上添加同步用的賬號(hào):
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.0.1' IDENTIFIED BY 'slave';
在從服務(wù)器上配置同步賬號(hào)信息:
CHANGE MASTER TO
MASTER_HOST='<master_host>',
MASTER_USER='<slave_username>',
MASTER_PASSWORD='<slave_password>',
MASTER_PORT='<master_port>'
MASTER_LOG_FILE='<see xtrabackup_binlog_info>',
MASTER_LOG_POS=<see xtrabackup_binlog_info>;
開啟主從同步:
start slave;
查看狀態(tài):
show slave status\G