热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql备份的三种方式

备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据。那变化之后的呢?所以制定一个好的备份策略很重

备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据。那变化之后的呢?所以制定一个好的备份策略很重

1.1把需要备份的数据备份出来

mysql> use hellodb; //打开hellodb库 mysql> select * from students; 查看students的属性 mysql> select * from students where Age > 30 into outfile ‘/tmp/stud.txt’ ; //将年龄大于三十的同学的信息备份出来

[root@www ~]# mysqldump -uroot --single-transaction --master-data=2 --databases hellodb > /backup/hellodb_`date +%F`.sql --single-transaction: 基于此选项能实现热备InnoDB表;因此,不需要同时使用--lock-all-tables; --master-data=2 记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的 --databases hellodb 指定备份的数据库 然后回到mysql服务器端,

2.4回到mysql服务器端更新数据

mysql> create table tb1(id int); 创建表 mysql> insert into tb1 values (1),(2),(3); 插入数据,这里只做演示,随便插入了几个数据

2.5先查看完全备份文件里边记录的位置:

[root@www backup]# cat hellodb_2013-09-08.sql | less -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=15684; 记录了二进制日志的位置

2.6 在回到服务器端:

mysql> show master status; 显示此时的二进制日志的位置 从备份文件里边记录的位置到我们此时的位置,即为增量的部分 +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 15982 | | | +------------------+----------+--------------+------------------+

2.7做增量备份

[root@www backup]# mysqlbinlog --start-position=15694 --stop-position=15982 /mydata/data/mysql-bin.000013 > /backup/hellodb_`date +$F_%H`.sql

2.8再回到服务器

mysql> insert into tb1 values (4),(5); 在插入一些数值 mysql> drop database hellodb; 删除hellodb库

2.9导出这次得二进制日志:

[root@www backup]# mysqlbinlog --start-position=15982 /mydata/data/mysql-bin.000013 查看删除操作时二进制日志的位置 [root@www backup]# mysqlbinlog --start-position=15982 --stop-position=16176 /mydata/data/mysql-bin.000013 > /tmp/hellodb.sql //导出二进制日志

2.10先让mysql离线

回到服务器端: mysql> set sql_log_bin=0; 关闭二进制日志 mysql> flush logs; 滚动下日志

mysql> drop database hellodb;

2.12开始恢复数据:

[root@www ]# mysql 3.4 修改mysql主配置文件存放目录内的文件的权限与属主属组,并初始化mysql

[root@www ~]# mkdir /mydata/data //创建数据目录 [root@www ~]# chown mysql:mysql /mydata/data //改属组属主 [root@www ~]# [root@www ~]# cd /usr/local/mysql/ //必须站在此目录下 [root@www mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data //初始化mysql

3.5修改配置文件:

vim /etc/my.cof datadir=/mydata/data 添加数据目录 sync_binlog = 1 开启此功能

3.6 启动服务

[root@www mysql]# service mysqld start mysql> set session sql_log_bin=0; 关闭二进制日志 mysql> source /backup/all_db_2013-09-08.sql 读取备份文件mysql> FLUSH TABLES WITH READ LOCK; 请求读锁 注:不要退出,另起一个终端: mysql> SHOW MASTER STATUS; 查看二进制文件的位置 +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 107 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> FLUSH LOGS; 建议滚动下日志。这样备份日志的时候就会很方便了

3.8导出二进制文件,创建个目录单独存放

[root@www ~]# mkdir /backup/limian [root@www ~]# mysql -e 'show master status;' > /backup/limian/binlog.txt [root@www ~]#[root@www ~]# lvcreate -L 100M -s -p r -n mysql_snap /dev/myvg/mydata

回到服务器端,,释放读锁

mysql> UNLOCK TABLES; [root@www ~]# mount /dev/myvg/mysql_snap /mnt/data [root@www data]# cp * /backup/limian/ [root@www data]#lvremove /dev/myvg/mylv_snap

mysql> create table limiantb (id int,name CHAR(10)); mysql> insert into limiantb values (1,'tom'); [root@www data]# mysqlbinlog --start-position=187 mysql-bin.000003 > /backup/limian/binlog.sql [root@www backup]# cd /mydata/data/ [root@www data]# rm -rf * [root@www ~]# cp -a /backup/limian/* /mydata/data/ [root@www data]# chown mysql:mysql *

启动服务

[root@www data]# service mysqld start [root@www data]# mysql 登陆测试 mysql> SHOW DATABASES; mysql> SET sql_log_bin=0 mysql> source/backup/limian/binlog.sql; #二进制恢复 mysql> SHOW TABLES; #查看恢复结果 mysql> SET sql_log_bin=1; #开启二进制日志

4.5回到mysql服务器端对数据进行更新操作

mysql> use hellodb; mysql> delete from students where StuID>=24;

4.6增量备份

innobackupex --user=root --password=mypass --incremental /innobackup/--incremental-basedir=/innobackup/2013-09-12_11-03-04/ --incremental 指定备份类型 --incremental-basedir= 指定这次增量备份是基于哪一次备份的,这里是完全备份文件,这样可以把增量备份的数据合并到完全备份中去
推荐阅读
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了通过mysql命令查看mysql的安装路径的方法,提供了相应的sql语句,并希望对读者有参考价值。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
author-avatar
KJ慧兒H妹子Ed
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有