1. 二进制格式mysql安装

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
下载二进制格式的mysql软件包
[root@wenhs5479 ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.25-linux-glibc2.12-x86_64.tar

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

解压软件至/usr/local/
[root@wenhs5479 ~]# tar xf mysql-5.7.25-linux-glibc2.12-x86_64.tar -C /usr/local/
[root@wenhs5479 ~]# ls /usr/local/
apache    games    mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
apr       include  mysql-test-5.7.25-linux-glibc2.12-x86_64.tar.gz
apr-util  lib      sbin
bin       lib64    share
etc       libexec  src
[root@wenhs5479 ~]# tar xf /usr/local/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@wenhs5479 ~]# ls /usr/local/
apache    lib64
apr       libexec
apr-util  mysql-5.7.25-linux-glibc2.12-x86_64
bin       mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
etc       mysql-test-5.7.25-linux-glibc2.12-x86_64.tar.gz
games     sbin
include   share
lib       src
[root@wenhs5479 ~]# cd /usr/local/
[root@wenhs5479 local]# ln -sv mysql-5.7.25-linux-glibc2.12-x86_64/ mysql
"mysql" -> "mysql-5.7.25-linux-glibc2.12-x86_64/"
[root@wenhs5479 local]# ll
总用量 658620
drwxr-xr-x. 13 root root        152 4月  29 09:08 apache
drwxr-xr-x.  6 root root         58 4月  29 09:06 apr
drwxr-xr-x.  5 root root         43 4月  29 09:07 apr-util
drwxr-xr-x.  2 root root          6 4月  11 2018 bin
drwxr-xr-x.  2 root root          6 4月  11 2018 etc
drwxr-xr-x.  2 root root          6 4月  11 2018 games
drwxr-xr-x.  2 root root          6 4月  11 2018 include
drwxr-xr-x.  2 root root          6 4月  11 2018 lib
drwxr-xr-x.  2 root root          6 4月  11 2018 lib64
drwxr-xr-x.  2 root root          6 4月  11 2018 libexec
lrwxrwxrwx.  1 root root         36 4月  29 11:59 mysql -> mysql-5.7.25-linux-glibc2.12-x86_64/
drwxr-xr-x.  9 root root        129 4月  29 11:58 mysql-5.7.25-linux-glibc2.12-x86_64
-rw-r--r--.  1 7161 31415 644862820 12月 21 19:23 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
-rw-r--r--.  1 7161 31415  29556980 12月 21 19:21 mysql-test-5.7.25-linux-glibc2.12-x86_64.tar.gz
drwxr-xr-x.  2 root root          6 4月  11 2018 sbin
drwxr-xr-x.  5 root root         49 3月   6 20:35 share
drwxr-xr-x.  5 root root        145 4月  29 09:06 src

修改目录/usr/local/mysql的属主属组
[root@wenhs5479 ~]# chown -R mysql.mysql /usr/local/mysql
[root@wenhs5479 ~]# ll /usr/local/mysql -d
lrwxrwxrwx. 1 mysql mysql 36 4月  29 11:59 /usr/local/mysql -> mysql-5.7.25-linux-glibc2.12-x86_64/

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

建立数据存放目录
[root@wenhs5479 ~]# mkdir /opt/data
[root@wenhs5479 ~]# chown -R mysql.mysql /opt/data/
[root@wenhs5479 ~]# ll /opt/
总用量 0
drwxr-xr-x. 2 mysql mysql 6 4月  29 12:07 data
drwxr-xr-x. 2 root  root  6 10月 31 03:17 rh

初始化数据库
[root@wenhs5479 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/
2019-04-29T04:25:29.411729Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-29T04:25:29.801636Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-29T04:25:29.881540Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-29T04:25:29.952437Z 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: d23d56a4-6a36-11e9-af12-000c298a2a2e.
2019-04-29T04:25:29.953823Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-29T04:25:29.955744Z 1 [Note] A temporary password is generated for root@localhost: gQBy9Sq(dr>h
请注意,这个命令的最后会生成一个临时密码,此处密码是gQBy9Sq(dr>h
再次注意,这个密码是随机的,你的不会跟我一样,一定要记住这个密码,因为一会登录时会用到

生成配置文件
[root@wenhs5479 ~]# 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@wenhs5479 ~]# 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@wenhs5479 ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@wenhs5479 ~]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
[root@wenhs5479 ~]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld

启动mysql
[root@wenhs5479 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/opt/data/wenhs5479.err'.
 SUCCESS! 
[root@wenhs5479 ~]# ps -ef|grep mysql
root      90916      1  0 13:55 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/data --pid-file=/opt/data/mysql.pid
mysql     91094  90916  2 13:55 pts/1    00:00:00 /usr/local/mysql/binmysqld --basedir=/usr/local/mysql --datadir=/opt/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=wenhs5479.err --pid-file=/opt/data/mysql.pid --socket=/tmp/mysql.sock --port=3306
root      91132  53676  0 13:55 pts/1    00:00:00 grep --color=auto mysql
[root@wenhs5479 ~]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128     *:111                 *:*                  
LISTEN      0      5      192.168.122.1:53                  *:*                  
LISTEN      0      128     *:22                  *:*                  
LISTEN      0      128    127.0.0.1:631                 *:*                  
LISTEN      0      100    127.0.0.1:25                  *:*                  
LISTEN      0      128    127.0.0.1:6010                *:*                  
LISTEN      0      80     :::3306               :::*                  
LISTEN      0      128    :::111                :::*                  
LISTEN      0      128    :::80                 :::*                  
LISTEN      0      128    :::22                 :::*                  
LISTEN      0      128       ::1:631                :::*                  
LISTEN      0      100       ::1:25                 :::*                  
LISTEN      0      128       ::1:6010               :::*

修改密码
使用临时密码登录
[root@wenhs5479 ~]# /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>

设置新密码
mysql> set password = password('jbgsn123!');
Query OK, 0 rows affected, 1 warning (0.00 sec)

2. mysql配置文件

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

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

1
/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
配置免密登录
[root@wenhs5479 ~]# cat >.my.cnf <<EOF
> [client]
> user=root
> password=jbgsn123!
> EOF
[root@wenhs5479 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.25 MySQL Community Server (GPL)

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>

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
语法:
    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                |
| wenhs              |
+--------------------+
5 rows in set (0.00 sec)

mysql> use wenhs;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_wenhs |
+-----------------+
| student         |
| teacher         |
+-----------------+
2 rows in set (0.00 sec)

mysql> exit
Bye
[root@wenhs5479 ~]# mysqldump -uroot -p -hlocalhost --all-databases >all-$(date +%F_%T).sql
Enter password: 
[root@wenhs5479 ~]# ls
all-2019-04-29_14:44:04.sql              公共  下载
anaconda-ks.cfg                          模板  音乐
apache                                   视频  桌面
initial-setup-ks.cfg                     图片
mysql-5.7.25-linux-glibc2.12-x86_64.tar  文档

备份wenhs库的student表和teacher表
[root@wenhs5479 ~]# mysqldump -uroot -p -hlocalhost wenhs student teacher >table-$(date +%F_%T).sql
Enter password: 
[root@wenhs5479 ~]# ls
all-2019-04-29_14:44:04.sql              模板
anaconda-ks.cfg                          视频
apache                                   图片
initial-setup-ks.cfg                     文档
mysql-5.7.25-linux-glibc2.12-x86_64.tar  下载
table-2019-04-29_14:45:41.sql            音乐
公共                                     桌面

备份wenhs库
[root@wenhs5479 ~]# mysqldump -uroot -p -hlocalhost --databases wenhs >wenhs-$(date +%F_%T).sql
Enter password: 
[root@wenhs5479 ~]# ls
all-2019-04-29_14:44:04.sql              模板
anaconda-ks.cfg                          视频
apache                                   图片
initial-setup-ks.cfg                     文档
mysql-5.7.25-linux-glibc2.12-x86_64.tar  下载
table-2019-04-29_14:45:41.sql            音乐
wenhs-2019-04-29_14:46:35.sql            桌面
公共

模拟误删wenhs数据库
mysql> drop database wenhs;
Query OK, 2 rows affected (0.01 sec)

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

3.3 mysql数据恢复

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
恢复wenhs数据库
[root@wenhs5479 ~]# ls
all-2019-04-29_14:44:04.sql              模板
anaconda-ks.cfg                          视频
apache                                   图片
initial-setup-ks.cfg                     文档
mysql-5.7.25-linux-glibc2.12-x86_64.tar  下载
table-2019-04-29_14:45:41.sql            音乐
wenhs-2019-04-29_14:46:35.sql            桌面
公共
[root@wenhs5479 ~]# mysql <all-2019-04-29_14\:44\:04.sql 	配置了免密登录
[root@wenhs5479 ~]# mysql -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wenhs              |
+--------------------+

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

mysql> source table-2019-04-29_14:45:41.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)

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

模拟删除整个数据库
mysql> drop database wenhs;
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)

恢复整个数据库
[root@wenhs5479 ~]# mysql < all-2019-04-29_14\:44\:04.sql 
[root@wenhs5479 ~]# mysql wenhs < table-2019-04-29_14\:45\:41.sql    此步多余,第一次全备中,库里面数据都已经备份,不需要这步
[root@wenhs5479 ~]# mysql -e 'select * from wenhs.student;'
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | wangqing    |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  7 | lisi        |   50 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+

3.4 差异备份与恢复

3.4.1 MySQL的差异备份

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[root@wenhs5479 ~]# vim /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

server-id=1			设置服务器标识符
log-bin=mysql_bin				开启二进制日志功能
[root@wenhs5479 ~]# service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!

对数据库进行完全备份

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
[root@wenhs5479 ~]# mysql			配置了免密登录
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-log MySQL Community Server (GPL)

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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wenhs              |
+--------------------+
5 rows in set (0.01 sec)

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

mysql> select * from wenhs.student;
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | wangqing    |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  7 | lisi        |   50 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
10 rows in set (0.01 sec)

完全备份
[root@wenhs5479 ~]# mysqldump --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > all-$(date +%F_%T).sql
[root@wenhs5479 ~]# ll
总用量 660192
-rw-r--r--. 1 root root    794130 4月  30 09:43 all-2019-04-30_09:43:24.sql

增加新内容
mysql> use wenhs;
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 into student values(100,'hehe',20),(200,'xixi',34);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> 
mysql> select * from student;
+-----+-------------+------+
| id  | name        | age  |
+-----+-------------+------+
|   1 | tom         |   20 |
|   2 | jerry       |   23 |
|   3 | wangqing    |   25 |
|   4 | sean        |   28 |
|   5 | zhangshan   |   26 |
|   7 | lisi        |   50 |
|   8 | chenshuo    |   10 |
|   9 | wangwu      |    3 |
|  10 | qiuyi       |   15 |
|  11 | qiuxiaotian |   20 |
| 100 | hehe        |   20 |
| 200 | xixi        |   34 |
+-----+-------------+------+
12 rows in set (0.00 sec)

mysql> update student set age = 100 where id = 100;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student;
+-----+-------------+------+
| id  | name        | age  |
+-----+-------------+------+
|   1 | tom         |   20 |
|   2 | jerry       |   23 |
|   3 | wangqing    |   25 |
|   4 | sean        |   28 |
|   5 | zhangshan   |   26 |
|   7 | lisi        |   50 |
|   8 | chenshuo    |   10 |
|   9 | wangwu      |    3 |
|  10 | qiuyi       |   15 |
|  11 | qiuxiaotian |   20 |
| 100 | hehe        |  100 |
| 200 | xixi        |   34 |
+-----+-------------+------+
12 rows in set (0.00 sec)

3.4.2. mysql差异备份恢复

模拟误删数据库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[root@wenhs5479 ~]# mysql -e 'drop database wenhs;'
[root@wenhs5479 ~]# mysql -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
由上可以看到wenhs这个数据库已被删除

刷新创建新的二进制日志

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@wenhs5479 ~]# ll /opt/data/
总用量 122944
-rw-r-----. 1 mysql mysql       56 4月  29 12:25 auto.cnf
-rw-r-----. 1 mysql mysql     1008 4月  30 09:38 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 4月  30 09:58 ibdata1
-rw-r-----. 1 mysql mysql 50331648 4月  30 09:58 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 4月  29 12:25 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 4月  30 09:43 ibtmp1
drwxr-x---. 2 mysql mysql     4096 4月  29 15:09 mysql
-rw-r-----. 1 mysql mysql      877 4月  30 09:58 mysql_bin.000002
-rw-r-----. 1 mysql mysql       19 4月  30 09:43 mysql_bin.index
-rw-r-----. 1 mysql mysql        6 4月  30 09:38 mysql.pid
drwxr-x---. 2 mysql mysql     8192 4月  29 12:25 performance_schema
drwxr-x---. 2 mysql mysql     8192 4月  29 12:25 sys
-rw-r-----. 1 mysql mysql    12748 4月  30 09:38 wenhs5479.err
[root@wenhs5479 ~]# mysqladmin flush-logs
[root@wenhs5479 ~]# ll /opt/data/
总用量 122948
-rw-r-----. 1 mysql mysql       56 4月  29 12:25 auto.cnf
-rw-r-----. 1 mysql mysql     1008 4月  30 09:38 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 4月  30 09:58 ibdata1
-rw-r-----. 1 mysql mysql 50331648 4月  30 09:58 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 4月  29 12:25 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 4月  30 09:43 ibtmp1
drwxr-x---. 2 mysql mysql     4096 4月  29 15:09 mysql
-rw-r-----. 1 mysql mysql      924 4月  30 09:59 mysql_bin.000002
-rw-r-----. 1 mysql mysql      154 4月  30 09:59 mysql_bin.000003
-rw-r-----. 1 mysql mysql       38 4月  30 09:59 mysql_bin.index
-rw-r-----. 1 mysql mysql        6 4月  30 09:38 mysql.pid
drwxr-x---. 2 mysql mysql     8192 4月  29 12:25 performance_schema
drwxr-x---. 2 mysql mysql     8192 4月  29 12:25 sys
-rw-r-----. 1 mysql mysql    12748 4月  30 09:38 wenhs5479.err

恢复完全备份

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[root@wenhs5479 ~]# mysql <all-2019-04-30_09\:43\:24.sql 
[root@wenhs5479 ~]# mysql -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wenhs              |
+--------------------+
[root@wenhs5479 ~]# mysql -e 'show tables from wenhs;'
+-----------------+
| Tables_in_wenhs |
+-----------------+
| student         |
| teacher         |
+-----------------+
[root@wenhs5479 ~]# mysql -e 'select * from wenhs.student;'
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | wangqing    |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  7 | lisi        |   50 |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+
[root@wenhs5479 ~]# mysql -e 'select * from wenhs.teacher;'
+----+-------------+------+
| id | name        | age  |
+----+-------------+------+
|  1 | tom         |   20 |
|  2 | jerry       |   23 |
|  3 | wangqing    |   25 |
|  4 | sean        |   28 |
|  5 | zhangshan   |   26 |
|  6 | zhangshan   |   20 |
|  7 | lisi        | NULL |
|  8 | chenshuo    |   10 |
|  9 | wangwu      |    3 |
| 10 | qiuyi       |   15 |
| 11 | qiuxiaotian |   20 |
+----+-------------+------+

恢复差异备份

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[root@wenhs5479 ~]# ll /opt/data/
总用量 123704
-rw-r-----. 1 mysql mysql       56 4月  29 12:25 auto.cnf
-rw-r-----. 1 mysql mysql     1008 4月  30 09:38 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 4月  30 10:00 ibdata1
-rw-r-----. 1 mysql mysql 50331648 4月  30 10:00 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 4月  29 12:25 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 4月  30 09:43 ibtmp1
drwxr-x---. 2 mysql mysql     4096 4月  30 10:00 mysql
-rw-r-----. 1 mysql mysql      924 4月  30 09:59 mysql_bin.000002
-rw-r-----. 1 mysql mysql   776980 4月  30 10:00 mysql_bin.000003
-rw-r-----. 1 mysql mysql       38 4月  30 09:59 mysql_bin.index
-rw-r-----. 1 mysql mysql        6 4月  30 09:38 mysql.pid
drwxr-x---. 2 mysql mysql     8192 4月  29 12:25 performance_schema
drwxr-x---. 2 mysql mysql     8192 4月  29 12:25 sys
drwxr-x---. 2 mysql mysql       96 4月  30 10:00 wenhs
-rw-r-----. 1 mysql mysql    12748 4月  30 09:38 wenhs5479.err
[root@wenhs5479 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.25-log MySQL Community Server (GPL)

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> show binlog events in 'mysql_bin.000002';
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| mysql_bin.000002 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.25-log, Binlog ver: 4 |
| mysql_bin.000002 | 123 | Previous_gtids |         1 |         154 |                                       |
| mysql_bin.000002 | 154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000002 | 219 | Query          |         1 |         292 | BEGIN                                 |
| mysql_bin.000002 | 292 | Table_map      |         1 |         347 | table_id: 141 (wenhs.student)         |
| mysql_bin.000002 | 347 | Write_rows     |         1 |         404 | table_id: 141 flags: STMT_END_F       |
| mysql_bin.000002 | 404 | Xid            |         1 |         435 | COMMIT /* xid=487 */                  |
| mysql_bin.000002 | 435 | Anonymous_Gtid |         1 |         500 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000002 | 500 | Query          |         1 |         573 | BEGIN                                 |
| mysql_bin.000002 | 573 | Table_map      |         1 |         628 | table_id: 141 (wenhs.student)         |
| mysql_bin.000002 | 628 | Update_rows    |         1 |         686 | table_id: 141 flags: STMT_END_F       |
| mysql_bin.000002 | 686 | Xid            |         1 |         717 | COMMIT /* xid=489 */                  |
| mysql_bin.000002 | 717 | Anonymous_Gtid |         1 |         782 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000002 | 782 | Query          |         1 |         877 | drop database wenhs                   |
| mysql_bin.000002 | 877 | Rotate         |         1 |         924 | mysql_bin.000003;pos=4                |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
15 rows in set (0.00 sec)

使用mysqlbinlog恢复差异备份
[root@wenhs5479 ~]# mysqlbinlog --stop-position=782 /opt/data/mysql_bin.000002 |mysql-----配置了密码登录,否则要-u和-p
[root@wenhs5479 ~]# mysql -e 'select * from wenhs.student;'
+-----+-------------+------+
| id  | name        | age  |
+-----+-------------+------+
|   1 | tom         |   20 |
|   2 | jerry       |   23 |
|   3 | wangqing    |   25 |
|   4 | sean        |   28 |
|   5 | zhangshan   |   26 |
|   7 | lisi        |   50 |
|   8 | chenshuo    |   10 |
|   9 | wangwu      |    3 |
|  10 | qiuyi       |   15 |
|  11 | qiuxiaotian |   20 |
| 100 | hehe        |  100 |
| 200 | xixi        |   34 |
+-----+-------------+------+

4.xtrabackup

Percona XtraBackup工具提供了一种在系统运行时执行MySQL数据热备份的方法。Percona XtraBackup是一款免费的在线开源完整数据库备份解决方案,适用于所有版本的Percona Server for MySQL和MySQL®。Percona XtraBackup在事务性系统上执行在线非阻塞,紧密压缩,高度安全的完整备份,以便应用程序在计划维护窗口期间保持完全可用。

可在事务系统上执行在线无阻塞,紧密压缩,高度安全的完整MySQL备份,以便在计划维护窗口期间完全可用任务关键型应用程序。

在本地和云中工作

  • Percona XtraBackup与当今的云提供商(如AWS,Google Cloud,Microsoft Azure等)完全兼容,完全部署在云中或作为混合解决方案。

保持数据库的实时

  • 企业准备就绪 Percona XtraBackup具有企业所需的所有工具和功能,可确保数据文件的一致性和安全性。

保持数据库的实时

  • 简化操作
  • 通过使用Percona XtraBackup加速数据库操作并将数据复制到新的复制从属,可以节省时间和金钱。

保持数据库的实时

  • 非阻塞备份
  • Percona XtraBackup允许您在生产中备份数据库,而不会影响正常运行时间或数据更改。

保持数据库的实时

  • 备份自动化
  • 您可以自动执行备份过程并验证自动备份。

当与Percona Server for MySQL结合使用时,Percona XtraBackup为当前可用的事务系统提供唯一真正的非阻塞在线实时MySQL备份。

Percona XtraBackup提供:

  • 快速可靠的数据库备份(例如热备份,增量备份,bacula备份等)
  • 备份期间不间断的事务处理
  • 通过更好的压缩节省磁盘空间和网络带宽
  • 自动备份验证
  • 由于更快的恢复时间,正常运行时间更长
  • 时间点恢复

点这里,了解此工具详解

5.冷备,温备,热备详解

按备份系统的准备程度,可将其分为 冷备份、温备份和热备份三大类 :

  • 冷备份 : 备份系统未安装或未配置成与当前使用的系统相同或相似的运行环境,应用系统数据没有及时装入备份系统。一旦发生灾难,需安装配置所需的运行环境,用数据备份介质(磁带或光盘) 恢复应用数据,手工逐笔或自动批量追补孤立数据,将终端用户通过通讯线路切换到备份系统,恢复业务运行

  • 温备份 : 将备份系统已安装配置成与当前使用的系统相同或相似的系统和网络运行环境,安装应用系统业务定期备份数据。一旦发生灾难,直接使用定期备份数据,手工逐笔或自动批量追补孤立数据或将终端用户通过通讯线路切换到备份系统,恢复业务运行

  • 热备份 : 备份处于联机状态,当前应用系统通过高速通信线路将数据实时传送到备份系统,保持备份系统与当前应用系统数据的同步;也可定时在备份系统上恢复应用系统的数据。一旦发生灾难,不用追补或只需追补很少的孤立数据,备份系统可快速接替生产系统运行,恢复营业

在计算机服务器备份和恢复中  

  • 冷备份服务器(cold server) 是在主服务器丢失的情况下才使用的备份服务器。冷备份服务器基本上只在软件安装和配置的情况下打开,然后关闭直到需要时再打开
  • 温备份服务器(warm server) 一般都是周期性开机,根据主服务器内容进行更新,然后关机。经常用温备份服务器来进行复制和镜像操作
  • 热备份服务器(hot server) 时刻处于开机状态,同主机保持同步。当主机失灵时,可以随时启用热备份服务器来代替