centos 7 mysql备份_Centos7实现MySQL数据库备份与恢复

简介

MySQL数据库的备份可以分为逻辑备份和物理备份,逻辑备份工具主要为:mysqldump而物理备份工具主要为:xtrabackup,两种备份方式各有优缺点

备份工具

mysqldump

xtrabackup

优点

支持热备份和增量备份,需要磁盘空间小

支持热备份和增量备份,业务影响小,停机时间短,

缺点

业务影响大,停机时间长

所需磁盘空间大

使用场景

1)当数据量比较大而且对业务影响要比较小,若有足够空间保存备份数据则选择使用xtrabackup

2)当数据量小,也没有大量磁盘空间存储备份数据,则选择使用mysqldump

3)当停机时间要求较短时应到使用xtrabackup进行备份

前期准备

准备两台Centos7虚拟机,配置IP地址和hostname,同步系统时间,关闭防火墙和seLinux,配置IP地址和hostname映射

hostname

ip

master

192.168.29.132

bak

192.168.29.138

安装MySQL数据库

注:本机安装的MySQL版本为8.0.17

#官网获取mysql的yum源

[[email protected] ~]# yum install mysql mysql-server -y

[[email protected] ~]# yum install mysql mysql-server -y

master结点创建数据库并添加数据

mysql> create database test_db;

mysql> use test_db;

mysql> create table test(id int primary key);

mysql> insert into test values(1);

mysql> insert into test values(2);

mysql> insert into test values(3);

mysql> insert into test values(4);

mysql> insert into test values(5);

mysql> insert into test values(6);

mysql> insert into test values(7);

MySQL自带工具

master备份数据

[[email protected] ~]# mysqldump -uroot -p test_db > /tmp/a.sql

#把sql文件传送到bak结点机器中

[[email protected] ~]# scp /tmp/a.sql [email protected]:/tmp/

bak结点恢复数据

mysql> create database test_db;

mysql> use test_db;

mysql> source /tmp/a.sql

#查看恢复情况

mysql> select * from test;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

+----+

7 rows in set (0.00 sec)

xtrabackup工具

安装

[[email protected] ~]# yum install epel -y

[[email protected] ~]# yum install xtrabackup -y

全量备份

master进行全量备份

[[email protected] ~]# xtrabackup --backup --user='root' --password='your_password' --target-dir=/backup/full

#传送到bak机器

[[email protected] ~]# scp -r /backup/full/ [email protected]:/tmp/

bak进行备份恢复

#需要先把datadir清除干净

[[email protected] ~]# rm -rf /var/lib/mysql/*

#备份恢复

[[email protected] ~]# xtrabackup --copy-back --target-dir=/tmp/full/ --datadir=/var/lib/mysql/

#修改datadir权限

[[email protected] ~]# chown -R mysql.mysql /var/lib/mysql

#重启mysql服务

[[email protected] ~]# systemctl restart mysqld

验证备份恢复结果

mysql> select * from test_db.test;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

+----+

7 rows in set (0.03 sec)

增量备份

适当添加数据

mysql> insert into test values(8);

mysql> insert into test values(9);

进行增量备份

[[email protected] ~]# xtrabackup --backup --user='root' --password='your_password' --target-dir=/backup/inc1/ --incremental-basedir=/backup/full/

对比全量备份和增量备份的数据大小

[[email protected] ~]# du -h /backup/full

231M full

[[email protected] ~]# du -h /backup/inc1/

14M /backup/inc1/

恢复备份

#传送文件夹

[[email protected] ~]# scp -r /backup/inc1/ [email protected]:/tmp/

#清理datadir

[[email protected] ~]# rm -rf /var/lib/mysql/*

#准备恢复全量备份

[[email protected] ~]# xtrabackup --prepare --apply-log-only --target-dir=/tmp/full/

#准备增量备份

[[email protected] ~]# xtrabackup --prepare --target-dir=/tmp/full/ --incremental-dir=/tmp/inc1/

#恢复备份

[[email protected] ~]# xtrabackup --copy-back --target-dir=/tmp/full/ --datadir=/var/lib/mysql/

#修改权限

[[email protected] ~]# chown -R mysql.mysql /var/lib/mysql

#重启服务

[[email protected] ~]# systemctl restart mysqld

测试验证

mysql> select * from test_db.test;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

| 8 |

| 9 |

+----+

9 rows in set (0.00 sec)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值