[Linux] PHP程序员玩转Linux系列-备份还原MySQL
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
查看mysql的数据目录 , /var/lib/mysql ,mysqlbinlog.000001等文件就是binlog日志文件.
添加一些测试数据
建数据库,建表和插入一些记录,用于测试,表的存储引擎选择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');
小数据量使用mysqldump逻辑备份
第一想到的备份方式是使用mysqldump,导出sql语句,恢复的时候就再次导入sql语句.
针对我的数据库,用户名root 密码空,我放sql文件的位置是/home/shihan1/mysql/sqls/ ,备份所有数据库, 我的导出命令是下面这句
mysqldump -uroot --all-databases > /home/shihan1/mysql/sqls/all.sql
此时,我误删了数据库entmail , drop database entmail
不着急,马上进行恢复,执行以下导入命令,数据库立刻就回来了,注意一个是mysqldump命令,一个是mysql命令
mysql -uroot < /home/shihan1/mysql/sqls/all.sql
为啥不能用拷贝数据目录的方式备份
有的同学会使用直接拷贝数据目录的方式备份,我也测试了一下,实际证明这种方式是不正确的.我用tar命令把数据目录整个打包搬走,然后删除整个数据目录,再搬回来.
因为我把mysql的那几张用户表啥的都删了,mysql会进行重新初始化
我把数据文件再搬回来,然后进mysql看看,结果是这样的,告诉我user表不存在了,这张表是innodb引擎的,所以不能使用这种方式,幸亏我有前面的逻辑备份,从新导一下,数据又回来了.
mysql -uroot < /home/shihan1/mysql/sqls/all.sql
使用第三方软件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
开始备份了
当前数据:
1. 我先把所有数据全量备份一次,后面那个目录是备份保存的目录,执行完成后出现innobackupex: completed OK!代表成功,生成的备份文件2017-02-24_17-47-55
innobackupex --user=root /home/shihan1/mysql/backups/
2. 添加几条新数据进去,现在的数据情况
insert into user values(null,'shihan4'); insert into user values(null,'shihan5');
3. 增量备份一次,就多了一个参数--incremental , 增量备份生成的文件是 2017-02-24_17-51-32 , 数据的大小也是不一样的
innobackupex --user=root --incremental /home/shihan1/mysql/backups/
4. 此时发生灾变,我把数据目录给删了! rm -rf /var/lib/mysql/* ,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
6. 数据已经回来了,重新修改一下数据文件的属组和属主 chown mysql:mysql -R /var/lib/mysql/* , 重启一下mysql ,数据全部恢复
下一篇定时执行备份脚本
[Linux] PHP程序员玩转Linux系列-备份还原MySQL相关推荐
- [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-nginx初学者引导
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- linux php 守护进程,PHP程序员玩转Linux系列 使用supervisor实现守护进程
PHP程序员玩转Linux系列文章: 首先遇到的问题是,部署nodejs的博客程序时,我把执行nodejs的命令放到后台,使用加&和nohup命令 如:nodejs index.js & ...
- php扩容方案,PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
网站搜盘子运行在腾讯云的服务器上,前几天忽然打不开了,我就登陆服务器去瞅一眼咋回事,看了下发现硬盘满了,现在就来记录一下怎么解决 查看硬盘空间大小 使用df命令查看硬盘的使用情况 , 参数是df -h ...
- 一分钟,六张图让您看懂Linux系统对程序员的重要性。
文章目录 1.Linux与Windows职位数之比2.6:1 2.C/C++程序员Linux与Windows职位数之比3.5:1 3.88.2%的WEB系统部署在Linux系统下 4.数据解读 5.获 ...
- 后端程序员必备的 Linux 基础知识
后端程序员必备的 Linux 基础知识 原文来自github stars>63k的项目JavaGuide,欢迎小伙伴去支持原作者 一 从认识操作系统开始 1.1 操作系统简介 1.2 操作系统简 ...
最新文章
- poj1511(SPFA算法)
- ubuntu19.10安装thrift
- 10.static_extern
- SpringBoot POM web开发(spring-boot-starter-web)
- 华为机试HJ57:高精度整数加法
- 参数等效模型可以用于_华北电力大学 陈宁、齐磊 等:适用于柔性直流电网操作过电压分析的混合式高压直流断路器端口等效模型...
- P4171 [JSOI2010]满汉全席
- 55. Yii import class 与 对象创建
- 《OpenGL超级宝典》 - 源代码文件
- “黑客”深度学习之“游戏外挂原理实现”之美
- java根据身份证号判断用户性别
- caffe安装出现 “error : too few arguments in function call” 的错误
- 开发一流Android SDK
- 报错解决——Failed to load resource: the server responded with a status of 404 (Not Found)
- echarts的xAxis的axisLabel的使用
- Java 自定义按时间先后顺序排序集合
- 函数曲线长度的计算方法
- 给予Java初学者的学习路线建议
- 亚马逊对货车司机“下手”了:实时监控车辆与司机状态并收集相关数据
- 蓝牙解码格式哪个最好_让有源音箱飞起来,让汽车音响硬起来,飞傲BTR5蓝牙HiFi解码品评...
热门文章
- Learning-Python【0】:Windows环境下Python2和Python3的安装
- D - Windows Message Queue
- textarea如何实现高度自适应?
- Hbase对时,时差范围的确定
- 闭包造成的内存泄露怎么解决?
- [zz] 使用ssh公钥密钥自动登陆linux服务器
- fabric-ca 登记身份时报Error: Response from server: Error Code: 20 - Authentication failure
- Django通过一个下拉框确定另外一个下拉框的值,并关联起来
- Struts2之HttpServletRequest、HttpServletResponse,HttpSession,Parameters处理
- html嵌入excel_第5天 | 16天搞定前端,html布局,表格和大块头