mysql-数据备份总结
一、逻辑备份
#逻辑备份有三种备份级别,分别是表级、库级和全库级。
#全库级备份语句
[root@localhost mysql]# mysqldump -uroot -p密码 -A > 备份文件.sql
#-A 是备份所有数据库
#-B 是备份多个数据库
#库级备份语句
[root@localhost mysql]#mysqldump -uroot -p密码 -B db1 db2 > databases.sql
#表级备份语句
[root@localhost mysql]#mysqldump -uroot -p密码 db tb1 tb2 > tables.sql
#恢复数据
#有两种方法,分别是在数据库内和在命令终端
#在命令终端
[root@localhost mysql]# mysql -uroot -p密码 库名 < sql文件路径
#在数据库内
mysql> source sql文件路径
#注意,如果是表级别备份 第一种方法,需要先use到数据库,没有就去创建,第二种方法,需要在密码后面跟上数据库名
#备份表结构
[root@localhost mysql]#mysqldump -uroot -p密码 -d db_name tb_name > 备份文件.sql
#恢复表结构
#需要先创建一个数据库
mysql> create database db1;
[root@localhost mysql]#mysql -uroot -p密码 -D db1 < 备份文件.sql
二、导数据
1、导出表数据
#导出的数据会默认存放安全目录路径下,这个路径也可以自己修改
#查看安全目录路径
mysqk>show variables like "secure_file_priv";
#修改安全目录路径
[root@localhost mysql]#vim /etc/my.cnf
secure_file_priv=/tmp/
#导出数据
mysql> select * from tb_name into outfile '/tmp/xxx.txt';
#然后重启数据库
2、导入数据
#需要将原来的表数据清楚,保留表结构或者重新建一张相同的表。
mysql> load data infile 'xxx.txt' into table tb_name;
三、物理备份
#物理备份需要借助第三方工具,有三种备份方式完全备份,增量备份和差异备份
#完全备份
[root@localhost mysql]#mkdir -p /xtrabackup/full #创建备份目录
[root@localhost mysql]#innobackupex --uesr=root --password='mima' /xtarbackup/full
完全备份恢复流程
1. 停止数据库 systemctl stop mysqld&&systemctl stop firewalld&&setenforce 0
2. 清理环境
3. 重演回滚--> 恢复数据
4. 修改权限
5. 启动数据库
1.关闭数据库:
[root@mysql-server ~]# systemctl stop mysqld
[root@mysql-server ~]# rm -rf /var/lib/mysql/*
[root@mysql-server ~]# rm -rf /var/log/mysqld.log #可选操作
[root@mysql-server ~]# rm -rf /var/log/mysql-slow/slow.log #可选操作
2.恢复之前的验证恢复:
[root@mysql-server ~]# innobackupex --apply-log /xtrabackup/full/2019-08-20_11-47-49
3.确认数据库目录:
恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里
# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
4.恢复数据:
[root@mysql-server ~]# innobackupex --copy-back /xtrabackup/full/2019-08-20_11-47-49
5.修改权限:
[root@mysql-server ~]# chown mysql.mysql /var/lib/mysql -R
启动数据库:
[root@mysql-server ~]# systemctl start mysqld
#增量备份:每次备份上一次备份到现在产生的新数据