mysql备份与恢复:完全备份,增量备份,基于位置点恢复,基于时间点恢复 MySQL数据库的编译安装过程 《MySQL 入门教程》第 28 篇 字符集与排序规则 PHP面试技巧 之 职场暗语知多少?! [Dubox]实测。还是原来的配方,还是一样的味道! 【剑指金九银十】程序员,如何做到不惑?(附四面拿到字节跳动offer全过程) 超厉害的阿里技术读物,1500页超全计算机系统底层解析宝典 【融中财经早报9.16】大数据杀熟行为10月1日起明令禁止 大数据时代,机器学习算法该如何升级? 怎么判断自己是否适合做程序员 一分钟告诉你什么是区块链 一个时代一个机会,DeFi的起点X-DeFi,如何玩转X-DeFi? RTX3080显卡已被用于挖矿!映众辟谣:工程师测试散热 2020-09-15 比特币相当于房地产,怎样利用比特币获得流动现金? 区块链安全事件与代码审计 fisco bcos solidity销毁合约,删除合约的方法 Linux 中 Golang 的安装和环境配置 Golang interface{} 转换为某个结构体 区块链知识系列 - Raft 共识 OpenHarmony开发者文档开源计划,快快加入吧 融合创新提升服务,大数据搭建信息网 长三角税收一体化按下“快进键” 河钢集团与海尔集团签署物联网生态战略合作协议 1一个拥有万物互联神话,让我们看物联网是如何蓬勃发展的? 重庆大数据产业研究院成立,首批专家服务团名单公布 百分点大数据技术团队:互联网舆情系统的架构实践 水泥大数据研究院郑建辉:四季度水泥价格仍有望冲击去年高位 中国物联网与绿色智慧城市发展论坛召开 欧普照明点亮智慧道路之光 Android & Kotlin:Retrofit + Hilt 实现 看妹子app Android - 控件抖动效果 DevEco studio 一直加载gradle android如何获取调试版及发布版安全码SHA1 Android手机获取IP地址的两种方法 Android Activity 启动过程详解(上) 思维破局:挣钱其实没那么难,关键是方式要对 大数据赋能全产业链 为市民提供“一杯好奶” 运用大数据实现节能减排精准化 2020最新拼多多Java面试版,五面拿到28K的Offer 中国电信(安徽)大数据产业园落户南岗科技园 打造华东区域云计算领头羊 深度解读!阿里腾讯滴滴字节首选,新一代大数据引擎Flink厉害在哪?附学习礼包 网络编程5:socket服务端和客户端代码实现 微信小程序 蓝牙重连异常 errCode:10004,errMsg:notifyBLECharacteristicValueChange:fail setNot 蓝桥杯--第八届省赛试题-电子钟程序设计 【TCP回声服务器】一篇文章帮助你看懂TCP! 关于国标GB28181流媒体协议视频平台EasyGBS设备无法接入平台的问题排查 机器学习16 -- Lifelong Learning 终生学习 Vuex中发送mock请求返回数据 JS 正则表达式详解 学习笔记 花了30分钟,给女朋友们写了个最近抖音很火的3D立体动态相册 这 16 个 CSS 伪类,助你提升布局效率!
您的位置:首页 >前端 >

mysql备份与恢复:完全备份,增量备份,基于位置点恢复,基于时间点恢复

理论介绍

数据备份的重要性数据库备份的分类常见的备份方法MySQL完全备份数据库完全备份分类数据库备份与恢复MySQL数据库完全备份与恢复mysqldump备份与恢复MySQL数据库增量备份恢复基于位置的恢复基于时间恢复

数据备份的重要性

●在生产环境中,数据的安全性至关重要

●任何数据的丢失都可能产生严重的后果

●造成数据丢失的原因:

程序错误认为操作失误运算错误磁盘故障灾难等

在这里插入图片描述

数据库备份的分类

●从物理与逻辑的角度,备份可分为:

物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份

物理备份方法:冷备份(脱机备份)︰是在关闭数据库的时候进行的热备份(联机备份)∶数据库处于运行状态,依赖于数据库的日志文件温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

●逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

●从数据库的备份策略角度,备份可分为

完全备份:每次对数据库进行完整的备份差异备份:备份自从上次完全备份之后被修改过的文件增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

常见的备份方法

●物理冷备

备份时数据库处于关闭状态,直接打包数据库文件备份速度快,恢复时也是最简单的

●专用备份工具mydump或mysqlhotcopy

mysqldump常用的逻辑备份工具mysqlhotcopy仅拥有备份MylSAM和ARCHIVE表

●启用二进制日志进行增量备份

进行增量备份,需要刷新二进制日志

●第三方工具备份

免费的MySQL热备份软件Percona XtraBackup

MySQL完全备份

■是对整个数据库、数据库结构和文件结构的备份

■保存的是备份完成时刻的数据库

■是差异备份与增量备份的基础

优点:缺点:备份与恢复操作简单方便数据存在大量的重复占用大量的备份空间备份与恢复时间长

数据库完全备份分类

■物理冷备份与恢复: 关闭MySQL数据库 使用tar命令直接打包数据库文件夹 直接替换现有MySQL目录即可

■mysqldump备份与恢复 MySQL自带的备份工具,可方便实现对MySQL的备份 可以将指定的库、表导出为SQL脚本 使用命令mysql导入备份的数据

数据库备份与恢复

MySQL数据库完全备份与恢复

(1)环境搭建

mysql> create database zz;Query OK, 1 row affected (0.00 sec)mysql> use auth;ERROR 1049 (42000): Unknown database 'auth'mysql> use zz;Database changedmysql> create table users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));Query OK, 0 rows affected (0.01 sec)mysql> insert into users(user_name,user_passwd) values('zhangsan', password('123456'));Query OK, 1 row affected, 1 warning (0.02 sec)mysql>insert into users values('lisi', password('123456')); Query OK, 1 row affected, 1 warning (0.00 sec)mysql> mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql|| performance_schema || sys|| zz |+--------------------+5 rows in set (0.00 sec)mysql> select * from zz.users;+-----------+-------------------------------------------+| user_name | user_passwd |+-----------+-------------------------------------------+| lisi| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || zhangsan| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-----------+-------------------------------------------+2 rows in set (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)

(2)物理冷备份 tar命令直接打包数据库文件夹

[root@localhost ~]# systemctl stop mysqld#在根下新建个backup目录[root@localhost ~]# mkdir /backup#/usr/local/mysql/data备份压缩[root@localhost ~]# tar zcf /backup/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/[root@localhost ~]# cd /backup/[root@localhost backup]# ll总用量 1280-rw-r--r-- 1 root root 1310300 9月14 06:24 mysql_all-2020-09-14.tar.gz

(3)模拟故障

[root@localhost backup]#cd ~[root@localhost backup]# mkdir /bak#将目录data数据移动到bak 里面去 [root@localhost backup]# mv /usr/local/mysql/data/ /bak/[root@localhost backup]# cd /usr/local/mysql/#进mysql目录查看data[root@localhost mysql]# ll####查看后data目录被移走 ,模拟故障成功总用量 64drwxr-xr-x2 mysql mysql4096 8月 4 19:19 bin-rw-r--r--1 mysql mysql 17987 9月13 2017 COPYING-rw-r--r--1 mysql mysql 17987 9月13 2017 COPYING-testdrwxr-xr-x2 mysql mysql55 8月 4 19:19 docsdrwxr-xr-x3 mysql mysql4096 8月 4 19:19 includedrwxr-xr-x4 mysql mysql 191 8月 4 19:19 libdrwxr-xr-x4 mysql mysql30 8月 4 19:19 mandrwxr-xr-x 10 mysql mysql4096 8月 4 19:20 mysql-test-rw-r--r--1 mysql mysql2478 9月13 2017 README-rw-r--r--1 mysql mysql2478 9月13 2017 README-testdrwxr-xr-x 28 mysql mysql4096 8月 4 19:20 sharedrwxr-xr-x2 mysql mysql90 8月 4 19:20 support-filesdrwxr-xr-x3 mysql mysql17 8月 4 19:19 usr ###data消失

(3)将备份的数据库恢复

[root@localhost backup]#cd ~####根目录新建restore 目录[root@localhost ~]# mkdir /restore#将备份数据库解压到 /restore目录下,看好时间节点时间节点不一样[root@localhost ~]# tar xzvf /backup/mysql_all-2018-08-12.tar.gz -C /restore/usr/local/mysql/data/usr/local/mysql/data/ibdata1usr/local/mysql/data/ib_logfile1usr/local/mysql/data/ib_logfile0.........省略........#将备份数据移动到到/usr/local/mysql中[root@localhost mysql]# mv /restore/usr/local/mysql/data/ /usr/local/mysql/[root@localhost ~]# cd /usr/local/mysql/[root@localhost mysql]# lldrwxr-x--- 6 mysql mysql 157 9月14 06:23 data[root@localhost mysql]# systemctl start mysqld [root@localhost mysql]# systemctl status mysqld[root@localhost mysql]# mysql -uroot -p -e 'select * from zz.users'Enter password: +-----------+-------------------------------------------+| user_name | user_passwd |+-----------+-------------------------------------------+| lisi| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || zhangsan| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-----------+-------------------------------------------+##数据恢复成功

mysqldump备份与恢复

■将指定的库、表、或全部的库导出为SQL脚本

■mysqldump备份需要和mysql进行数据交互,如果关闭mysql 则无法备份和恢复

mysqldump [选项] 库名 [表名1] [表名2] … > /备份路径/备份文件名mysqldump [选项] --databases 库名1 [库名2] … > /备份路径/备份文件名mysqldump [选项] --all-databases > /备份路径/备份文件名

需要的环境在上个列子中已经搭建,我们直接拿来用

(1)数据库与表备份为sql脚本

###备份数据路mysql中的user表,文件保存在当前操作目录下面[root@localhost /]# mysqldump -u root -p mysql user >mysql-user.sqlEnter password:####备份zz数据库 文件保存在当前操作目录下面[root@localhost /]# mysqldump -u root -p --databases zz >zz.sqlEnter password:[root@localhost ~]# ll总用量 12-rw-r--r--1 root root 5661 9月14 06:50 mysql-user.sql-rw-r--r--1 root root 2086 9月14 06:50 zz.sql

(2)表恢复操作 mysql [选项] [库名] [表名] < /备份路径/备份文件名

为了方便测试,我直接讲表导入新建的text库中

[root@localhost /]# mysql -u root -pEnter password:mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql|| performance_schema || sys|| zz |+--------------------+5 rows in set (0.00 sec) #新建数据库text ,等下导表用###mysql> create database text;mysql> exit[root@localhost opt]# mysql -u root -p text < mysql-user.sql Enter password: [root@localhost /]# mysql -u root -p -e 'show tables from text'Enter password:+----------------+| Tables_in_text |+----------------+| user |####导进去的表+----------------+

(3)库恢复操作 [root@localhost /]# mysql -u root -p -e ‘drop database auth’

######模拟故障删除zz数据库[root@localhost /]# mysql -u root -p -e 'drop database zz' [root@localhost ~]# mysql -u root -p -e 'show databases'Enter password: +--------------------+| Database |+--------------------+| information_schema || mysql|| performance_schema || sys|| text |+--------------------+####下面开始恢复[root@localhost ~]# mysql -u root -p < zz.sql[root@localhost ~]# mysql -u root -p -e 'show databases'Enter password: +--------------------+| Database |+--------------------+| information_schema || mysql|| performance_schema || sys|| text || zz |##导进去的数据库zz+--------------------+##再看下表中数据是否还在[root@localhost ~]# mysql -uroot -p -e 'select * from zz.users'Enter password: +-----------+-------------------------------------------+| user_name | user_passwd |+-----------+-------------------------------------------+| lisi| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || zhangsan| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-----------+-------------------------------------------+

MySQL数据库增量备份恢复

■增量备份的特点: 与完全备份完全不同,增量备份没有重复数据,备份量不大,时间短;但其恢复麻烦,需要上次完成完全备份及备份之后的所有增量备份才能恢复。

■MySQL数据库二进制日志对备份的意义: 二进制日志保存了所有更新或者可能更新数据的操作。二进制日志在启动mysql服务器后开始记录,并在文件达到二进制日志所设置的最大值或者接受到flush logs命令后重新创建新的日志文件,生成二进制的文件序列,并及时把这些日志文件保存到安全的存储位置,即可完成一个时间段的增量备份

(1)首先搭建环境

[root@localhost mysql]# vi /etc/my.cnf[mysqld]找到这个模块,在最后一个=下添加log-bin=/usr/local/mysql/data/mysql-bin#这个地方开启二进制日志功能[root@localhost ~]# systemctl restart mysqld[root@localhost ~]# ll /usr/local/mysql/data/-rw-r----- 1 mysql mysql154 9月14 07:05 mysql-bin.000001-rw-r----- 1 mysql mysql 39 9月14 07:05 mysql-bin.index[root@localhost opt]# mysql -u root -pEnter password: mysql> create database client;Query OK, 1 row affected (0.01 sec)mysql> use client;mysql> create table info(身份证 char(20) not null,姓名 char(20) not null,姓别 char(4),用户ID号 char(10) not null,资费 int(10));mysql> insert into info values('000006','张三','男','016','10');mysql> insert into info values('000007','李四','女','017','91');mysql> insert into info values('000008','王五','女','018','23');mysql> select * from info;####查看当前数据库binlog文件mysql> show master logs; +------------------+-----------+| Log_name | File_size |+------------------+-----------+| mysql-bin.000001 |1492 |+------------------+-----------+1 row in set (0.00 sec)##进行一次完全备份##备份前需要将数据库加锁,防止数据在备份时写入。mysql> flush tables with read lock;mysql> exitBye[root@localhost ~]# mkdir /mysql_bak[root@localhost opt]# mysqldump -u root -p client info >/mysql_bak/client_userinfo-$(date +%F).sql [root@localhost ~]# ll /mysql_bak/-rw-r--r-- 1 root root 2055 9月13 23:10 client_userinfo-2019-09-13.sql##将下面的操作存入新的 mysql-bin 日志文件,直到下一个新的 mysql-bin出现[root@localhost mysql_bak]# mysqladmin -u root -p flush-logs[root@localhost ~]#ll /usr/local/mysql/data/-rw-r----- 1 mysql mysql 1539 9月13 23:11 mysql-bin.000001-rw-r----- 1 mysql mysql154 9月13 23:13 mysql-bin.000002-rw-r----- 1 mysql mysql 78 9月13 23:11 mysql-bin.index

flush tables with read lock;这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行

(2)继续录入新的内容并进行增量备份

[root@localhost mysql_bak]# mysql -u root -pEnter password: mysql> unlock tables; #######解除表锁。Query OK, 0 rows affected (0.00 sec)mysql> use client;mysql> insert into info values('000009','赵六','男','019','37');mysql> insert into info values('000010','孙七','男','020','36');mysql> select * from info;+-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 || 000009| 赵六 | 男 | 019 | 37 || 000010| 孙七 | 男 | 020 | 36 |+-----------+--------+--------+-------------+--------+5 rows in set (0.00 sec)mysql> exitBye##将下面的操作再次生成新的 mysql-bin 日志文件,上面所有的操作都在000002里面[root@localhost mysql_bak]# mysqladmin -u root -p flush-logsEnter password: [root@localhost ~]# ll /usr/local/mysql/data-rw-r----- 1 mysql mysql 1539 9月13 23:11 mysql-bin.000001-rw-r----- 1 mysql mysql797 9月13 23:13 mysql-bin.000002-rw-r----- 1 mysql mysql154 9月13 23:15 mysql-bin.000003[root@localhost ~]# cp /usr/local/mysql/data/mysql-bin.000002 /mysql_bak/

(3)模拟操作失误 删除info表

[root@localhost mysql_bak]# mysql -u root -p -e 'drop table client.user_info'Enter password: [root@localhost mysql_bak]# mysql -u root -p -e 'select * from client.user_info'Enter password: ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist

(4)恢复操作

[root@localhost ~]# mysql -u root -p client < /mysql_bak/client_userinfo-2020-09-13.sql Enter password: [root@localhost mysql_bak]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 |+-----------+--------+--------+-------------+--------+## /mysql_bak/这个路径我做了cp,你也可以/usr/local/mysql/data/[root@localhost ~]# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002 |mysql -u root -pEnter password: [root@localhost ~]#mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 || 000009| 赵六 | 男 | 019 | 37 || 000010| 孙七 | 男 | 020 | 36 |+-----------+--------+--------+-------------+--------+

基于位置的恢复

(1)恢复数据到指定位置 mysqlbinlog --stop-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码

环境上面已经搭建完毕

#删除表再查看有没有这个表[root@localhost mysql_bak]# mysql -uroot -p -e 'drop table client.info'Enter password:[root@localhost mysql_bak]# mysql -uroot -p -e 'select * from client.info'Enter password: ERROR 1146 (42S02) at line 1: Table 'client.info' doesn't exist[root@localhost mysql_bak]# mysql -u root -p client < /mysql_bak/client_info-2018-08-14.sql Enter password:[root@localhost ~]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 |+-----------+--------+--------+-------------+--------+
##使用这条命令可以将无规则乱码的二进制文件编排[root@localhost ~]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /mysql_bak/mysql-bin.000002# at 293#1808156:07:34 server id 1end_log_pos 359 CRC32 0x3ccdc62eTable_map: `client`.`user_info` mapped to number 221# at 359#1808156:07:34 server id 1end_log_pos 421 CRC32 0x55f72453Write_rows: table id 221 flags: STMT_END_F### INSERT INTO `client`.`user_info`### SET### @1='000009'### @2='赵六'### @3='男'### @4='019'### @5=37# at 421#1808156:07:34 server id 1end_log_pos 452 CRC32 0x45fd2af6Xid = 50COMMIT/*!*/;# at 452#1808156:07:39 server id 1end_log_pos 517 CRC32 0xa553503bAnonymous_GTIDlast_committed=1sequence_number=2rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;# at 517#1808156:07:39 server id 1end_log_pos 591 CRC32 0x02ad5ee9Query thread_id=7 exec_time=0 error_code=0SET TIMESTAMP=1534284459/*!*/;BEGIN/*!*/;# at 591#1808156:07:39 server id 1end_log_pos 657 CRC32 0x3f478909Table_map: `client`.`user_info` mapped to number 221# at 657#1808156:07:39 server id 1end_log_pos 719 CRC32 0xb478e1c5Write_rows: table id 221 flags: STMT_END_F### INSERT INTO `client`.`user_info`### SET### @1='000010'### @2='孙七'### @3='男'### @4='020'### @5=36# at 719#1808156:07:39 server id 1end_log_pos 750 CRC32 0xe681426bXid = 51COMMIT/*!*/;# at 750#1808156:07:59 server id 1end_log_pos 797 CRC32 0xbc922301Rotate to mysql-bin.000003pos: 4SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;DELIMITER ;

(2)#如果我只想要赵六的数据恢复,该怎么办?找到赵六结束的at 数字,不要紧挨着赵六的at,要隔一个最好

通过上面的配置文件,我们看到赵六下面的 at 517,那就以这个为结束点,恢复备份

[root@localhost ~]# mysqlbinlog --no-defaults --stop-position='517' /mysql_bak/mysql-bin.000002 |mysql -u root -p[root@localhost ~]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 || 000009| 赵六 | 男 | 019 | 37 |+-----------+--------+--------+-------------+--------+

(3)#如果我只想让孙七的数据数据恢复,怎么办?找到孙七开始前的at 数字,不要紧挨着孙七的at,要隔一个最好

通过上面的配置文件,我们看到孙七上面的 at 657,那就以这个为开始点,恢复备份

[root@localhost ~]# mysql -u root -p -e 'drop table client.info'Enter password: [root@localhost ~]# mysql -u root -p client < /mysql_bak/client_info-2018-08-15.sql Enter password: [root@localhost ~]# mysqlbinlog --no-defaults --start-position='657' /mysql_bak/mysql-bin.000002 |mysql -u root -p####操作的节点附近即可Enter password: [root@localhost ~]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 || 000010| 孙七 | 男 | 020 | 36 |+-----------+--------+--------+-------------+--------+

总结:

基于位置恢复的操作,节点不要选择太靠近操作的节点,否则容易恢复失败。

基于时间恢复

跟上面差不多,我怕么可以看到at 517下一行有 180815 6:07:39 ## 基于这个时间点,可以以这个时间为结束时间,恢复这个时间之前的数据

也可以不要之前的数据,以这个时间点为开始,恢复这个时间之后的数据 (1)只需要赵六的

[root@localhost ~]# mysql -u root -p -e 'drop table client.info'Enter password: [root@localhost ~]# mysql -u root -p client < /mysql_bak/client_info-2018-08-15.sql Enter password: [root@zeng ~]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 |+-----------+--------+--------+-------------+--------+########时间戳不要弄错了[root@localhost ~]# mysqlbinlog --no-defaults --stop-datetime='2018-8-15 6:07:39' /mysql_bak/mysql-bin.000002 |mysql -u root -pEnter password: [root@localhost ~]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 || 000009| 赵六 | 男 | 019 | 37 |+-----------+--------+--------+-------------+--------+

(3)只需要孙七的的

[root@localhost ~]# mysql -u root -p -e 'drop table client.info'Enter password: [root@localhost ~]# mysql -u root -p client < /mysql_bak/client_info-2018-08-15.sql Enter password: ###时间戳不要弄错了,根据的你的日志文件来[root@localhost ~]# mysqlbinlog --no-defaults --start-datetime='2018-8-15 15:33:48' /mysql_bak/mysql-bin.000002 |mysql -u root -pEnter password: [root@localhost ~]# mysql -u root -p -e'select * from client.info'Enter password: +-----------+--------+--------+-------------+--------+| 身份证| 姓名 | 姓别 | 用户ID号| 资费 |+-----------+--------+--------+-------------+--------+| 000006| 张三 | 男 | 016 | 10 || 000007| 李四 | 女 | 017 | 91 || 000008| 王五 | 女 | 018 | 23 || 000010| 孙七 | 男 | 020 | 36 |+-----------+--------+--------+-------------+--------+

总结: 如果你学了我的操作手法,那么生产环境严格按照此要求来

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。