-
备份类型
-
备份的数据量
-
备份的文件
包括:数据目录下的文件,二进制文件,配置文件 -
备份工具
-
mysql变量
查看慢查询时间 -
日志
如果想修改或者添加日志,在配置文件添加相关配置信息即可
-
二进制日志
-
下载好mysql数据库后一般都需要先启动二进制日志在配置文件添加一行,并且建议不要默认放在数据目录,与数据目录分别放在不同的磁盘比较好
注:mysql-bin可以前面添加路径 但此目录需要修改属主和属组
重启mysql服务即可
默认目录在/var/lib/mysql数据目录下;查看命令mysqlbinlog mysql-bin.000001
-
查看二进制文件内容
-
在mysql查看二进制文件都有哪些操作
-
查看各二进制文件大小
show binary logs;
-
二进制文件滚动的三种情况
-
输出时间年月日时间
逻辑备份
mysqldump工具的使用:逻辑备份
mysqldump(完全备份) + 二进制日志文件
完全备份+增量备份
常用选项:
db_name [tb1] [tb2]:备份指定数据库或表
备份库时不包含创建库的命令,恢复时,需要先创建空白库
--master-data={1|2}
1:以change master to的方式记录位置,可以用于恢复后直接启动从服务器
2:以change master to的方式记录位置,但默认被注释
#mysqldump -uroot -p --master-data=2 cloud2 person > ./bakup/cloud2_person-$(date +%Y%m%d).sql
查看备份文件内容,可以看到以change master to方式记录的二进制文件名称和位置
--lock-all-talbes
锁定所有表
--flush-logs
执行二进制日志文件滚动
如果指定库中的表的存储引擎类型为InnoDB,可以使用选项--single-transaction启动热备份,不要与--all-l ock-tables一起使用
备份多个库:
--all-databases: 备份所有库
mysqldump -uroot -p --master-data=1 --lock-all-tables --flush-logs --all-databases
> bakup/all-$(%Y%m%d).sql
--databases <db_name>: 备份指定库
此两个选项本分事会备份创建库的命令,因此,恢复时不用创建空白库
示例:使用mysqldump备份数据库,利用二进制日志实现即时点还原 备份策略:
mysqldump(完全备份)
每日备份二进制日志,实现增量备份
-
准备备份磁盘设备 /backup
-
mkfs.ext4 /dev/sdb1
-
vim /etc/fstab
/dev/sdb1 /backup ext4 defaults 0 0 -
进行完全备份:
mysqldump -uroot -p --lock-all-tables --flush-logs --master-data=2 --all-databases > /backup/$(date +%F-%T).all_db.sql
5.通过删除模拟增量备份:
mysql> delete from cloud2.person where id=6;
Query OK, 0 rows affected (0.02 sec)mysql> select * from cloud2.person;
±—±----------±----+
| id | user_name | age |
±—±----------±----+
| 1 | zhangsan | 10 |
| 2 | lisi | 33 |
| 3 | zhangsan | 20 |
| 4 | wangwu | 30 |
| 5 | wangwu2 | 30 |
±—±----------±----+
5 rows in set (0.00 sec)
6.备份新二进制日志文件,实现增量备份
[root@mysql ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000013 > /backup/$(date +%F-%T).in creament.sql
7.查看新的日志文件
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000013
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.01 sec)
8.再次通过插入模拟增量备份
mysql> insert into cloud2.person(user_name, age) values(‘aaa’, 60),(‘bbb’,70);
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0
9.备份新的二进制文件,实现增量备份
mysql> show master status;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000014 | 434 | | | |
±-----------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
[root@mysql ~]# mysqlbinlog --start-position=434 /var/lib/mysql/mysql-bin.000014 > /backup/$(date +%F-%T).increament2.sql
[root@mysql ~]# ll /backup/
总用量 864
-rw-r–r-- 1 root root 857223 10月 29 17:15 2019-10-29-17:15:03.all_db.sql
-rw-r–r-- 1 root root 862 10月 29 22:09 2019-10-29-22:09:45.increament.sql
-rw-r–r-- 1 root root 2243 10月 29 22:18 2019-10-29-22:18:50.increament2.sql
drwx------ 2 root root 16384 10月 29 17:01 lost+found
数据恢复
1.[root@mysql ~]# systemctl stop mysqld
[root@mysql ~]# rm -rf /var/lib/mysql/*
2.重启数据库服务
systemctl start mysqld;
3.重新设置root数据库密码:
[root@mysql ~]# grep ‘password’ /var/log/mysqld.log
[root@mysql ~]# mysqladmin -uroot -p password “new password”
Enter password:用此命令检索出的密码:grep ‘password’ /var/log/mysqld.log
4.先恢复完全备份,再依次恢复增量备份
[root@mysql ~]# mysql -u root -p < /backup/2019-10-29-17:15:03.all_db.sql
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| cloud2 |
| mysql |
| performance_schema |
| sys |
±-------------------+
5 rows in set (0.02 sec)
也可在mysql数据库里还可以实行以下命令恢复数据
source /backup/2019-10-29-22:09:45.increament.sql
source /backup/2019-10-29-22:18:50.increament2.sql
注:在mysql里可以执行shell命令\! 后接命令
实现在主机操作
使用Select实现逻辑备份![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/984d3a5485b1747ffb553aee148b47fd.png)
再使用load data 恢复数据
物理备份
xtrabackup实现物理备份
- 完全备份:
具体步骤:
注:记得把/var/lib/mysql数据目录的属主和属组改成mysql
2. 完全备份加增量备份
恢复增量备份
LVM完全备份
注:锁表时不能退出mysql ,只能再开个终端操作
增量备份则用二进制文件导入即可