Mysql备份数据库
全量备份
#备份数据库
#mysqldump 的时候会锁住整个库,所以备份是完整的,但会影响数据库的访问,产生卡顿
#备份并压缩数据库
#在运行的时候提醒输入密码
mysqldump -u root -p <database_name> | gzip > backup.sql.gz
#直接写密码到命令中「安全性比较差」
mysqldump -u root -p[password] <database_name> | gzip > backup.sql.gz
#从压缩文件中恢复数据库
#恢复是先删除原来数据库中的表,然后创建表,再插入数据
gunzip < backup.sql.gz | mysql -u root -p <database_name>
增量备份
步骤:
开启binlog「mysql 8.0 默认开启, 保留时间是30天」
刷新日志「刷新日志会保存日志文件,并开启一个新的日志文件,也就是拷贝新生成日志文件以前的日志文件就可以了」
-- sql语句
-- 检查binlog是否开启
SHOW VARIABLES LIKE 'log_bin';
-- 刷新二进制日志(创建新日志文件)
FLUSH BINARY LOGS;
-- 或使用你的命令(效果类似,但推荐上面的)
FLUSH LOGS;
-- 显示当前 binlog 文件名称
SHOW MASTER STATUS;
-- 显示日志文件保存的目录
SHOW VARIABLES LIKE 'log_bin_basename';
# bash
# 备份从上一个备份点到最新点的所有 binlog 文件
# 例如:备份 mysql-bin.000010 到 mysql-bin.000015
cp /var/lib/mysql/mysql-bin.* /backup/binlog/
恢复数据
# 只恢复某个数据库的操作
mysqlbinlog --database=myapp mysql-bin.000002 | mysql -u root -p myap
# 查看日志内容 -v 使用文本显示sql语句
mysqlbinlog -v binlog.000015
# Mysql备份数据库
## 全量备份
- 备份
```bash
#备份数据库
#mysqldump 的时候会锁住整个库,所以备份是完整的,但会影响数据库的访问,产生卡顿
#备份并压缩数据库
#在运行的时候提醒输入密码
mysqldump -u root -p <database_name> | gzip > backup.sql.gz
#直接写密码到命令中「安全性比较差」
mysqldump -u root -p[password] <database_name> | gzip > backup.sql.gz
```
- 恢复
```bash
#从压缩文件中恢复数据库
#恢复是先删除原来数据库中的表,然后创建表,再插入数据
gunzip < backup.sql.gz | mysql -u root -p <database_name>
```
## 增量备份
- 步骤:
- 开启binlog「mysql 8.0 默认开启, 保留时间是30天」
- 刷新日志「刷新日志会保存日志文件,并开启一个新的日志文件,也就是拷贝新生成日志文件以前的日志文件就可以了」
```
-- sql语句
-- 检查binlog是否开启
SHOW VARIABLES LIKE 'log_bin';
-- 刷新二进制日志(创建新日志文件)
FLUSH BINARY LOGS;
-- 或使用你的命令(效果类似,但推荐上面的)
FLUSH LOGS;
-- 显示当前 binlog 文件名称
SHOW MASTER STATUS;
-- 显示日志文件保存的目录
SHOW VARIABLES LIKE 'log_bin_basename';
# bash
# 备份从上一个备份点到最新点的所有 binlog 文件
# 例如:备份 mysql-bin.000010 到 mysql-bin.000015
cp /var/lib/mysql/mysql-bin.* /backup/binlog/
```
- 恢复数据
```
# 只恢复某个数据库的操作
mysqlbinlog --database=myapp mysql-bin.000002 | mysql -u root -p myap
# 查看日志内容 -v 使用文本显示sql语句
mysqlbinlog -v binlog.000015
```