MySQL二进制安装&数据库备份和恢复

1. 二进制格式mysql安装

  • 二进制包下载路径
//官网地址(历史版本地址):
https://downloads.mysql.com/archives/community/ 
//5.7版本下载链接
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
  • 安装MySQL
//下载好的包在系统中
[root@wyz ~]# ls
anaconda-ks.cfg  mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

//创建用户和组
[root@wyz ~]# groupadd -r mysql
[root@wyz ~]# useradd -M -s /sbin/nologin -g mysql mysql

//解压软件至/usr/local/
[root@wyz ~]# tar xf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@wyz ~]# cd /usr/local/
[root@wyz local]# ln -sv mysql-5.7.25-linux-glibc2.12-x86_64/ mysql
‘mysql’ -> ‘mysql-5.7.25-linux-glibc2.12-x86_64///修改目录/usr/local/mysql的属主属组
[root@wyz local]# chown -R mysql.mysql /usr/local/mysql
[root@wyz local]# ll /usr/local/mysql -d
lrwxrwxrwx. 1 mysql mysql 36 Apr 30 22:00 /usr/local/mysql -> mysql-5.7.25-linux-glibc2.12-x86_64/

//添加环境变量
[root@wyz local]# ls /usr/local/mysql
bin  COPYING  docs  include  lib  man  README  share  support-files
[root@wyz local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@wyz local]# . /etc/profile.d/mysql.sh
[root@wyz local]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

//建立数据存放目录
root@wyz local]# mkdir /opt/data
[root@wyz local]# chown -R mysql.mysql /opt/data/
[root@wyz local]# ll /opt/
total 0
drwxr-xr-x. 2 mysql mysql 6 Apr 30 22:03 data

//初始化数据库
[root@wyz local]#  /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/
2019-04-30T14:04:30.925526Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-30T14:04:31.193172Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-30T14:04:31.283165Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-30T14:04:31.393165Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e02a3f07-6b50-11e9-a521-000c29e933fb.
2019-04-30T14:04:31.416207Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-30T14:04:31.417499Z 1 [Note] A temporary password is generated for root@localhost: V,/PYqneg2aV
//请注意,这个命令的最后会生成一个临时密码,此处密码是:V,/PYqneg2aV
//一定要记住这个密码,因为一会登录时会用到

//生成配置文件
[root@wyz local]# cat > /etc/my.cnf <<EOF
> [mysqld]basedir = /usr/local/mysql
> ^C^C
[root@wyz local]# cat > /etc/my.cnf <<EOF
> [mysqld]
> basedir = /usr/local/mysql
> datadir = /opt/data
> socket = /tmp/mysql.sock
> port = 3306
> pid-file = /opt/data/mysql.pid
> user = mysql
> skip-name-resolve
> EOF

[root@wyz local]# cat /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve

//配置服务启动脚本
[root@wyz local]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@wyz local]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
[root@wyz local]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld

//启动mysql
[root@wyz local]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/opt/data/wyz.err'.
 SUCCESS!
 [root@wyz local]# ps -ef|grep mysql
root       1560      1  0 22:09 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/data --pid-file=/opt/data/mysql.pid
mysql      1738   1560  2 22:09 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/opt/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=wyz.err --pid-file=/opt/data/mysql.pid --socket=/tmp/mysql.sock --port=3306
root       1768   1446  0 22:10 pts/0    00:00:00 grep --color=auto mysql
[root@wyz local]# ss -antl
State      Recv-Q Send-Q             Local Address:Port                            Peer Address:Port              
LISTEN     0      128                            *:22                                         *:*                  
LISTEN     0      100                    127.0.0.1:25                                         *:*                  
LISTEN     0      128                           :::22                                        :::*                  
LISTEN     0      100                          ::1:25                                        :::*                  
LISTEN     0      80                            :::3306                                      :::*     

//使用临时密码登录,且修改密码
[root@wyz local]# /usr/local/mysql/bin/mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set password = password('wyz123!');
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql>

2. mysql配置文件

mysql的配置文件为/etc/my.cnf

配置文件查找次序:若在多个配置文件中均有设定,则最后找到的最终生效

/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

mysql常用配置文件参数:

参数说明
port = 3306设置监听端口
socket = /tmp/mysql.sock指定套接字文件位置
basedir = /usr/local/mysql指定MySQL的安装路径
datadir = /data/mysql指定MySQL的数据存放路径
pid-file = /data/mysql/mysql.pid指定进程ID文件存放路径
user = mysql指定MySQL以什么用户的身份提供服务
skip-name-resolve禁止MySQL对外部连接进行DNS解析
使用这一选项可以消除MySQL进行DNS解析的时间。
若开启该选项,则所有远程主机连接授权都要使用IP地址方
式否则MySQL将无法正常处理连接请求

3. mysql数据库备份与恢复

3.1 数据库常用备份方案

数据库备份方案:

  • 全量备份
  • 增量备份
  • 差异备份
备份方案特点
全量备份全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。
数据恢复快。
备份时间长
增量备份增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份
与前一次相比增加和者被修改的文件。这就意味着,第一次增量备份的对象
是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量
备份后所产生的增加和修改的文件,如此类推。
没有重复的备份数据
备份时间短
恢复数据时必须按一定的顺序进行
差异备份备份上一次的完全备份后发生变化的所有文件。
差异备份是指在一次全备份后到进行差异备份的这段时间内
对那些增加或者修改文件的备份。在进行恢复时,
我们只需对第一次全量备份和最后一次差异备份进行恢复。

3.2 mysql备份工具mysqldump

3.2.1 mysqldump
//语法:
    mysqldump [OPTIONS] database [tables ...]
    mysqldump [OPTIONS] --all-databases [OPTIONS]
    mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
    
//常用的OPTIONS:
    -uUSERNAME      //指定数据库用户名
    -hHOST          //指定服务器主机,请使用ip地址
    -pPASSWORD      //指定数据库用户的密码
    -P#             //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3307

//备份整个数据库(全备)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wyz                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use wyz
Database changed
mysql> show tables;
+---------------+
| Tables_in_wyz |
+---------------+
| student       |
| wangyizhen    |
+---------------+
2 rows in set (0.00 sec)

//备份所有数据库
[root@wyz ~]# ls
anaconda-ks.cfg
[root@wyz ~]# mysqldump -uroot -p --all-databases > all-201904301423.sql
Enter password: 
[root@wyz ~]# ls
all-201904301423.sql  anaconda-ks.cfg

//备份wyz库的wangyizhne表和student表
[root@wyz ~]# mysqldump -uroot -p wyz wangyizhen student > table-201904301425.sql
Enter password: 
[root@wyz ~]# ls
all-201904301423.sql  anaconda-ks.cfg  table-201904301425.sql

//备份wyz库
[root@wyz ~]# mysqldump -uroot -p --databases wyz> wang-201904301427.sql
Enter password: 
[root@wyz ~]# ls
all-201904301423.sql  anaconda-ks.cfg  table-201904301425.sql  wang-201904301427.sq

//模拟误删wangqingge数据库
mysql> drop database wyz;
Query OK, 2 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
3.2.2 xtrabackup备份命令

Xtrabackup

  • percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库进行热备的工具

特点:

  • 备份还原过程快速、可靠
  • 备份过程不会打断正在执行的事务
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动实现备份检验
  • 开源,免费

Xtrabackup2.2版之前包括4个可执行文件:

  • Innobackupex: perl 脚本
  • Xtrabackup: C/C++ 编译的二进制
  • Xbcrypt:加解密
  • Xbstream:支持并发写的流文件格式

xtrabackup 是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 mysqld server 没有交互;innobackupex 脚本用来备份非InnoDB 表,同时会调用 xtrabackup 命令来备份 InnoDB 表,还会和 mysqld server 发送命令进行交互,如加读锁(FTWRL)、获取位点(SHOW SLAVESTATUS)等。即innobackupex是在xtrabackup 之上做了一层封装实现的。

虽然目前一般不用 MyISAM 表,只是mysql 库下的系统表是MyISAM 的,因此备份基本都通过 innobackupex 命令进行

xtrabackup的特性:

使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命名的目录中,在备份时,innobackupex还会在备份目录中创建如下文件:

  • xtrabackup_checkpoints:备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息,每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的
  • xtrabackup_binlog_info:mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置
  • xtrabackup_binlog_pos_innodb:二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当position
  • xtrabackup_binary:备份中用到的xtrabackup的可执行文件
  • backup-my.cnf:备份命令用到的配置选项信息在使用innobackupex进行备份时,还可以使用–no-timestamp选项来阻止命令自动创建一个以时间命名的目录;innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据

xtrabackup用法

备份:innobackupex [option] BACKUP-ROOT-DIR
选项说明:
--user:该选项表示备份账号
--password:该选项表示备份的密码
--host:该选项表示备份数据库的地址
--databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表
--defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置
--incremental:该选项表示创建一个增量备份,需要指定--incremental-
basedir
--incremental-basedir:该选项表示接受了一个字符串参数指定含有full backup的目录为增量备份的base目录,与--incremental同时使用
--incremental-dir:该选项表示增量备份的目录
--include=name:指定表名,格式:databasename.tablename
Prepare:innobackupex --apply-log [option] BACKUP-DIR
选项说明:
--apply-log:一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory:该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G
--defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置
-export:表示开启可导出单独的表之后再导入其他Mysql中
--redo-only:这个选项在prepare base full backup,往其中merge增量备份时候使用
还原:innobackupex --copy-back [选项] BACKUP-DIR
innobackupex --move-back [选项] [--defaults-group=GROUP-NAME] BACKUP-DIR
选项说明:
--copy-back:做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir
--move-back:这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本

注意事项
1.datadir目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则–copy-backup选项不会覆盖
2.在restore之前,必须shutdown MySQL实例,你不能将一个运行中的实例restore到datadir目录中
3.由于文件属性会被保留,大部分情况下你需要在启动实例之前将文件的属主改为mysql,这些文件将属于创建备份的用户chown -R mysql:mysql /data/mysql以上需要在用户调用innobackupex之前完成–force-non-empty-directories:指定该参数时候,使得innobackupex --copy-back或–move-back选项转移文件到非空目录,已存在的文件不会被覆盖。如果–copy-back和–move-back文件需要从备份目录拷贝一个在datadir已经存在的文件,会报错失败!

3.3 mysql数据恢复

//恢复wyz数据库
[root@wyz ~]# ls
all-201904301423.sql  anaconda-ks.cfg  table-201904301425.sql  wang-201904301427.sql
[root@wyz ~]# mysql -uroot -p < all-201904301423.sql 
Enter password: 
[root@wyz ~]# mysql -uroot -p -e 'show databases;'
Enter password: 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wyz                |
+--------------------+

//恢复wyz库的wangyizhne表和student表
mysql> use wyz;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> source table-201904301425.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)
....
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+---------------+
| Tables_in_wyz |
+---------------+
| student       |
| wangyizhen    |
+---------------+
2 rows in set (0.00 sec)

3.4 差异备份与恢复

3.4.1. mysql差异备份

开启MySQL服务器的二进制日志功能

[root@wyz ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /tmp/mysql.pid
user = mysql
skip-name-resolve

server-id=1				//设置服务器标识符
log-bin=mysql_bin		//开启二进制日志功能

[root@wyz ~]# vim /etc/my.cnf
[root@wyz ~]# service mysqld restart
Shutting down MySQL.... SUCCESS! 
Starting MySQL. SUCCESS! 

对数据库进行完全备份

[root@wyz ~]# mysql -uroot -pwyz123!
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wyz                |
+--------------------+
5 rows in set (0.00 sec)

mysql> show tables;
+---------------------+
| Tables_in_wyz       |
+---------------------+
| student             |
| teacher             |
+---------------------+
2 rows in set (0.00 sec)

mysql> select * from student;
+----+---------+
| id | name    |
+----+---------+
|  1 | leo     |
|  2 | natasha |
|  3 | tonny   |
+----+---------+
3 rows in set (0.01 sec)

mysql> select * from teacher;
+----+---------+
| id | name    |
+----+---------+
|  1 | leo     |
|  2 | natasha |
|  3 | tor     |
+----+---------+
3 rows in set (0.00 sec)

//完全备份
[root@wyz ~]# mysqldump -uroot -pwyz123! --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > wang-201904301500.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@cl ~]# ls
anaconda-ks.cfg        mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
wang-201904301500.sql

//增加新内容
mysql> use wyz;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert teacher values(1,'jerry'),(2,'kiso');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from teacher;
+----+---------+
| id | name    |
+----+---------+
|  1 | leo     |
|  2 | natasha |
|  3 | tor     |
|  1 | jerry   |
|  2 | kiso    |
+----+---------+
5 rows in set (0.00 sec)

模拟误删数据

[root@wyz ~]# mysql -uroot -pwyz123! -e 'drop database wyz'
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wyz ~]# mysql -uroot -pwyz123! -e 'show databases'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
[root@WYZ ~]# ll /opt/data/
total 132944
-rw-r-----. 1 mysql mysql       56 May  2 11:44 auto.cnf
-rw-r-----. 1 mysql mysql      613 May  2 12:07 mysql_bin.000002
-rw-r-----. 1 mysql mysql       16 May  2 12:03 mysql_bin.index
-rw-r-----. 1 mysql mysql    12587 May  2 11:54 mysql.err
-rw-r-----. 1 mysql mysql      349 May  2 11:54 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 May  2 12:07 ibdata1
-rw-r-----. 1 mysql mysql 50331648 May  2 12:07 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 May  2 11:44 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 May  2 12:03 ibtmp1
drwxr-x---. 2 mysql mysql     4096 May  2 11:44 mysql
-rw-r-----. 1 mysql mysql        5 May  2 11:54 mysql.pid
drwxr-x---. 2 mysql mysql     8192 May  2 11:44 performance_schema
drwxr-x---. 2 mysql mysql     8192 May  2 11:44 sys
[root@cl ~]# mysqladmin -uroot -pcljhfy flush-logs  //刷新创建新的二进制日志
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
[root@cl ~]# ll /opt/data/
total 132948
-rw-r-----. 1 mysql mysql       56 May  2 11:44 auto.cnf
-rw-r-----. 1 mysql mysql      657 May  2 12:08 mysql_bin.000002
-rw-r-----. 1 mysql mysql      154 May  2 12:08 mysql_bin.000003
-rw-r-----. 1 mysql mysql       32 May  2 12:08 mysql_bin.index
-rw-r-----. 1 mysql mysql    12587 May  2 11:54 mysql.err
-rw-r-----. 1 mysql mysql      349 May  2 11:54 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 May  2 12:07 ibdata1
-rw-r-----. 1 mysql mysql 50331648 May  2 12:07 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 May  2 11:44 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 May  2 12:03 ibtmp1
drwxr-x---. 2 mysql mysql     4096 May  2 11:44 mysql
-rw-r-----. 1 mysql mysql        5 May  2 11:54 mysql.pid
drwxr-x---. 2 mysql mysql     8192 May  2 11:44 performance_schema
drwxr-x---. 2 mysql mysql     8192 May  2 11:44 sys
[root@wyz ~]# mysql -uroot -pwyz123! < chen-201904301500.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@wyz ~]# mysql -uroot -pwyz123! -e 'show databases'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wyz                |
+--------------------+
[root@wyz ~]# mysql -uroot -pwyz123! -e 'select * from wyz.teacher'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+---------+
| id | name    |
+----+---------+
|  1 | leo     |
|  2 | natasha |
|  3 | tor     |
+----+---------+

3.4.2. mysql差异备份恢复
//检查误删数据库的位置在什么地方
mysql> show binlog events in 'mysql_bin.000002';
+---------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+---------------+-----+----------------+-----------+-------------+---------------------------------------+
| cl_bin.000002 |   4 | Format_desc    |        16 |         123 | Server ver: 5.7.22-log, Binlog ver: 4 |
| cl_bin.000002 | 123 | Previous_gtids |        16 |         154 |                                       |
| cl_bin.000002 | 154 | Anonymous_Gtid |        16 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| cl_bin.000002 | 219 | Query          |        16 |         292 | BEGIN                                 |
| cl_bin.000002 | 292 | Table_map      |        16 |         387 | table_id: 113 (wyz.teacher)     |
| cl_bin.000002 | 387 | Write_rows     |        16 |         423 | table_id: 113 flags: STMT_END_F       |
| cl_bin.000002 | 423 | Xid            |        16 |         442 | COMMIT /* xid=485 */                  |
| cl_bin.000002 | 442 | Anonymous_Gtid |        16 |         521 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| cl_bin.000002 | 521 | Query          |        16 |         612 | drop database wyz               |
| cl_bin.000002 | 612 | Rotate         |        16 |         657 | mysql_bin.000003;pos=4                   |
+---------------+-----+----------------+-----------+-------------+---------------------------------------+
10 rows in set (0.00 sec)

//使用mysqlbinlog恢复差异备份
[root@wyz ~]# mysqlbinlog --stop-position=506 /opt/data/mysql_bin.000002 |mysql -uroot -pwyz123!
mysql: [Warning] Using a password on the command line interface can be insecure.

[root@wyz ~]# mysql -uroot -pwyz123! -e 'select * from wyz.teacher'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+---------+
| id | name    |
+----+---------+
|  1 | leo     |
|  2 | natasha |
|  3 | tor     |
|  1 | jerry   |
|  2 | kiso    |
+----+---------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值