mysql数据备份
mysqldump:可以用于mysql/mariadb数据库进行全量备份,冷备份 基础服务 .sql
xtrabackup:可以用于mysql/mariadb数据库进行全量备份 增量备份 只能针对于innodb
如果想要针对于myisam 可以使用innobackupex
innobackupex 需要下载
mysqldump
优点
- mysql自带的备份工具
- 可以对指定的表进行备份 备份后 直接可以使用source命令恢复数据 操作比较简单
缺点:
由于mysqldump采用的是单线程的操作,所以导致备份和恢复数据的时间比较漫长,如果
想要以效率为主,不建议采用这种办法。
innobackupex
优点:
- 可以进行热备份(数据库可以正常读写)去对数据进行备份
- 备份效率高 速度比较快
缺点:
备份和恢复的命令比较复杂
安装备份工具 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