本文写得很简单,仅仅包括全库备份、全库准备、全库恢复3个步骤。如果要详细的备份,如打包、远程备份等,建议之后阅读这篇文章http://blog.csdn.net/yongsheng0550/article/details/6682162,然后再阅读官方手册。
介绍一下环境:CentOS 6.3,Percona XtraBackup 2.2.6,MySQL 5.5。
首先,请先装好MySQL和XtraBackup,不要凭脑袋瓜子空想。
从技术角度考虑,root用户很合适,但是从安全角度考虑,最好还是有个专门的用户,只给最低权限。、
XtraBackup要的权限不多,有RELOAD, LOCK TABLES, REPLICATION CLIENT3个就行。LOCK TABLES是备份MyISAM表时用的。
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
FLUSH PRIVILEGES;
innobackupex --user=bkpuser --password=s3cret /usr/programs/backup/
cp /etc/my.cnf /usr/programs/backup/
注意:后面的cp是备份my.cnf。这个文件对XtraBackup和MySQL都非常重要,但是XtraBackup并不备份,所以需要手动备份一下。此外,恢复时也会需要my.cnf文件中的datadir参数,所以这里需要提前备份该文件,并检查是否有datadir参数。如果没有该文件,可以从/usr/share/mysql/下面的各种my-*.cnf选一个适合自己硬件的,并增加datadir参数。(默认可以把datadir指向/var/lib/mysql目录,即datadir=/var/lib/mysql)
service mysql stop
5. 备份准备工作
innobackupex --apply-log /usr/programs/backup/2014-12-03_09-46-46/
rm /var/lib/mysql/* -rf
innobackupex --copy-back /usr/programs/backup/2014-12-03_09-46-46/
这里可能会出现找不到datadir的错误(如下),此时需要把备份的my.cnf恢复到初始位置,并且my.cnf中要包含datadir这个变量值。默认my.cnf在/etc/目录下,datadir=/var/lib/mysql。
innobackupex: got a fatal error with the following stacktrace: at /usr/bin/innobackupex line 4478
main::get_option('datadir') called at /usr/bin/innobackupex line 2433
main::copy_back(0) called at /usr/bin/innobackupex line 1561
innobackupex: Error: no 'datadir' option in group 'mysqld' in server configuration file '' at /usr/bin/innobackupex line 4478.
chown -R mysql:mysql /var/lib/mysql/
service mysql start