mysql备份工具Xtrabackup(五)
作者:互联网
mysql和mariadb 关系 自行百度吧
mysql和mariadb 关系 自行百度吧
mysql和mariadb 关系 自行百度吧
Xtrabackup介绍
Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。
Xtrabackup优点
1)备份速度快,物理备份可靠 2)备份过程不会打断正在执行的事务(无需锁表) 3)能够基于压缩等功能节约磁盘空间和流量 4)自动备份校验 5)还原速度快 6)可以流传将备份传输到另外一台机器上 7)在不增加服务器负载的情况备份数据 8)物理备份工具,在同级数据量基础上,都要比逻辑备份性能要好的多。几十G到不超过TB级别的条件下。但在同数据量级别,物理备份恢复数据上有一定优势。 |
安装
下载
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
安装
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
下载安装的依赖
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/libev-4.15-7.el7.x86_64.rpm
rpm -ivh libev-4.15-7.el7.x86_64.rpm
yum install perl-DBI yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
yum -y install perl-Digest-MD5
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
rpm -ql percona-xtrabackup-24
发现 /usr/bin/innobackupex #xtrabackup 的软连接
常用参数
1.命令格式 innobackupex <选项>
--databases=”库名” //1个库 常用选项 含义 这里别搞混淆了 要懂 不然后面就迷糊了 |
|
配置文件
不一定适合你的mysql 毕竟我yum安装的mariadb服务
不一定适合你的mysql 毕竟我yum安装的mariadb服务
不一定适合你的mysql 毕竟我yum安装的mariadb服务
相比二进制日志备份 这里做了修改 不把二进制放进data目录 直接放在mysql安装目录得了
[mysqld]
basedir=/var/lib/mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log_bin=/var/lib/mysql/mysql-bin
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
xtrabackup实践操作
全量备份
1 全量备份(所有数据库)
innobackupex --defauults-file=/etc/my.cnf --user=root --password=123456 --backup /backup/
[root@tff_128 backup]#
[root@tff_128 backup]#
[root@tff_128 backup]#
[root@tff_128 backup]# pwd
/backup
[root@tff_128 backup]# ll
总用量 0
drwxr-x---. 6 root root 215 5月 9 20:28 2022-05-09_20-28-26
[root@tff_128 backup]#
2 删除某个数据库的表个别数据
MariaDB [tff]> select * from bptest;
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
+------+------+
2 rows in set (0.00 sec)
MariaDB [tff]> delete from bptest where id =1;
Query OK, 1 row affected (0.00 sec)
MariaDB [tff]> select * from bptest;
+------+------+
| id | name |
+------+------+
| 2 | d |
+------+------+
1 row in set (0.00 sec)
MariaDB [tff]>
3 执行回滚操作
innobackupex --apply-log /backup/2022-05-09_20-28-26/
4 停止服务
systemctl stop mariadb.service
5 移动数据
(保持数据库目录为空就行)
个人建议数据先别删除 万一报错 还可以解决的
[root@tff_128 mysql]#
[root@tff_128 mysql]# pwd
/var/lib/mysql
[root@tff_128 mysql]# ll
总用量 98364
-rw-rw----. 1 mysql mysql 16384 5月 9 18:38 aria_log.00000001
-rw-rw----. 1 mysql mysql 52 5月 9 18:38 aria_log_control
-rw-r-----. 1 mysql mysql 77594624 5月 9 18:44 ibdata1
-rw-r-----. 1 mysql mysql 5242880 5月 9 18:44 ib_logfile0
-rw-r-----. 1 mysql mysql 5242880 5月 9 07:37 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 5月 9 07:37 ibtmp1
drwxr-x---. 2 mysql mysql 4096 5月 9 07:35 mysql
-rw-rw----. 1 mysql mysql 636 5月 9 18:38 mysql-bin.000001
-rw-rw----. 1 mysql mysql 993 5月 9 18:44 mysql-bin.000002
-rw-rw----. 1 mysql mysql 64 5月 9 18:38 mysql-bin.index
srwxrwxrwx. 1 mysql mysql 0 5月 9 18:38 mysql.sock
drwxr-x---. 2 mysql mysql 4096 5月 9 07:35 performance_schema
drwxr-x---. 2 mysql mysql 38 5月 9 07:37 tff
-rw-r-----. 1 mysql mysql 37 5月 9 07:37 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 mysql mysql 524 5月 9 07:37 xtrabackup_info
drwxr-x---. 2 mysql mysql 8192 5月 9 07:35 zabbix
[root@tff_128 mysql]# mkdir /tmp/mmmysql/
[root@tff_128 mysql]# mv * /tmp/mmmysql/
[root@tff_128 mysql]# ll
总用量 0
[root@tff_128 mysql]#
6 执行全量备份恢复
[root@tff_128 backup]# ll
总用量 4
drwxr-x---. 6 root root 4096 5月 9 20:29 2022-05-09_20-28-26
[root@tff_128 backup]#
innobackupex --defauults-file=/etc/my.cnf --copy-back /backup/2022-05-09_20-28-26/
7 防止服务启动失败
[root@tff_128 mysql]# ll
总用量 98332
-rw-r-----. 1 root root 77594624 5月 9 18:54 ibdata1
-rw-r-----. 1 root root 5242880 5月 9 18:54 ib_logfile0
-rw-r-----. 1 root root 5242880 5月 9 18:54 ib_logfile1
-rw-r-----. 1 root root 12582912 5月 9 18:54 ibtmp1
drwxr-x---. 2 root root 4096 5月 9 18:54 mysql
drwxr-x---. 2 root root 4096 5月 9 18:54 performance_schema
drwxr-x---. 2 root root 38 5月 9 18:54 tff
-rw-r-----. 1 root root 36 5月 9 18:54 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root 507 5月 9 18:54 xtrabackup_info
drwxr-x---. 2 root root 8192 5月 9 18:54 zabbix
[root@tff_128 mysql]# pwd
/var/lib/mysql
[root@tff_128 mysql]# chown mysql:mysql -R /var/lib/mysql
[root@tff_128 mysql]# ll
总用量 98332
-rw-r-----. 1 mysql mysql 77594624 5月 9 18:54 ibdata1
-rw-r-----. 1 mysql mysql 5242880 5月 9 18:54 ib_logfile0
-rw-r-----. 1 mysql mysql 5242880 5月 9 18:54 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 5月 9 18:54 ibtmp1
drwxr-x---. 2 mysql mysql 4096 5月 9 18:54 mysql
drwxr-x---. 2 mysql mysql 4096 5月 9 18:54 performance_schema
drwxr-x---. 2 mysql mysql 38 5月 9 18:54 tff
-rw-r-----. 1 mysql mysql 36 5月 9 18:54 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 mysql mysql 507 5月 9 18:54 xtrabackup_info
drwxr-x---. 2 mysql mysql 8192 5月 9 18:54 zabbix
[root@tff_128 mysql]#
8 重新登录数据库
查看数据 发现删除的数据回来了
[root@tff_128 mmmysql]# systemctl start mariadb.service
[root@tff_128 backup]# mysql -uroot -p123456 -e "use tff;select * from bptest;"
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
+------+------+
[root@tff_128 backup]#
增量备份
全量备份上面有了
全量备份上面有了
[root@tff_128 backup]# ll
总用量 4
drwxr-x---. 6 root root 4096 5月 9 20:29 2022-05-09_20-28-26
1 先往表里增加数据
MariaDB [tff]> insert into bptest values(3,'d');
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: tff
Query OK, 1 row affected (0.01 sec)
MariaDB [tff]> insert into bptest values(4,'d');
Query OK, 1 row affected (0.01 sec)
MariaDB [tff]> select * from bptest;
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
| 3 | d |
| 4 | d |
+------+------+
4 rows in set (0.00 sec)
2 第一次增量备份
--incremental-basedir=/backup/2022-05-09_20-28-26
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --incremental-basedir=/backup/2022-05-09_20-28-26 --incremental /backup/
第一次增量备份产生了
第一次增量备份产生了
[root@tff_128 backup]# ll
总用量 4
drwxr-x---. 6 root root 4096 5月 9 20:39 2022-05-09_20-28-26 全量备份
drwxr-x---. 6 root root 241 5月 9 20:50 2022-05-09_20-50-26 增量备份1
[root@tff_128 backup]#
3 先往表里再增加一些数据
MariaDB [tff]> insert into bptest values(5,'d');
Query OK, 1 row affected (0.00 sec)
MariaDB [tff]> insert into bptest values(6,'d');
Query OK, 1 row affected (0.00 sec)
MariaDB [tff]> select * from bptest;
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
| 3 | d |
| 4 | d |
| 5 | d |
| 6 | d |
+------+------+
6 rows in set (0.00 sec)
MariaDB [tff]>
4 第二次增量备份
--incremental-basedir=/backup/2022-05-09_20-50-26
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --incremental-basedir=/backup/2022-05-09_20-50-26 --incremental /backup/
第二次增量备份产生了
第二次增量备份产生了
[root@tff_128 backup]# ll
总用量 4
drwxr-x---. 6 root root 4096 5月 9 20:39 2022-05-09_20-28-26 全量备份
drwxr-x---. 6 root root 241 5月 9 20:50 2022-05-09_20-50-26 增量备份1
drwxr-x---. 6 root root 241 5月 9 20:51 2022-05-09_20-51-57 增量备份2
[root@tff_128 backup]#
5 执行回滚操作
(最后一次不用加--redo-only)
innobackupex --apply-log --redo-only /backup/2022-05-09_20-28-26
innobackupex --apply-log --redo-only /backup/2022-05-09_20-28-26 --incremental-dir=/backup/2022-05-09_20-50-26
innobackupex --apply-log /backup/2022-05-09_20-28-26 --incremental-dir=/backup/2022-05-09_20-51-57
6 往表里删除一些数据
MariaDB [tff]> select * from bptest;
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
| 3 | d |
| 4 | d |
| 5 | d |
| 6 | d |
+------+------+
6 rows in set (0.00 sec)
MariaDB [tff]> delete from bptest where id =6;
Query OK, 1 row affected (0.00 sec)
MariaDB [tff]> delete from bptest where id =4;
Query OK, 1 row affected (0.01 sec)
MariaDB [tff]> select * from bptest;
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
| 3 | d |
| 5 | d |
+------+------+
4 rows in set (0.00 sec)
7 停止服务 移动数据
(保持data目录为空就行)
个人建议数据先别删除 万一报错 还可以解决的
systemctl stop mariadb.service
rm -rf /tmp/mmmysql/*
mv /var/lib/mysql/* /tmp/mmmysql/
8 执行增量恢复
innobackupex --copy-back /backup/2022-05-09_20-28-26/
9 防止服务启动失败
chown -R mysql:mysql /var/lib/mysql/
10 重新登录数据库
查看数据 发现数据回来了
[root@tff_128 mysql]# systemctl start mariadb.service
[root@tff_128 mysql]# mysql -uroot -p123456 -e "use tff;select * from bptest;"
+------+------+
| id | name |
+------+------+
| 1 | d |
| 2 | d |
| 3 | d |
| 4 | d |
| 5 | d |
| 6 | d |
+------+------+
[root@tff_128 mysql]#
注意点:
1 第n次增量备份
--incremental-basedir=/backup/时间(这里时间都在变化 都是相对的上一次备份的时间)
2 执行回滚操作
innobackupex --apply-log --redo-only /backup/2022-05-09_20-28-26 (--redo-only /backup/时间 (时间都是全量备份的时间))
标签:--,backup,备份,tff,Xtrabackup,mysql,root 来源: https://www.cnblogs.com/tanff/p/15526449.html