创建一个/bak目录作为备份数据存储路径,使用tar创建备份文件。整个数据库文件夹备份属于完全备份。
[root@centos01 ~]# systemctl stop mysqld <!--停止mysql服务--> [root@centos01 ~]mkdir /bak/ <!--创建存储备份目录--> [root@centos01 ~]# tar zcf /bak/mysql_all-$(date +%F).mysql.gz /usr/local/mysql/data/ <!--直接tar打包数据库文件--> [root@centos01 ~]# ls /bak/ <!--查看备份的数据--> -rw-r--r-- 1 root root 766598 10月 31 03:57 /bak/mysql_all-2019-10-31.mysql.gz 2)恢复数据库 [root@centos01 ~]mkdir test <!--创建恢复数据目录--> [root@centos01 ~]# tar zxvf /bak/mysql_all-2019-10-31.mysql.gz -C ./test/ <!--解压缩备份数据到恢复目录--> [root@centos01 data]# cd /usr/local/mysql/data/ <!--进入数据原始位置--> [root@centos01 data]# rm -rf ./* <!--删除数据--> [root@centos01 ~]# cd ./test/usr/local/mysql/data/ <!--切换到恢复目录--> [root@centos01 date]#mv ./* /usr/local/mysql/data/ <!--将恢复目录数据恢复到原始位置--> [root@centos01 ~]# systemctl start mysqld <!--启动mysql服务--> 3、mysqldump备份与恢复通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。
1)备份恢复所有数据库 [root@centos01 ~]# mysqldump -uroot -ppwd@123 --opt --all-databases > ./test/benet_databases.sql <!--备份所有库,opt选项是优化执行速度--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--数据密码--> mysql> show databases; <!--查看所有数据库--> +--------------------+ | Database | +--------------------+ | information_schema | | benet | | mysql | | performance_schema | | test | +--------------------+ mysql> drop database benet; <!--删除benet数据库--> mysql> show databases; <!--查看数据库是否删除--> +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ [root@centos01 ~]# mysql -u root -p < ./test/benet_databases.sql Enter password: <!--恢复所有数据库--> mysql> show databases; <!--查看数据库是否恢复--> +--------------------+ | Database | +--------------------+ | information_schema | | benet | | mysql | | performance_schema | | test | +--------------------+ mysql> source ./test/benet_databases.sql <!--也可以通过这种方法恢复误删除的数据库--> 2)备份恢复数据库中的表 [root@centos01 ~]# mysqldump -uroo t -ppwd@123 benet 一班学生成绩 > ./test/benet_一班学生成绩.sql <!--备份数据库下的表--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--输入密码--> mysql> use benet; <!--切换到benet数据库--> mysql> drop table 一班学生成绩; <!--删除一班学生成绩表--> mysql> show tables; <!--查看表是否删除--> Empty set (0.00 sec) [root@centos01 ~]# mysql -uroot -p benet < ./test/benet_一班学生成绩.sql <!--恢复误删除的表--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--输入密码--> mysql> use benet; <!--切换到benet数据库--> Database changed mysql> show tables; <!--查看误删除的表是否恢复--> +--------------------+ | Tables_in_benet | +--------------------+ | 一班学生成绩 | +--------------------+ 1 row in set (0.00 sec) 五、MySQL增量备份与恢复使用mysqldump进行完全备份,备份的数据中有重复数据,备份时间与恢复时间过长。而增量备份就是备份自上一次备份之后增加或改变的文件或内容。
1、MySQL增量备份的特点