mysql dba系统学习(17)mysql的备份和恢复的完整实践

mysql备份恢复完整实践一,备份数据库之间的环境设置1,创建数据库test1,创建表tt插入如下数据mysqlcreatedatabasetest1;QueryOK,1rowaffected..

                mysql的备份和恢复的完整实践

一,备份数据库之间的环境设置

  1,创建数据库test1,创建表tt 插入如下数据

mysql> create database test1;Query OK, 1 row affected (0.04 sec)mysql> use test1Database changedmysql> create table tt(id int,name varchar(100),msg varchar(200)) engine=myisam;Query OK, 0 rows affected (0.18 sec)mysql> insert into tt values(1,’chenzhongyang’,’how are you’);Query OK, 1 row affected (0.00 sec)mysql> insert into tt values(2,’tianhongyan’,’BMW’);Query OK, 1 row affected (0.00 sec)mysql> insert into tt values(3,’jisuanji’,’why’);Query OK, 1 row affected (0.00 sec)

 2,由于我设置的二进制日志文件的记录格式是row,所以每一行的数据改变就会记录一次日志

mysql> show variables like “%format%”

   -> ;

+———————+——————-+

| Variable_name       | Value             |

+———————+——————-+

| binlog_format       | ROW               |

   3, 此时只有一个二进制日志文件

mysql> show binary logs;

+—————–+———–+

| Log_name        | File_size |

+—————–+———–+

| mysqlbin.000161 |      1133 |

+—————–+———–+

1 row in set (0.00 sec)

   4,查看二进制日志文件的内容

        二进制日志文件 end_log_pos 1133

[root@test4 ~]# mysqlbinlog ‘/tmp/mysqlbin.000161’。。。。。。。。。。。。。。。。。。。# at 588#130905 22:26:42 server id 1 end_log_pos 658 Query thread_id=7 exec_time=0 error_code=0SET TIMESTAMP=1378391202/*!*/;COMMIT/*!*/;# at 658#130905 22:27:15 server id 1 end_log_pos 727 Query thread_id=7 exec_time=0 error_code=0SET TIMESTAMP=1378391235/*!*/;BEGIN/*!*/;# at 727# at 775#130905 22:27:15 server id 1 end_log_pos 775 Table_map: `test1`.`tt` mapped to number 21#130905 22:27:15 server id 1 end_log_pos 827 Write_rows: table id 21 flags: STMT_END_FBINLOG ‘w5QoUhMBAAAAMAAAAAcDAAAAABUAAAAAAAEABXRlc3QxAAJ0dAADAw8PBCwBWAIHw5QoUhcBAAAANAAAADsDAAAAABUAAAAAAAEAA//4AgAAAAsAdGlhbmhvbmd5YW4DAEJNVw==’/*!*/;# at 827#130905 22:27:15 server id 1 end_log_pos 897 Query thread_id=7 exec_time=0 error_code=0SET TIMESTAMP=1378391235/*!*/;COMMIT/*!*/;# at 897#130905 22:27:56 server id 1 end_log_pos 966 Query thread_id=7 exec_time=0 error_code=0SET TIMESTAMP=1378391276/*!*/;BEGIN/*!*/;# at 966# at 1014#130905 22:27:56 server id 1 end_log_pos 1014 Table_map: `test1`.`tt` mapped to number 21#130905 22:27:56 server id 1 end_log_pos 1063 Write_rows: table id 21 flags: STMT_END_FBINLOG ‘7JQoUhMBAAAAMAAAAPYDAAAAABUAAAAAAAEABXRlc3QxAAJ0dAADAw8PBCwBWAIH7JQoUhcBAAAAMQAAACcEAAAAABUAAAAAAAEAA//4AwAAAAgAamlzdWFuamkDAHdoeQ==’/*!*/;# at 1063#130905 22:27:56 server id 1 end_log_pos 1133 Query thread_id=7 exec_time=0 error_code=0SET TIMESTAMP=1378391276/*!*/;COMMIT/*!*/;DELIMITER ;# End of log fileROLLBACK /* added by mysqlbinlog */;/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

二,备份数据库test1

     1,mysqldump备份数据库

[root@test4 ~]# mysqldump  –databases test1  –skip-opt –quick –extended-insert=false –lock-all-tables –master-data=2  -u root -p123456 >  /tmp/test1.sql

     2,查看备份文件

      我们发现这个时候记录的开始位置正好是1133,如下就是证明

CHANGE MASTER TO MASTER_LOG_FILE=’mysqlbin.000161′, MASTER_LOG_POS=1133;

[root@test4 ~]# cat /tmp/test1.sql– MySQL dump 10.13 Distrib 5.1.70, for unknown-linux-gnu (x86_64)—- Host: localhost Database: test1– ——————————————————– Server version 5.1.70-log/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE=’+00:00′ */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=’NO_AUTO_VALUE_ON_ZERO’ */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;—- Position to start replication or point-in-time recovery from—- CHANGE MASTER TO MASTER_LOG_FILE=’mysqlbin.000161′, MASTER_LOG_POS=1133;—- Current Database: `test1`–CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test1` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `test1`;—- Table structure for table `tt`–/*!40101 SET @saved_cs_client= @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `tt` ( `id` int(11) DEFAULT NULL, `name` varchar(100) DEFAULT NULL, `msg` varchar(200) DEFAULT NULL);/*!40101 SET character_set_client = @saved_cs_client */;—- Dumping data for table `tt`–INSERT INTO `tt` VALUES (1,’chenzhongyang’,’how are you’);INSERT INTO `tt` VALUES (2,’tianhongyan’,’BMW’);INSERT INTO `tt` VALUES (3,’jisuanji’,’why’);/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;– Dump completed on 2013-09-05 22:48:50

三,对表进行修改插入数据然后误删表

         由于我们不小心把表tt给删除了,那么我们就要把表tt通过二进制日志给恢复过来

mysql> insert into tt values(4,’shuijunyi’,’boss’);

Query OK, 1 row affected (0.01 sec)

mysql> insert into tt values(5,’zhujun’,’may I know your name’);

Query OK, 1 row affected (0.00 sec)

mysql> select * from tt;

+——+—————+———————-+

| id   | name          | msg                  |

+——+—————+———————-+

|    1 | chenzhongyang | how are you          |

|    2 | tianhongyan   | BMW                  |

|    3 | jisuanji      | why                  |

|    4 | shuijunyi     | boss                 |

|    5 | zhujun        | may I know your name |

+——+—————+———————-+

5 rows in set (0.01 sec)

mysql> drop table tt;

Query OK, 0 rows affected (0.00 sec)

四,,查看执行误操作的位置

                 通过show master status; 可以查看当前的二进制日志文件的位置

mysql> show master status;

+—————–+———-+————–+——————+

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+—————–+———-+————–+——————+

| mysqlbin.000161 |     1622 |              |                  |

+—————–+———-+————–+——————+

1 row in set (0.00 sec)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/902865.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 21:32:10
下一篇 2025年11月28日 21:35:14

相关推荐

  • MySQL ERROR 1045出现的原因及怎么解决

    在命令行输入mysql -u root –p,输入密码,或通过工具连接数据库时,经常出现下面的错误信息,相信该错误信息很多人在使用mysql时都遇到过。 ERROR 1045 (28000): Access denied for user ‘root’@’loca…

    2025年12月5日 数据库
    000
  • linux上安装docker容器和mysql镜像拉取的方法

    docker pull xxxx 拉取镜像 docker run -it xxxx /bin/bash 启动镜像 启动docker服务 docker ps 查询运行中的容器 docker ps -a 查询所有容器,包括未运行的 mysql容器启动:docker run -itd –nam…

    数据库 2025年12月5日
    000
  • ubuntu下mysql 8.0.28怎么安装配置

    修改密码改了挺长时间,记录下安装过程 安装ssh服务: sudo apt-get install openssh-server 启动ssh服务: service sshd start 安装mysql服务器端: sudo apt install -y mysql-server 安装mysql客户端: …

    2025年12月5日
    000
  • MySQL事件调度器如何使用_能实现哪些自动化任务?

    mysql事件调度器是内置的定时任务工具,用于自动化周期性操作。一、开启方法:用show variables查看event_scheduler状态,若为off则在配置文件添加event_scheduler=on或临时执行set global开启;二、创建语法:create event定义触发时间、频…

    2025年12月5日 数据库
    000
  • mysql临键锁如何使用

    1、默认情况下,innodb使用临键锁锁定记录。 select … for update 2、当查询索引包含唯一属性时,临键锁将被优化并降级为记录锁,即只锁定索引本身,而不是范围。 3、不同场景下的临键锁会退化。 实例 事务1 start transaction;select SLEEP(4);…

    数据库 2025年12月5日
    000
  • MySQL命令行中如何修改MySQL密码

    方法一: mysql admin -u 用户名 -p 旧密码 passw 新密码 ‘u’为 username 的简称,‘p’为原 password 简称。 方法二: 我们先登录 MySQL 数据库。之后输入: mysql>set password for root@localhost = pa…

    数据库 2025年12月5日
    000
  • MySQL8如何设置自动创建时间和自动更新时间

    业务场景: 1、在数据库表中的数据,要求记录每一条新增数据的创建时间,时间格式要求明确至:年月日:时分秒。 2、在数据库表中的数据,要求记录每一条更新数据的更新时间,时间格式要求明确至:年月日:时分秒。 功能实现: 1、为每张业务表添加create_time 和update_time 字段,且将字段…

    数据库 2025年12月5日
    000
  • mysql InnoDB的四种锁定范围是什么

    1、记录锁,锁定索引中的记录。 2、间隙锁。 要么锁定索引记录中间的值,要么锁定第一个索引记录前面的值,要么锁定最后一个索引记录后面的值。 3、临键锁,是索引记录上的记录锁和索引记录前的间隙锁的组合。 4、插入意向锁,在insert操作中添加记录id的锁。 实例 — id 列为主键列或唯一索引列U…

    数据库 2025年12月5日
    000
  • MySQL中FROM_DAYS函数怎么用

    FROM_DAYS(date) SELECT FROM_DAYS(367) -> 0001-01-02 返回西元0年至今多少天的DATE值 以上就是MySQL中FROM_DAYS函数怎么用的详细内容,更多请关注创想鸟其它相关文章!

    数据库 2025年12月5日
    000
  • rocks mysql数据库多实例数据库配置的示例分析

    mysql数据库默认路径修改 启动httpd服务 mkdir -p /run/httpdsystemctl start httpd.service 1.什么是多实例? 在linux系统中代表:多个进程+多个线程+多个预分配内存结构 一般用来测试环境中,测试主从,高可用等。 多实例配置方案:(多个数据…

    数据库 2025年12月5日
    000
  • Linux怎样查看mysql密码

    相信很多小伙伴都经历过忘记密码,如果在Linux下忘记MySQL密码该怎么办? Linux查看mysql密码具体方法。 查看默认密码 grep ‘temporary password’ /var/log/mysqld.log 或者 cat /var/log/mysqld.log | grep ‘te…

    数据库 2025年12月5日
    000
  • MySQL数据库的基本操作实例分析

    一、MySQL简介 1、数据库管理软件分类 主要分为关系型和非关系型。 可以简单的理解为,关系型数据库需要有表结构,非关系型数据库是key-value存储的,没有表结构。 关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用。 非关系型…

    数据库 2025年12月5日
    000
  • mysql内连接查询实例分析

    1、分为隐式内连接查询和显示内连接查询,通过是否包含inner join关键字进行区别。 2、主表和从表中的数据都是满足连接条件则能够查询出来,不满足连接条件则不会查询出来。 实例 — 2.1 隐式内连接方式select *from t_category c, t_product p WHERE …

    数据库 2025年12月5日
    000
  • MySQL中binlog/redolog/undolog区别是什么

    MySQL binlog/redolog/undolog 的区别? 想和大家聊聊 innodb 中的锁机制,那么不可避免的要涉及到 mysql 的日志系统,binlog、redo log、undo log 等,看到有小伙伴总结的这三个日志还不错,赶紧拿来和各位小伙伴分享。 日志是mysql数据库的重…

    2025年12月5日 数据库
    000
  • phpstudy安装后mysql无法启动如何解决

    原因分析 我去网上查找phpstudy和mysql冲突的问题, 哦原来是 这两个mysql都占用的是3306端口, 而系统原来的mysql会开机启动(就是这里,会让原来的mysql作为服务开机启动监听)。那么当你打开phpstudy的时候, 便会再启动一个mysql服务,这个时候因为是同一个端口的关…

    2025年12月5日
    000
  • MySQL与PHP中的内置函数怎么用

    MySQL 内置函数 mysql 内置函数可以帮助我们更方便的处理表中的数据, 简化操作. 数学函数: 函数 描述 ABS()取绝对值SQRT()取根号MOD()取模FLOOR()返回不大于的最大整数值CELLING()返回不小于的最小整数值ROUND()四舍五入SIN()取正弦COS()取余弦 字…

    2025年12月5日
    000
  • 怎么在MySQL中设置时间

    MySQL支持多种时间格式,其中包括DATE、TIME、DATETIME和TIMESTAMP。这四种格式都有其特定的用途。 DATE格式表示日期,格式为“YYYY-MM-DD”,其中“YYYY”表示年份,“MM”表示月份,“DD”表示日期。 TIME格式表示时间,格式为“HH:MM:SS”,其中“H…

    数据库 2025年12月5日
    000
  • 如何安装和配置ThinkPHP开发环境?

    如何安装和配置thinkphp开发环境?首先,安装php 7.2+和web服务器(如xampp或wamp);其次,使用composer安装thinkphp框架;最后,配置应用和web服务器指向thinkphp的public目录。 在开始我们的ThinkPHP之旅前,让我们先回答一个关键问题:如何安装…

    2025年12月5日
    000
  • linux属于什么系统

    linux属于一种类UNIX操作系统。Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。 本文操作环境:red hat enterprise linux 7.4系统、thinkpad t4…

    2025年12月5日
    000
  • mysql左外连接查询的语法是什么

    1、以join左表为主表,显示主表的所有数据,并根据条件查询连接右表的数据。如果满足条件,则显示;如果不满足,则显示为null。 2、可以理解为在内部连接的基础上,确保左表的所有数据都显示。 语法 select 字段 from a left [outer] join b on 条件 实例 使用左连接…

    数据库 2025年12月5日
    000

发表回复

登录后才能评论
关注微信