设为首页 收藏本站
查看: 783|回复: 0

[经验分享] 使用XtraBackup备份MySQL-ixhao

[复制链接]

尚未签到

发表于 2018-10-7 13:22:18 | 显示全部楼层 |阅读模式
  一、使用每表单个表空间
  这样ibdata1文件不会过大。
  xtrabackup可以使用部分备份了,需要在一个表一个文件的状况下才能使用。
  1.在使用xtrabackup之前,我们需要查看我们当前mysql是否是使用每表单个表空间,如果不是则必须将其修改为每表单独表空间:
  1
mysql> show global variables like '%innodb_file_p%';  2
+-----------------------+-------+  3
| Variable_name | Value |  4
+-----------------------+-------+  5
| innodb_file_per_table | OFF |  6
+-----------------------+-------+  7
1 row in set (0.00 sec)  这里是关闭状态,由此我们要启动这个功能,将来一旦要用到xtrabackup或各种高级功能的话建议刚安装mysql的时候直接将默认配置去写进配置文件,中途再更改的话会非常麻烦。
  2.重新导出导入数据,修改为每表一个文件:
  1
[root@test2 ~]#mysqldump -uroot --lock-all-tables --all-databases --master-data=2 --events> ./1.sql  2
关闭数据库  3
[root@test2 ~]#/etc/init.d/mysqld stop  4
Shutting down MySQL.. SUCCESS!  5
编辑配置文件加入以下参数  6
[root@test2 ~]# vim/etc/my.cnf  7
innodb_file_per_table= 1  8
而后删除数据文件并重新初始化  9
[root@test2 data]#pwd  10
/mydata/data  11
删除所有数据文件  12
[root@test2 data]# rm -fr *  13
初始化mysql  14
[root@test mysql]#pwd  15
/usr/local/mysql  16
[root@test mysql]# scripts/mysql_install_db --user=mysql--datadir=/mydata/data/ --basedir=/usr/local/mysql/  17
[root@test mysql]#/etc/init.d/mysqld start  18
再次查看是否是每表单独表空间  19
mysql> showglobal variables like '%innodb_file_per%';  20
+-----------------------+-------+  21
|Variable_name | Value |  22
+-----------------------+-------+  23
|innodb_file_per_table | ON |  24
+-----------------------+-------+  25
1 row in set (0.00sec)  26
恢复数据  27
mysql> source~/1.sql  28
[root@test2 data]#ll wpdb/  29
total 220  30
-rw-r--r--. 1 mysqlmysql 61 Apr 6 11:05 db.opt  31
-rw-r--r--.1 mysql mysql 8646 Apr 6 11:05 students.frm  32
-rw-r--r--.1 mysql mysql 98304 Apr 6 11:05students.ibd  33
-rw-r--r--. 1 mysql mysql 8556 Apr 6 11:05 tb4.frm  34
-rw-r--r--. 1 mysql mysql 98304 Apr 6 11:05 tb4.ibd  35
如上所示每个表都有单独对应的表空间了  36
  3.指定datadir:
  1
vim /etc/my.cnf  2
添加一行:  3
datadir = /data/server/mysql/data  二、安装percona-xtrabackup
  1
解决依赖关系  2
[root@test ~]# yum-y install libaio perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL  安装percona-xtrabackup:
  1.rpm
  [root@test2 tools]#rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm
  使用wget下载rpm包,然后通过rpm包安装
  参考:http://www.cnblogs.com/cosiray/archive/2012/03/02/2376595.html
  参考:http://blog.163.com/ji_1006/blog/static/10612341201382355716623/
  2.yum
  1
自动  2
$ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm  3
然后会看到:  4
Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm  5
Preparing...                ########################################### [100%]  6
   1:percona-release        ########################################### [100%]  7
手动  8
[percona]  9
name = CentOS $releasever - Percona  10
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/  11
enabled = 1  12
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona  13
gpgcheck = 1  14
测试安装库  15
使用yum list | grep percona来确保安装  16
yum list | grep percona  三、使用percona-xtrabackup
  innobackupex是perl脚本对xtrabackup的封装,和功能扩展。
  1.配置权限
  1
grant RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'back'@'localhost'identified by 'back';  2.创建全备
  1
innobackupex --user=back --password=back --no-timestamp /tmp/mysqlback/  内部机制:在备份的时候innobackupex会调用xtrabackup来备份innodb表,并复制所有的表定义,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)
  --no-timestamp,指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹。
  --default-file,指定配置文件,用来配置innobackupex的选线。
  3.使用innobackupex预备全备(备份好了,先不要做这个,直接保存。只有需要直接用来还原时候做这个)
  1
innobackupex --apply-lop mysqlback/  --user-memory:指定预备阶段可使用的内存,内存多则速度快,默认为10MB
  1
innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR  4.全备还原
  1)停止服务:
  service mysqld stop
  2) 删除datadir目录数据
  rm -rf data/*
  3) 使用innobackupex --copy-back来还原备份,会根据my.cnf复制所有备份到datadir下:
  1
innobackupex --copy-back mysqlback/  注:datadir必须是为空的,innobackupex –copy-back不会覆盖已存在的文件,还要注意,还原时需要先关闭服务,如果服务是启动的,那么就不能还原到datadir。
  4) 修改数据的所有者和权限
  1
chown -R mysql:mysql data/  5) 启动服务
  service mysqld start
  5.创建增量备份
  在创建增量备份之前需要一个全备,不然增量备份是没有意义的.
  1
innobackupex /data/backups  创建第一个增量备份
  1
innobackupex --incremental /data/backups --incremental-basedir=BASEDIR  6.还原增量备份
  在全备上,使用—redo-only只做已提交事务,不回滚未提交事务
  1
innobackupex --apply-log --redo-only BASE-DIR  应用第一个增量备份
  1
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1  回滚未提交事务
  1
innobackupex --apply-log BASE-DIR还原增量备份,还原增量备份其实和还原全备一样
  1
innobackupex --copy-back BASE-DIR  6. 单表备份:
  备份单表:
  1
innobackupex --user=root --password=simlinux.com  --defaults-file=/etc/my.cnf --include='se.searchaccount' --slave-info --safe-slave-backup --stream=tar /data/backup > /data/backup/searchaccount.tar.gz  多个表:  --include='test.*|pms.*'
  复制到其他服务器后,解压:
  1
tar -ixf searchaccount.tar.gz -C /data/databak/  innobackupex预备:
  1
innobackupex --apply-log --export /data/databak  7.单表还原:
  定义表,先创建一个表,表结构需要和被还原的一样 (若是表已存在则不需要创建):
  1
CREATE TABLE `searchaccount`...  然后discard表空间 (discard完表空间后再复制文件过来,再import,这样就不需要重启)
  1
mysql > ALTER TABLE se.searchaccount DISCARD TABLESPACE;  文件复制到databdir相应的目录下(注意文件的所有者和文件权限),mysql需要.ibd和.cfg文件,mysql 5.6之后可以不使用cfg来进行import,XtraDB需要.ibd和.exp,mariadb 10.0可以直接通过ibd和frm文件import
  1
cp /data/databak/se/{searchaccount.ibd,searchaccount.cfg} /usr/local/mysql/data/se/  1
chown mysql.mysql /usr/local/mysql/data/se/  然后import表空间
  1
mysql > ALTER TABLE se.searchaccount IMPORT TABLESPACE;  8.使用xbstream流备份
  1
innobackupex --stream=xbstream /root/backup/ > /root/backup/backup.xbstream  9.使用tar备份
  1
innobackupex --stream=tar ./ > /root/backup/out.tar  10.使用tar流并备份到其他服务器
  1
ssh-keygen  2
ssh-copy-id -i mysql@127.0.0.1  1
innobackupex --stream=tar ./ | gzip | ssh user@destination "cat - > /data/backup.tar"  加密码
  1
innobackupex --stream=tar ./ | gzip | sshpass -p 'root123' ssh user@destination "cat - > /data/backup.tar"  11.压缩流
  1
innobackupex --stream=tar ./ | gzip - > backup.tar.gz  12.提取tar流,需要加i参数
  1
tar -xizf backup.tar.gz  参考:
  innobackupex --user=root --password=root --stream=tar ./ | gzip | sshpass -p 'root123' ssh root@10.6.32.28 "cat - > /usr/programs/xtraback/backup.tar.gz"
  innobackupex --defaults-file=/etc/my.cnf --user=root --password='123' --host=localhost --rsync --compress --compress-threads=5 --compress-chunk-size=64K --slave-info /root



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614376-1-1.html 上篇帖子: mysql数据库对象导入PowerDesigner和powerDesigner模板导入mysql数据库 下篇帖子: MySQL grant实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表