服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - PHP程序员玩转Linux系列 备份还原MySQL

PHP程序员玩转Linux系列 备份还原MySQL

2022-01-07 19:35陶士涵 Linux

这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,MySQL备份还原教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

PHP程序员玩转Linux系列文章:

1.PHP程序员玩转Linux系列-怎么安装使用CentOS

2.PHP程序员玩转Linux系列-lnmp环境的搭建

3.PHP程序员玩转Linux系列-搭建FTP代码开发环境

前几天有个新闻,说是gitlab的工程师把数据文件给误删了,搞了个大事件,很多人都去围观了.备份工作应该在最开始的时候就要做,否则就会失去最佳时机,为了保证我的数据是安全的,因此我要搞备份了.备份分为逻辑备份和物理备份,逻辑备份是导sql,物理备份是基于文件的,这两种我都搞一下.

开启binlog

首先第一件事是打开binlog日志,编辑mysql配置文件开启一下,默认是关闭的.编辑 /etc/my.cnf ,log-bin=mysqlbinlog =号后面的是binlog日志的名字,默认生成在数据目录里面,重启一下mysql服务 , service mysqld restart

PHP程序员玩转Linux系列 备份还原MySQL

查看mysql的数据目录 , /var/lib/mysql ,mysqlbinlog.000001等文件就是binlog日志文件.

PHP程序员玩转Linux系列 备份还原MySQL

添加一些测试数据

建数据库,建表和插入一些记录,用于测试,表的存储引擎选择innodb,因为这个引擎容易测出来问题

#建库
create database entmail charset=utf8; 
#建表,存储引擎选用innodb
create table user( id int auto_increment primary key, name varchar(100) not null default '' ) engine=innodb;
#插记录
insert into user values(null,'shihan');
insert into user values(null,'shihan1');
insert into user values(null,'shihan2');
insert into user values(null,'shihan3');

PHP程序员玩转Linux系列 备份还原MySQL

小数据量使用mysqldump逻辑备份

第一想到的备份方式是使用mysqldump,导出sql语句,恢复的时候就再次导入sql语句.

针对我的数据库,用户名root 密码空,我放sql文件的位置是/home/shihan1/mysql/sqls/ ,备份所有数据库,我的导出命令是下面这句

 

mysqldump -uroot --all-databases > /home/shihan1/mysql/sqls/all.sql 

 

此时,我误删了数据库entmail , drop database entmail

PHP程序员玩转Linux系列 备份还原MySQL

不着急,马上进行恢复,执行以下导入命令,数据库立刻就回来了,注意一个是mysqldump命令,一个是mysql命令

 

mysql -uroot < /home/shihan1/mysql/sqls/all.sql 

 

为啥不能用拷贝数据目录的方式备份

有的同学会使用直接拷贝数据目录的方式备份,我也测试了一下,实际证明这种方式是不正确的.我用tar命令把数据目录整个打包搬走,然后删除整个数据目录,再搬回来.

PHP程序员玩转Linux系列 备份还原MySQL

因为我把mysql的那几张用户表啥的都删了,mysql会进行重新初始化

PHP程序员玩转Linux系列 备份还原MySQL

我把数据文件再搬回来,然后进mysql看看,结果是这样的,告诉我user表不存在了,这张表是innodb引擎的,所以不能使用这种方式,幸亏我有前面的逻辑备份,从新导一下,数据又回来了.

 

mysql -uroot < /home/shihan1/mysql/sqls/all.sql

 

PHP程序员玩转Linux系列 备份还原MySQL

使用第三方软件percona-xtrabackup实现物理备份

可以实现物理备份的软件与很多,mysql也有企业版备份工具,但是貌似是收费的,percona-xtrabackup这个开源软件可以很好的实现全量备份和增量备份.

前往这个地址下载rpm包,里面可以选择版本,我最开始选的最新版2.4.6,结果报这个错误:Error: Built-in InnoDB in MySQL 5.1 is not supported in this release. You can either use Percona XtraBackup 2.0, or upgrade to InnoDB plugin.然后从新下了个2.0.0版是可以的.

https://www.percona.com/downloads/XtraBackup/

#下载rpm
wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.0/RPM/rhel6/x86_64/percona-xtrabackup-2.0.0-417.rhel6.x86_64.rpm
#安装rpm
rpm -i percona-xtrabackup-2.0.0-417.rhel6.x86_64.rpm
#安装需要的依赖
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-MD5 rsync libev numactl

开始备份了

当前数据:

PHP程序员玩转Linux系列 备份还原MySQL

1. 我先把所有数据全量备份一次,后面那个目录是备份保存的目录,执行完成后出现innobackupex: completed OK!代表成功,生成的备份文件2017-02-24_17-47-55

 

innobackupex --user=root /home/shihan1/mysql/backups/

 

PHP程序员玩转Linux系列 备份还原MySQL

2. 添加几条新数据进去,现在的数据情况

insert into user values(null,'shihan4');
insert into user values(null,'shihan5');

PHP程序员玩转Linux系列 备份还原MySQL

3. 增量备份一次,就多了一个参数--incremental , 增量备份生成的文件是 2017-02-24_17-51-32 , 数据的大小也是不一样的

 

innobackupex --user=root --incremental /home/shihan1/mysql/backups/

 

PHP程序员玩转Linux系列 备份还原MySQL

PHP程序员玩转Linux系列 备份还原MySQL

4. 此时发生灾变,我把数据目录给删了!rm -rf /var/lib/mysql/* ,mysql已经连不上了

PHP程序员玩转Linux系列 备份还原MySQL

5. 抓紧恢复数据 , 准备全量备份文件 , 合并增量备份文件 , 执行恢复

#准备全量备份文件
innobackupex --apply-log --redo-only /home/shihan1/mysql/backups/2017-02-24_17-47-55/
#合并增量备份文件,注意看目录名
#如果有多次增量备份,就多次执行 innobackupex --apply-log --redo-only 增量目录 --incremental-dir 增量目录
innobackupex --apply-log --redo-only /home/shihan1/mysql/backups/2017-02-24_17-47-55/ --incremental-dir /home/shihan1/
mysql/backups/2017-02-24_17-51-32/
#执行恢复
innobackupex --copy-back /home/shihan1/mysql/backups/2017-02-24_17-47-55

PHP程序员玩转Linux系列 备份还原MySQL

6. 数据已经回来了,重新修改一下数据文件的属组和属主chown mysql:mysql -R /var/lib/mysql/* , 重启一下mysql ,数据全部恢复

PHP程序员玩转Linux系列 备份还原MySQL

PHP程序员玩转Linux系列 备份还原MySQL

下一篇定时执行备份脚本

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/taoshihan/p/6437468.html

延伸 · 阅读

精彩推荐
  • Linuxlinux下修改MAC地址问题解决方法

    linux下修改MAC地址问题解决方法

    在linux中,修改MAC地址(修改的MAC地址跟原来的地址不同),接下来为大家介绍下修改MAC地址时所遇到的问题,感兴趣的朋友可以参考下哈...

    Linux教程网9402021-09-28
  • LinuxOracle Linux 7.1 发布下载

    Oracle Linux 7.1 发布下载

    Oracle Linux 7.1 发布,此版本所有包都提供在 ULN 和 public yum;ISO 安装镜像可以从 Oracle Software Delivery Cloud 下载 ...

    服务器之家5612019-10-14
  • LinuxLinux系统服务器中国电信/联通/移动回程路由追踪一键测试脚本

    Linux系统服务器中国电信/联通/移动回程路由追踪一键测试脚本

    今天在这里为大家分享一个Linux系统服务器中国电信/联通/移动回程路由追踪一键测试脚本,,可以一键测试服务器到16个节点的回程路由情况。...

    蜗牛7894392020-05-24
  • LinuxUNIX防止非法用户注册的技术

    UNIX防止非法用户注册的技术

    由于SCO Unix操作系统的开放性,网络系统的共享性,数据库的通用性等因素,Unix操作系统数据信息的安全问题显得越来越为突出,特别是终端端口的安全管...

    Linux教程网3892020-04-14
  • LinuxLinux及FreeBSD系统下如何查看CPU信息

    Linux及FreeBSD系统下如何查看CPU信息

    一、Linux 查看cpu信息: [junjie2@ljj ~]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 13 model name : Intel(R) Pentium(R) M processor 1.60GHz stepping : 8 cpu ...

    Linux之家6852019-10-13
  • Linuxlinux系统下WPS缺失字体导致文件乱码该怎么办?

    linux系统下WPS缺失字体导致文件乱码该怎么办?

    linux系统下WPS缺失字体导致文件乱码该怎么办?每次启动linux版WPS就会弹出“系统缺失字体……”提醒对话框,对于系统缺失字体有以下几种,下面我们一起...

    Linux之家3502019-10-14
  • Linuxlinux系统安全shell脚本第二版

    linux系统安全shell脚本第二版

    本脚本是第二次更新,已经大量应用在某大型媒体网站体系中,加入了之前没有想到的一些安全设置 ...

    崔晓辉的博客3622019-12-10
  • LinuxLinux 命令 su 和 sudo 的区别

    Linux 命令 su 和 sudo 的区别

    之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下。 ...

    良许Linux7272021-11-01