萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> innobackupex來備份和恢復MySQL數據庫的例子

innobackupex來備份和恢復MySQL數據庫的例子

Xtrabackup是由percona開發的一個開源軟件,此軟件可以說是innodb熱備工具ibbackup的一個開源替代品。這個軟件是由2個部分組成的:xtrabackup和innobackupex。下面來看一篇innobackupex來備份和恢復MySQL的教程

背景介紹:

在一些技術群裡面,看到仍然有一些運維在用mysqldump這樣的命令來備份MySQL,於是感覺有必要介紹一下innobackupex。
現在,絕大多數使用MySQL的場景中,都用到了Master-Slave這樣的架構。相對於mysqldump而言,使用innobackupex備份有以下好處:
1. 以數據文件為備份對象,文件級別備份,速度快,尤其適合需要對所有數據進行備份的場景;
2. 熱備份,不會對現有的數據庫訪問造成任何影響;
3. 記錄binlog以及replication相關信息,在創建和恢復Slave時非常有用;

以下是風哥的幾點補充:
1.用innobackupex可以做到不停業務在線備份,前提是對innodb引擎,對myisam也會鎖表;
2.在備份過程會導致IO很高,建議在一台slave上做備份(我一般用一台slave只做備份用),不建議在主上備份; 3.innobackupex可以用增量與全量備份方式配合;

具體用例:

環境介紹

架構:Master-Slave
MySQL端口:3308
配置文件:/etc/my_3308.cnf
備份目錄:/mysql-backup/3308
MySQL數據目錄:/opt/mysql_3308/data
服務腳本:/etc/init.d/mysql_3308
在Master上備份

# innobackupex --defaults-file=/etc/my_3308.cnf /mysql-backup/3308 --user=backup-user --password=backup-user --no-lock
在Slave上備份

# innobackupex --defaults-file=/etc/my_3308.cnf /mysql-backup/3308 --user=backup-user --password=backup-user --no-lock --slave-info  --safe-slave-backup
在Master上恢復

# /etc/init.d/mysql_3308 stop

# mv /opt/mysql_3308/data /opt/mysql_3308/data_broken
# mkdir /opt/mysql_3308/data

# innobackupex --apply-log /mysql-backup/2015-01-12_08-00-10
# innobackupex --copy-back /mysql-backup/2015-01-12_08-00-10 --defaults-file=/etc/my_3308.cnf

# chown -R mysql:mysql /opt/mysql_3308/data

# /etc/init.d/mysql_3308 start
在Slave上恢復

# /etc/init.d/mysql_3308 stop

# mv /opt/mysql_3308/data /opt/mysql_3308/data_broken
# mkdir /opt/mysql_3308/data

# innobackupex --apply-log /mysql-backup/2015-01-12_08-00-10
# innobackupex --copy-back /mysql-backup/2015-01-12_08-00-10 --defaults-file=/etc/my_3308.cnf

# chown -R mysql:mysql /opt/mysql_3308/data

# /etc/init.d/mysql_3308 start

# cd /opt/mysql_3308/data
# cat xtrabackup_binlog_pos_innodb
./bin-log-mysqld.000222      222333

# mysql_3308 -uroot -p

mysql> change master to
master_host='master_host',
master_port=3308,
master_user='master_user',
master_password='master_password',
master_log_file='bin-log-mysqld.000222',
master_log_pos=222333;

mysql> start slave;

copyright © 萬盛學電腦網 all rights reserved