数据库的备份和恢复
1.备份数据的目的是什么?
2.数据备份的方式? 物理备份和逻辑备份
3.数据备份的策略? 完全备份 差异备份 增量备份
4.备份数据?
5. 生产环境怎么备份?
执行备份的sql
mysql mysqldump -uroot -p'admin' cheng < /opt/a.sql
在生产环境中备份 需要加上 --skip-opt 避免锁表的产生
mysql mysqldump --skip-opt -uroot -p'admin' cheng < /opt/a.sql
1.完全备份 mysqldump -hlocalhost -uroot -p密码 数据库名称 > 名.sql;
--all-databases 备份所有
库名称 备份一个库
库名称 表名称 一张表
-B 库名称1 库名称2 备份多个库
2.恢复 mysql uroot -p密码 < 名.sql
3. 可以放入脚本中
4. 使用crontab -e 进入创建定时任务 30 23 * * 1 root/allback.sh
5. chmod + x /root/allback.sh (给权限)
启用binlog 日志
binlog 日志介绍:日志的一种,记录客户端连接数据库服务后,执行的除查询之外的sql命令。
启动日志: 在 vi /etc/my.cnf
[mysqld]
server_id=1 数字在1-255之间
expire_logs_days = x 设置日志保存的天数
log-bin=/var/lib/mysql/mysql-bin
binlog_format=MIXED 记录sql语句,默认情况下不进行计入
查看日志文件:mysqlbinlog /var/lib/mysql/mysql-bin.000001 | grep -i delete
mysql 中查看情况 show variables like '%log_bin%';
d 执行binlog 日志文件里的sql命令恢复数据。 mysqlbinlog 选项 /var/lib/mysql/mysql-bin.000001 | mysql -uroot -p123
选项: --start-position=数字
--stop-position=数字 读到这个数字结束
--start-datetime='yyyy-mm-dd hh:mm:ss' 起始时间
--stop-datetime='yyyy-mm-dd hh:mm:ss' 结束时间
需要解码,当为row时,--base64-output=decode-rows -v
mysqlbinlog --base64-output=decode-rows -v --stop-datetime='yyyy-mm-dd hh:mm:ss' /var/lib/mysql/mysql-bin.000001 | mysql -uroot -p123
可以先进行查看:mysqlbinlog --base64-output=decode-rows -v --stop-datetime='yyyy-mm-dd hh:mm:ss' /var/lib/mysql/mysql-bin.000001 | more
at 2088 相当于位置,相当于执行之后的数据