从数据库的备份策略角度,备份可分为
(1) 物理冷备
(2) 专用备份工具mydump或mysqlhotcopy
(3) 启用二进制日志进行增量备份
(4) 第三方工具备份
优点
缺点
物理冷备份
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# mkdir /backup
[root@localhost ~]# tar zcf /backup/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/
1234
恢复数据库
[root@localhost ~]# mkdir bak
[root@localhost ~]# mv /usr/local/mysql/data/ /bak/
[root@localhost ~]# mkdir restore
[root@localhost ~]# tar zxf /backup/mysql_all-2020-01-02.tar.gz -C restore/
[root@localhost ~]# mv restore/usr/local/mysql/data/ /usr/local/mysql/
[root@localhost ~]# systemctl start mysqld
12345678
[root@localhost ~]#mysqldump -u 用户名 -p [密码] [选项] [数据库名] > /备份路径/备份文件名
1
[root@localhost ~]#mysqldump -u root –p auth > /backup/auth.sql
[root@localhost ~]#mysqldump -u root –p mysql > /bakcup/mysql.sql
1234
[root@localhost ~]#mysqldump -u 用户名 -p [密码] [选项] --databases 库名 1 [库名2] … > /备份路径/备份文件名
12
多库备份的示例
[root@localhost ~]#mysqldump -u root –p --databases auth mysql > /backup/databases-auth-mysql.sql
123
[root@localhost ~]#mysqldump -u 用户名 -p [密码] [选项] --all-databases > /备份路径/备份文件名
123
所有库备份的示例
[root@localhost ~]#mysqldump -u root -p --opt --all-databases > /backup/all-data.sql
12
使用mysqldump备份表的操作
[root@localhost ~]#mysqldump -u 用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名
12
备份表的示例
[root@localhost ~]#mysqldump -u root -p mysql user > /backup/mysql-user.sql
12
MySQL [(none)]> source /backup/all-data.sql
12
[root@localhost ~]#mysql -u 用户名 -p [密码] < 库备份脚本的路径
1
mysql 命令恢复的示例
[root@localhost ~]#mysql -u root -p < /backup/all-data.sql
123
[root@localhost ~]#mysql -u 用户名 -p [密码] < 表备份脚本的路径
[root@localhost ~]#mysql -u root -p mysql < /backup/mysql-user.sql
123456
在生产环境中,可以使用Shell脚本自动实现定时备份
案例
cd /opt
mkdir server
cd /server
vim mysqld.sh ##定时备份脚本
#!/bin/bash
filename=data'date +%y%m%d'.sql # 防止每次备份的数据库都把前面的一次备份给覆盖了,所以每次备份的文件都要不一样的命名
/usr/local/mysql/bin/mysqldump -u root -p123 【备份的数据库名】 > /opt/server/data.sql
wq ##保存退出
chmod 777 mysqld.sh ##给脚本文件设置权限
##设置周期性任务进行每周5下午五点半备份
crontab -e
30 5 * * 5 /opt/server/mysqld.sh