mysql备份和恢复
注意:备份不成功的原因可能是版本不一样,需执行命令#cp /usr/local/mysql/bin/mysqldump|mysqlhotcop|mysqlimport /usr/local/bin/
(1)mysqldump备份工具
备份数据库下的表
# mysqldump -u root -paixocm --opt test c01 c02 c03 > /employees.sql \\备份
# mysql -u root -paixocm --database test < employees.sql \\恢复
备份指定数据库
# mysqldump -u root -paixocm --opt --database test > /employees.sql
# mysql -u root -paixocm < employees.sql
备份所有数据库
# mysqldump -u root -paixocm --opt --all-databases > /employees.sql
锁定和解锁所有表
mysql> FLUSH TABLES WITH READ LOCK;
mysql> unlock tables;
锁定指定表
mysql> lock table cware read;
mysql> unlock tables; \\解锁
查看锁定表
mysql> show open tables where in_use > 0;
(2)mysqlhotcopy
# mysqlhotcopy -u root -h localhost -p aixocm sxjy test /test/mydata
(3)mysqlimport(从文件导入数据到数据库)
# mysqlimport -u root -paixocm --fields-terminated-by=' ' --lines-terminated-by='\n' --local test(数据库名) /test/weblog.txt(文件名应和表名一致)
(4)xtrabackup
# tar xf percona-xtrabackup-2.2.12-Linux-x86_64.tar.gz
# mv percona-xtrabackup-2.2.12-Linux-x86_64 /usr/local/xtrabackup
# cp /usr/local/xtrabackup/bin/* /usr/bin/ (不然会报错:innobackupex命令没有找到)
# yum install perl-Time*
(5)innobackupex
普通备份(全量备份)
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock /test/mydata/ (以当前的时间戳命名)
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock --no-timeatamp /test/mydata/1 (以1命名)
恢复备份 (要把/database/mydata/目录下的内容全部删除,再stop服务,备份完之后要修改/database/mydata下的权限)
# innobackupex --apply-log /test/mydata/2015-08-13_23-24-40 \\备份之前先应用日志
# innobackupex --copy-back /test/mydata/2015-08-13_23-24-40 \\备份日志
压缩备份
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock --stream=tar /test/mydata/ 2> /tmp/backup/mysql1.log | gzip > /test/mydata/mysql.tar.gz
备份恢复
# tar -ixf mysql.tar.gz -C /database/mydata/
增量备份
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock --incremental /test/mydata/ --incremental-basedir=/test/mydata/2015-08-13_23-24-40
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock --incremental --incremental-basedir=/test/mydata/2015-08-13_23-24-40/ /test/mydata/ (基于全量备份的增量备份)
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock --incremental /test/mydata/ --incremental-basedir=/test/mydata/2015-08-13_23-24-40
# innobackupex --user=root --password=aixocm --socket=/tmp/mysql.sock --incremental /test/mydata --incremental-basedir=/test/mydata/2015-08-13_23-29-04/ /test/mydata/ (基于第一个增量备份的第二个增量备份)
备份恢复
在所有备份目录下重做已提交日志
# innobackupex --apply-log --redo-only /test/mydata/2015-08-14_14-36-31 \\重做全量备份日志
# innobackupex --apply-log --redo-only /test/mydata/2015-08-14_14-36-31 --incremental-dir=/test/mydata/2015-08-14_14-39-05 \\重做增量备份日志
# innobackupex --apply-log /test/mydata/2015-08-14_14-36-31 --incremental-dir=/test/mydata/2015-08-14_14-41-17 \\应用最后一个增量备份日志
# innobackupex --apply-log /test/mydata/2015-08-14_14-36-31 \\重新应用全量备份日志