linux mysql 数据库 备份

mysql数据备份

mysqldump:可以用于mysql/mariadb数据库进行全量备份,冷备份   基础服务  .sql

xtrabackup:可以用于mysql/mariadb数据库进行全量备份  增量备份   只能针对于innodb

如果想要针对于myisam  可以使用innobackupex

innobackupex   需要下载

mysqldump  

优点

  1. mysql自带的备份工具
  2. 可以对指定的表进行备份  备份后  直接可以使用source命令恢复数据  操作比较简单

缺点:

由于mysqldump采用的是单线程的操作,所以导致备份和恢复数据的时间比较漫长,如果

想要以效率为主,不建议采用这种办法。

innobackupex

优点:

  1. 可以进行热备份(数据库可以正常读写)去对数据进行备份
  2. 备份效率高  速度比较快

缺点:

备份和恢复的命令比较复杂

安装备份工具   percona(多主架构)---mysql/mariadb(主从)(二开)

安装网络yum

 

wget  下载   -O   指定下载路径

[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@localhost yum.repos.d]# yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

yum如果联网  也可以下载并安装软件包   percona的yum源需要安装一下

网络yum源可以自己编写  也可以直接下载

[root@localhost yum.repos.d]# ls

aa.repo           data       percona-original-release.repo

CentOS-Base.repo  epel.repo  percona-prel-release.repo

[root@localhost ~]# yum -y install percona-xtrabackup-24.x86_64

如果命令可以tab出来   这样就安装成功

[root@localhost ~]# innobackupex

因为使用备份工具恢复数据   数据目录下要为空

所以需要把数据目录和日志目录分开

[root@localhost ~]# vim /etc/my.cnf

datadir=/var/lib/mysql/data

[root@localhost ~]# vim /etc/my.cnf

datadir=/var/lib/mysql/data

[root@localhost ~]# mkdir /var/lib/mysql/data

[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql

[root@localhost ~]# systemctl restart mysqld

[root@localhost ~]# cd /var/lib/mysql/data/

如果数据目录更改  秘钥需要重新查看  重新修改

[root@localhost data]# cat /var/log/mysqld.log | grep password最后一行

2021-09-13T01:11:41.162121Z 1 [Note] A temporary password is generated for root@localhost: (-M6wuJm!R%E

[root@localhost data]# mysql -uroot -p'(-M6wuJm!R%E'

mysql> set password=password('1234.Com');

全部数据的全量备份

[root@localhost data]# mkdir -p /data/backup

[root@localhost data]# innobackupex --defaults-file=/etc/my.cnf --user=root --password='1234.Com' /data/backup

210913 09:35:56 completed OK!

[root@localhost data]# ls /data/backup/

2021-09-13_09-35-53

恢复数据

[root@localhost data]# systemctl stop mysqld

[root@localhost data]# mv /var/lib/mysql/data/ /var/lib/mysql/data1

[root@localhost data]# mkdir /var/lib/mysql/data

[root@localhost data]# ls /var/lib/mysql/data

#初始化

[root@localhost data]# innobackupex --use-memory=512M --apply-log  /data/backup/2021-09-13_09-35-53/

210913 09:47:29 completed OK!

#恢复数据

[root@localhost data]# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/2021-09-13_09-35-53/

210913 09:48:40 completed OK!

[root@localhost data]# ls /var/lib/mysql/data

ib_buffer_pool  mysql

ibdata1         performance_schema

ib_logfile0     sys

ib_logfile1     xtrabackup_info

ibtmp1          xtrabackup_master_key_id

增量备份

[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql

[root@localhost ~]# systemctl restart mysqld

[root@localhost ~]# mysql -uroot -p'1234.Com'

mysql> create database aa;

Query OK, 1 row affected (0.00 sec)

[root@localhost ~]# ls /data/backup/

2021-09-13_09-35-53

[root@localhost ~]# innobackupex --user=root --password='1234.Com' --incremental /data/backup --incremental-basedir /data/backup/2021-09-13_09-35-53

[root@localhost ~]# du -sh /data/backup/*

142M /data/backup/2021-09-13_09-35-53

2.9M /data/backup/2021-09-13_10-03-37

恢复增量备份:

[root@localhost ~]# systemctl stop mysqld

[root@localhost ~]# mv /var/lib/mysql/data /var/lib/mysql/data2

[root@localhost ~]# mkdir /var/lib/mysql/data

初始化全量备份

[root@localhost ~]# innobackupex --apply-log --redo-only /data/backup/2021-09-13_09-35-53/

初始化增量备份和全量备份

[root@localhost ~]# innobackupex --apply-log --redo-only /data/backup/2021-09-13_09-35-53/ --incremental-dir=/data/backup/2021-09-13_10-03-37

恢复数据

[root@localhost ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/2021-09-13_09-35-53/

[root@localhost ~]# cd /var/lib/mysql/data

[root@localhost data]# chown -R mysql:mysql /var/lib/mysql

[root@localhost data]# systemctl start mysqld

对于aa这个库进行全量备份

[root@localhost ~]# mkdir /backup

[root@localhost ~]# innobackupex --tables=aa --user=root --password=1234.Com /backup/   #对于单独的库

如果想要针对于单独的表例子:

 innobackupex --tables=aa.aa --user=root --password=1234.Com /backup/   #对于单独的库

210524 15:14:54 completed OK!

[root@localhost ~]# ls /backup/

2021-05-24_15-14-52

恢复数据

[root@localhost ~]# mv /var/lib/mysql/data /var/lib/mysql/data5

[root@localhost ~]# mkdir /var/lib/mysql/data

[root@localhost ~]# systemctl stop mysqld

[root@localhost ~]# innobackupex   --apply-log    /backup/2021-05-24_15-14-52/

[root@localhost ~]# innobackupex   --copy-back   /backup/2021-05-24_15-14-52/

[root@localhost ~]# cd /var/lib/mysql/data

[root@localhost data]# ls

[root@localhost data]# cd /var/lib/mysql/data5

[root@localhost data5]# mv mysql/ /var/lib/mysql/data

[root@localhost data5]# mv performance_schema/ /var/lib/mysql/data

[root@localhost data5]# mv sys/ /var/lib/mysql/data

[root@localhost data5]# chown -R mysql:mysql /var/lib/mysql

[root@localhost data5]# systemctl start mysqld

对aa库进行增量备份

[root@localhost ~]# innobackupex --tables=aa --user=root --password=1234.Com --incremental-basedir=/backup/2021-05-24_15-14-52 --incremental /backup

210524 15:46:27 completed OK!

还原数据

初始化

初始化全量

初始化增量

[root@localhost ~]# ls /backup/

2021-05-24_15-14-52  2021-05-24_15-46-25

[root@localhost ~]# systemctl stop mysqld

[root@localhost ~]# mv /var/lib/mysql/data /var/lib/mysql/data6

[root@localhost ~]# mkdir /var/lib/mysql/data

[root@localhost ~]# innobackupex --apply-log --redo-only /backup/2021-05-24_15-14-52/

210524 15:50:06 completed OK!

[root@localhost ~]# innobackupex --apply-log --redo-only /backup/2021-05-24_15-14-52/ --incremental-dir=/backup/2021-05-24_15-46-25

210524 15:51:48 completed OK!

[root@localhost ~]# innobackupex --copy-back /backup/2021-05-24_15-14-52/

[root@localhost data]# cd /var/lib/mysql/data6

[root@localhost data6]# mv mysql/ /var/lib/mysql/data

[root@localhost data6]# mv performance_schema/ /var/lib/mysql/data

[root@localhost data6]# mv sys/ /var/lib/mysql/data

[root@localhost data6]# chown -R mysql:mysql /var/lib/mysql

[root@localhost data6]# systemctl start mysqld

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库从删库到跑路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值