zoukankan      html  css  js  c++  java
  • MySQL数据库备份和还原

    MySQL数据库备份和还原

      以下方法前景必须是一台用yum源安装的mysql数据库没操作过的崭新的服务器

      *查看是否启用二进制日志:show master logs;/show binary logs;

        

      *创建一个日志文件专门存放二进制日志:mkdir /data/logbin

      *修改配置文件:vim /etc/my.cnf

        

      *设置权限所有者和所属组:chown mysql.mysql /data/logbin/

      *重新启动mysql服务:systemctl restart mariadb

      *查看文件夹是否生成二进制文件:ll /data/logbin(上面是二进制文件,下面是索引)

        

      *再次查看二进制文件是否启动:show master logs;(默认大小245)|show master status;(position默认大小)

        

        

      *刷新日志(也是创建日志):flush logs;

        

      *清除指定的二进制日志:purge binary logs to '删除文件之前的位置';(删除之前的文件不包括本身)

        

      *删除所有的二进制文件从新计数:reset master;

        

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    冷备份 

      *停止服务:systemctl stop mariadb;

      *查看目录:ls /var/lib/mysql/(mysql.sock文件不存在了)

      *压缩数据:tar Jcvf all.bak.tar.xz /var/lib/mysql(打包数据库)

           tar Jcvf logbin.tar.xz(打包二进制文件)

           /etc/my.cnf(直接拷贝)

      *创建一个目录存放压缩数据:mkdir backup

                   mv all.bak.tar.xz logbin.tar.xz /backup/

                   cp /etc/my.cnf /backup/

      *拷贝到另一台机器上:scp -r /backup/ 192.168.198.17:/data/(本机地址为192.168.198.7)

      *打开ip为192.168.198.17的服务器(该机器未安装过mysql),查看传送过来的文件:ls /data

      *yum安装数据库:yum install mariadb-server -y

      *查看数据库:ls /var/lib/mysql(该目录是空的)

      *覆盖配置文件:cp /data/backup/my.cnf  /etc/my.cnf -b(-b是备份)

      *查看备份的my.cnf文件:ll /etc/my.cnf(my.cnf~备份文件)

      *创建二进制文件,改变所有者和所属组:mkdri /data/logbin/  chown mysql.mysql /data/logbin/

      *解压二进制文件压缩包:tar -xvf /data/backup/logbin.tar.xz -C /data/logbin

      *进入目录查看:cd /data/logbin(这是这个目录不对)mv data/logbin/* .(把数据移出)rm -rf data(删除data目录)

      *解压mysql压缩包然后移动到/var/lib/mysql中:cd /data/backup/(进入) tar xvf all.bak.tar.xz(解压在当前目录) cd var/lib/mysql(进入) mv * /var/lib/mysql(移动全部数据到该目录)

      *启动数据库:systemctl start mariadb;(启动之后进入mysql查看即可)

    ----------------------------------------------------------------------------------------------------------------------------------------------------------

    mysqldump

     一、mysqldump [options] database [tables](备份一个数据库此法问题较多不推荐使用) 

      *创建一个备份目录:mkdir /data/backup/

      *复制整个数据库成sql语句:mysqldump hellodb > /data/backup/hellodb.sql

      *删除该数据库:mysql -e 'drop database hellodb';

      *还原数据库得先创建该数据库:create database hello;(mysqldump恢复数据时不具有自动创建数据库的功能需要手工创建,创建的新数据库名字可以改变)

      *还原数据:mysql hello < /data/backup/hellodb.sql

      *进入数据库查看是否还原即可

      二、mysqldump [options] -B DB1[DB2 DB3...](备份部分数据库)

      *创建一个备份目录:mkdir /data/backup

      *备份数据库:mysqldump -B hello[后面可以跟多个数据库] > /data/backup/hello.sql

      *删除数据库:mysql -e 'drop database hello';

      *还原数据:mysql < /data/backup/hello.sql

      *进入数据库查看即可

     三、mysqldump [options] -A [options](备份全部数据库)

      *创建一个备份目录:mkdir /data/backup

      *备份数据库:mysqldump -A > /data/backup/all.sql

      *删除数据库

      *还原数据:mysql < /data/backup/all.sql

      *进入数据库查看即可

      

      

      四、mysqldump --master-data[=#](二进制日志还原)

      *创建备份存放目录:mkdir /data/backup/

       *备份为注释的CHANGE MASTER TO语句:mysqldump -A --master-data=2 > /data/backup/all.sql

       *查看现在的二进制文件:mysql -e 'show master logs';

       *随便写一条sql语句即可

       *再次查看二进制文件会发现文件变大:mysql -e 'show master logs';

       *开始删库:rm -rf /var/lib/mysql/*(啥也没了)

       *重启数据库服务:systemctl restart mariadb(会重新生成mysql文件)

       *恢复数据库时禁止用户访问,在配置文件修改:vim /etc/my.cnf 添加:skip_networking 不允许网络连接或者skip_grant_tables跳过授权表只是服务器选项不是变量

       *临时关闭二进制文件不让他生效:show variables like 'sql_log_bin'默认是NO,set sql_log_bin=OFF即可

       *再次查看二进制文件:show master logs;发现他多生成出几个文件

       *我要还原图中数据即可(只是我自己),可以查看备份的文件得出依据从哪里开始还原

        

       *进入二进制文件目录备份丢失的数据,如下图所示

        

      *导入还原数据:进入mysql输入source /data/backup/all.sql(先还原全部备份)source /data/backup/inc.sql(还原丢失数据)

        *进入数据库查看即可

      *恢复二进制数据记录:set sql_log_bin=on;

      五、恢复误删的表

      *创建数据备份的目录:mkdri /data/backup/

      *备份二进制数据:mysqldump -A --master-data=2 > /data/backup/all_`date +%F`.sql

      *随便写一条sql语句

      *删表:drop table students;

      *刷新日志,找出丢失的日志文件

        

      *刷新丢失的二进制文件:mysqlbinlog  --start-position=245 /data/logbin/mysql-bin.000005 > /data/backup/inc.sql

      *打开配置文件vim /data/backup/inc.sql,找到删除命令注销

       

      *删除数据库:rm -rf /var/bin/mysql/*

      *重启服务器:systemctl restart mariadb

      *进入数据库停止二进制服务:set sql_log_bin=off;

      *导入还原数据:进入mysql输入source /data/backup/all_2019_7_11.sql(先还原全部备份)source /data/backup/inc.sql(还原丢失数据)

      *查看数据:执行一条查询语句(即可成功)

      

       

       

        

      

      

        

      

      

      

        

        

      

        

        

  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/dengkui/p/11168995.html
Copyright © 2011-2022 走看看