当前位置 博文首页 > 文章内容

    mysql数据库的备份与恢复

    作者: 栏目:未分类 时间:2020-11-04 18:01:37

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    一、环境

    备份工具:innobackupex 

      [root@master ~]# innobackupex -v

      xtrabackup: recognized server arguments: --datadir=/usr/local/mysql-5.7.25/data 

      innobackupex version 2.4.18 Linux (x86_64) (revision id: 29b4ca5)

    操作系统:CentOS 7.5

    数据库:mysql-5.7.25

    二、innobackupex 常用参数介绍

    备份工具innobackupex要用到的一些主要参数介绍

      --user:该选项表示备份账号。

      --password:该选项表示备份的密码。

      --port:该选项表示备份数据库的端口。(如果是默认3306端口可忽略)

      --host:该选项表示备份数据库的地址。

      --databases:备份指定的数据库,如果要指定多个数据库,彼此间需要以空格隔开;

      --socket:该选项表示mysql.sock所在位置;

        一般如果是yum安装的数据库,mysql.sock文件默认在/var/lib/mysql/mysql.sock目录下,如果是该情况可以不用指定,如果是二进制安装,则有可能在其他目录下,就需要该参数做指定;否则innobackupex无法连接数据库报错; 

      Failed to connect to MySQL server: DBI connect(';mysql_read_default_group=xtrabackup','root',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at - line 1314.
    201103 10:37:44 Connecting to MySQL server host: localhost, user: root, password: set, port: not set, socket: not set
    Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2).  

      --incremental:表示创建一个增量备份,根--incremental-basedir参数一块使用;

      --incremental-basedir:指定是基于哪个全量备份目录做的增量备份;

      --incremental-dir:指定增量备份的目录;

          --defaults-file:指定my.cnf的路径,如果是默认的/etc/my.cnf路径,则该参数可以忽略;

      --copy-back:做恢复操作,将备份目录中的文件copy到数据库data目录中; 

      --apply-log:作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。(个人不太理解,知道的大神可以解释下)

      --redo-only:

    三、全量备份 or 全量恢复

    1、全量备份

      innobackupex --host=localhost --user=root --password=123.com  --socket=/tmp/mysql.sock /root/mysql/mysql-backup

      备份成功的特征:最后会出现201104 16:43:09 completed OK!的字样

      在备份目录中xtrabackup_checkpoints文件可以查看备份文件类型;

      

      full-backuped:表示全量备份

    2、恢复

      (1)数据库需要先停掉;

      (2)数据库的data目录需要清空,否则报错;

      innobackupex version 2.4.18 based on MySQL server 5.7.26 Linux (x86_64) (revision id: 29b4ca5)
      Original data directory /usr/local/mysql-5.7.25/data is not empty!

      (3) innobackupex --copy-back /root/mysql/mysql-backup/2020-11-04_16-43-05

      (4)恢复命令执行成功后,会在data目录下生成相应的目录文件,这时候目录文件属主属组是root,需要修改data目录下的文件属主属组为mysql用户,否则无法启动;

             chown -R mysql:mysql data

         否则报错:Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql-5.7.25/data/master.pid).   #权限问题导致的;

    四、增量备份

      (1)备份:innobackupex --host=localhost --user=root --password=ngaa.com.cn --socket=/tmp/mysql.sock --incremental /root/mysql/mysql-backup/new_add --incremental-basedir=/root/mysql/mysql-backup/2020-11-04_16-43-05

      

     

      incremental:表示增量备份;

      (2)还原

      1)prepare全备

        innobackupex --incremental --apply-log --redo-only /root/mysql/mysql-backup/2020-11-04_16-43-05

      注意:执行过程中会有一些类似错误的东西,可以忽略,不必纠结;

      2)prepare增量备份

        innobackupex --incremental --apply-log --redo-only /root/mysql/mysql-backup/2020-11-04_16-43-05 --incremental-dir=/root/mysql/mysql-backup/new_add/2020-11-04_17-15-05

        注意:我这边只增量备份了1次,可以多次增量备份,需要注意的是基于全备做的增备或者是基于某次增备做的增量备份,要理清楚;多次增备,需要多次prepare;

      3)此时,增量备份都已经合并到了全备上,需要再prepare一次全备份

       innobackupex --apply-log /root/mysql/mysql-backup/2020-11-04_16-43-05

      4)数据恢复准备,mysql停用,清空数据库data目录;

       innobackupex --copy-back /root/mysql/mysql-backup/2020-11-04_16-43-05

      5)修改数据库data目录属主属组为mysql;登陆验证