mysql通过复制备份_mysql备份复制-2

mysql简介-1

本篇将介绍备份恢复、主从、主主

4、mysql备份恢复

mysql备份分为冷备和热备,使用冷备需要关闭服务器,在生产绝对不建议这么操作,热备又称为逻辑备份和裸文件备份,备份文件又可以分为全备和增量备份,逻辑备份对增量备份不是特别理想。

3d5b6051da84c6ef13f17a18a1944af6.png

789a5094d73f7afc8aa213222a62f5cf.png

从这里开始我们准备两台机器: 系统Cenos7.4 mysql: 5.7

4.1、mysqldump备份操作

1、全备

备份: [[email protected] tmp]# mysqldump -uroot -pxiong123 -A > 20180510.sql

恢复: [[email protected] tmp]# mysql -uroot -pxiong123 < 20180510.sql

2、备份单个库

备份: [[email protected] tmp]# mysqldump -uroot -p extmail > extmail.20180510.sql

备份文件头部: Host: localhost Database: extmail

先删除extmail这个库 mysql> drop database extmail;

恢复操作: [[email protected] tmp]# mysql -uroot -pxiong123 extmail < extmail.20180510.sql

删除数据库,直接恢复会报这个错误,我们需要先创建这个库,然后再进行恢复

ERROR 1049 (42000): Unknown database ‘extmail‘

完整单库恢复

mysql> create database extmail;

[[email protected] tmp]# mysql -uroot -pxiong123 extmail < extmail.20180510.sql

0cdff2caa90b6cdd1a55e37d97e11605.png

3、备份库中的单个表

备份:语法: -u用户 -p密码 库名 表名

[[email protected] tmp]# mysqldump -uroot -p extmail alias > ext_alias.sql

恢复:

1、删除 mysql> drop table extmail.alias;

2、恢复 [[email protected] tmp]# mysql -uroot -pxiong123 extmail < ext_alias.sql

3、查看 mysql> use extmail;

mysql> show tables;

4.2、xtrbackup

下载地址 - 点我下载 - 版本: percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm

4.2.1、功能

能实现的功能:

非阻塞备份innodb等事务引擎数据库、

备份myisam表会阻塞(需要锁)、

支持全备、增量备份、压缩备份、

快速增量备份(xtradb,原理类似于oracle:tracking 上次备份之后发生修改的page.)、

percona支持归档redo log的备份、

percona5.6+支持轻量级的backup-lock替代原来重量级的FTWRL,此时即使备份非事务引擎表也不会阻塞innodb的DML语句了、

支持加密备份、流备份(备份到远程机器)、并行本地备份、并行压缩、并行加密、并行应用备份期间产生的redo日志、并行copy-back

支持部分备份,只备份某个库,某个表

支持部分恢复

支持备份单个表分区

支持备份速度限制,指备份产生的IO速度的限制

支持point-in-time恢复

支持compat备份,也即使不备份索引数据,索引在prepare时--rebuild-indexs

支持备份buffer pool

支持单表export, import到其它库

支持 rsync 来缩短备份非事务引擎表的锁定时间

4.2.1、全备

yum安装 依赖包 libev、rsync

[[email protected] tmp]# yum -y install percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm

前期准备:

1、创建一个用户备份的用户

mysql> grant replication client, reload, lock tables, process on *.* to [email protected]%‘ identified by ‘xtrb‘;

mysql> flush privileges;

2、创建一个备份目录 /data/backup

[[email protected] mysql]# mkdir /data/backup

[[email protected] mysql]# chown mysql.mysql !$

3、创建一个数据库

mysql> create database test;

mysql> use test;

mysql> create table te1 (id int primary key auto_increment,name varchar(25));

mysql> insert into te1 (name) values (‘xiong1‘),(‘xddf2‘),(‘sa3‘);

0166a03f9313d3ddfe694c2f00aeb087.png

备份:

1、全备

[[email protected] mysql]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 /data/backup/

df4ebe95b4214d0a875e996dec298f99.png

备份完成之后是直接以当前时间来命名

[[email protected] mysql]# ls /data/backup/

2018-05-10_15-54-29

以下是备份的文件,需要将属主属组设置成mysql,方便恢复

1e5210f65c767fee7996d98d6608e5c1.png

文件说明 重要

755de40ce56451758c95445b3f98a0f3.png

a9acb80e22efa6006a7d316190fd4725.png

恢复操作

恢复时需要加上 --apply-log参数,它的作用是回滚未提交的事务及同步已经提交的事务至数据文件,使数据文件保持一致性;

[[email protected] 2018-05-10_15-54-29]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log /data/backup/2018-05-10_15-54-29/

出现如下信息说明成功

65e01232e87d58e758cf2427a3373e50.png

这时我们模拟数据挂掉了,直接干掉原先的mysql

1、先停掉它

[[email protected] 2018-05-10_15-54-29]# service mysqld stop

2、弄走原先的数据文件

[[email protected] 2018-05-10_15-54-29]# mv /data/mysql{,.bak}

3、恢复数据文件

[[email protected] 2018-05-10_15-54-29]# pwd

/data/backup/2018-05-10_15-54-29

[[email protected] 2018-05-10_15-54-29]# mkdir /data/mysql

[[email protected] 2018-05-10_15-54-29]# mv * /data/mysql

[[email protected] 2018-05-10_15-54-29]# chown mysql.mysql /data/mysql -R

4、启动服务

[[email protected] 2018-05-10_15-54-29]# service mysqld start

5、查看数据库

mysql> show databases;

Database: test 没问题

eb72310f5cf4124140a3e94916c5aa1a.png

4.2.2增量备份

1、先进行一次全备

[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 /data/backup/

2、插入新的数据

mysql> insert into test.te1 (name) values (‘5sf‘),(‘adf‘),(‘555sf‘),(‘3adf‘),(‘5555sf‘),(‘3adadf‘),(‘55ad55sf‘),(‘3adadaf‘);

8cd55ff77189e56013ed0cecbbd25b20.png

3、增量备份

[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --no-timestamp --incremental /data/backup/2018-05-10_16-23-27-incre-1 --incremental-basedir /data/backup/2018-05-10_16-23-27/

c99d456e1c58ab992369e212abb7f180.png

cb74b59253941dc508b2efa0f3b1a100.png

4、增备的恢复

4.1、先进行全备恢复

4.2、再进行增备恢复 都需要加上 --redo-only

--redo-only意味着只前滚xtrabackup日志中已经提交的事务,并不回滚那些没有提交的事务信息

4.3、最后一个过程就是对整体的全备进行恢复,这时就可以去掉--redo-only了,意味着需要回滚那些还没有提交的事务

恢复步骤:

1、全备的恢复

[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log --redo-only /data/backup/2018-05-10_16-23-27

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

InnoDB: Starting shutdown...

InnoDB: Shutdown completed; log sequence number 2597453

InnoDB: Number of pools: 1

180510 16:41:43 completed OK!

2、增备的恢复

[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log --redo-only /data/backup/2018-05-10_16-23-27 --incremental-dir=/data/backup/2018-05-10_16-23-27-incre-1/

180510 16:42:43 [00] ...done

180510 16:42:43 [00] Copying /data/backup/2018-05-10_16-23-27-incre-1//xtrabackup_info to ./xtrabackup_info

180510 16:42:43 [00] ...done

180510 16:42:43 completed OK!

3、整体的全备恢复不加--redo-only

[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log /data/backup/2018-05-10_16-23-27

xtrabackup: using the following InnoDB configuration for recovery:

xtrabackup: innodb_data_home_dir = .

xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend

xtrabackup: innodb_log_group_home_dir = .

xtrabackup: innodb_log_files_in_group = 2 2个文件

xtrabackup: innodb_log_file_size = 50331648 可以看到日志文件大小

InnoDB: FTS optimize thread exiting.

InnoDB: Starting shutdown...

InnoDB: Shutdown completed; log sequence number 2608421

180510 16:43:51 completed OK!

4、测试恢复过程

[[email protected] data]# cd /data

[[email protected] data]# service mysqld stop

[[email protected] data]# mv mysql{,.bak}

[[email protected] data]# mkdir mysql

[[email protected] data]# mv backup/2018-05-10_16-23-27/* mysql/

[[email protected] data]# chown mysql.mysql mysql -R

[[email protected] data]# service mysqld start

b65e870ae73b0fc239fc7d9631d58668.png

原文:http://blog.51cto.com/xiong51/2114893

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值