(原始)数据库的备份与恢复

  数据库的备份和恢复

  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 相当于位置,相当于执行之后的数据

  

  

  

  

  

    

  

       

  

  

  

原文地址:https://www.cnblogs.com/chengyangyang/p/10653796.html