本环境是基于 Centos 7.8 系统构建MySQL-5.7.14
具体构建,请参考 MySQL-5.7.14 环境构建
备份是系统中需要考虑的最重要的事项,虽然他们在系统的整个规划,开发和测试过程中甚至占不到1%,看似不太重要且默默无闻的工作只有到恢复的时候才能真正体现出 其重要性,任何数据的丢失与尝试见的数据down机,都是不可以被接收的。数据库备份也同样重要,接下来我们将介绍MySQL数据库的策略。
备份的分类
1、热备份、温备份、冷备份 (根据服务器状态)
- 热备份:读、写不受影响;
- 温备份:仅可以执行读操作;
- 冷备份:离线备份;读、写操作均中止;
2、物理备份与逻辑备份 (从对象来分)
- 物理备份:复制数据文件;
- 逻辑备份:将数据导出至文本文件中;
3、完全备份、增量备份、差异备份 (从数据收集来分)
- 完全备份:备份全部数据;
- 增量备份:仅备份上次完全备份或增量备份以后变化的数据;
- 差异备份:仅备份上次完全备份以来变化的数据
逻辑备份的优缺点
1、逻辑备份的优点:
- 在备份速度上两种备份要取决于不同的存储引擎
- 物理备份的还原速度非常快。但是物理备份的最小粒度只能做到表
- 逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理
- 逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高
- 逻辑备份也对保持数据的安全性有保证
2、逻辑备份的缺点:
- 逻辑备份要对RDBMS产生额外的压力,而裸备份无压力
- 逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩
- 逻辑备份可能会丢失浮点数的精度信息
- 数据文件
- 日志文件(比如事务日志,二进制日志)
- 存储过程,存储函数,触发器
- 配置文件(十分重要,各个配置文件都要备份)
- 用于实现数据库备份的脚本,数据库自身清理的Crontab等……
两台基于Centos 系统的MySQL-7.5.14 服务器
node01、node02
要求:将node01的MySQL数据库所有数据备份到node02的数据库服务器上,并能够确保备份数据在node02服务器上的可用性
查看node01节点服务器数据库信息
mysql> use db1;
Database changed
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| fruits |
+---------------+
1 row in set (0.00 sec)
mysql> select * from fruits;
+------+------+------------+---------+
| f_id | s_id | f_name | f_price |
+------+------+------------+---------+
| a1 | 101 | apple | 5.20 |
| a2 | 103 | apricot | 2.20 |
| b1 | 101 | blackberry | 10.20 |
| b2 | 104 | berry | 7.60 |
| b5 | 107 | xxxx | 3.60 |
| bs1 | 102 | orange | 11.20 |
| bs2 | 105 | melon | 8.20 |
| c0 | 101 | cherry | 3.20 |
| l2 | 104 | lemon | 6.40 |
| m1 | 106 | mango | 15.60 |
| m2 | 105 | xbabay | 2.60 |
| m3 | 105 | xxtt | 11.60 |
| o2 | 103 | coconut | 9.20 |
| t1 | 102 | banana | 10.30 |
| t2 | 102 | grape | 5.30 |
| t4 | 107 | xbababa | 3.60 |
+------+------+------------+---------+
16 rows in set (0.00 sec)
mysql>
node01节点,开始打包数据库备份文件
# 停止mysqld服务
[root@mysql-yum ~]# systemctl stop mysqld
# 打包文件
[root@mysql-yum ~]# cd /var/lib/mysql
[root@mysql-yum mysql]# ll
total 110660
-rw-r-----. 1 mysql mysql 56 Jan 14 13:38 auto.cnf
-rw-------. 1 mysql mysql 1679 Jan 14 13:38 ca-key.pem
-rw-r--r--. 1 mysql mysql 1074 Jan 14 13:38 ca.pem
-rw-r--r--. 1 mysql mysql 1078 Jan 14 13:38 client-cert.pem
-rw-------. 1 mysql mysql 1679 Jan 14 13:38 client-key.pem
drwxr-x--- 2 mysql mysql 56 Jan 16 17:30 db1
-rw-r----- 1 mysql mysql 309 Jan 16 17:34 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Jan 16 17:34 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jan 16 17:34 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Jan 14 13:38 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 Jan 14 13:38 mysql
drwxr-x---. 2 mysql mysql 8192 Jan 14 13:38 performance_schema
-rw-------. 1 mysql mysql 1679 Jan 14 13:38 private_key.pem
-rw-r--r--. 1 mysql mysql 451 Jan 14 13:38 public_key.pem
-rw-r--r--. 1 mysql mysql 1078 Jan 14 13:38 server-cert.pem
-rw-------. 1 mysql mysql 1675 Jan 14 13:38 server-key.pem
drwxr-x---. 2 mysql mysql 8192 Jan 14 13:38 sys
[root@mysql-yum mysql]# tar czf /opt/mysql_datafile.bak.tar.gz *
[root@mysql-yum mysql]# ll /opt/
total 1348
-rw-r--r-- 1 root root 1378773 Jan 16 17:42 mysql_datafile.bak.tar.gz
# 拷贝文件
[root@mysql-yum mysql]# scp /opt/mysql_datafile.bak.tar.gz 192.168.5.12:/opt/
node02节点开始,回复数据
# 查看备份数据包
[root@mysql-rpm ~]# ll /opt/mysql_datafile.bak.tar.gz
-rw-r--r-- 1 root root 1378773 Jan 16 17:43 /opt/mysql_datafile.bak.tar.gz
# 停止mysqld服务
[root@mysql-rpm ~]# systemctl stop mysqld
# 删除原有的mysqld服务数据存放目录的文件
[root@mysql-rpm ~]# cd /var/lib/mysql
[root@mysql-rpm mysql]# rm -rf ./*
# 解压备份数据到mysqld服务数据存放目录
[root@mysql-rpm mysql]# tar xf /opt/mysql_datafile.bak.tar.gz -C /var/lib/mysql
[root@mysql-rpm mysql]# ll
total 110660
-rw-r----- 1 mysql mysql 56 Jan 14 13:38 auto.cnf
-rw------- 1 mysql mysql 1679 Jan 14 13:38 ca-key.pem
-rw-r--r-- 1 mysql mysql 1074 Jan 14 13:38 ca.pem
-rw-r--r-- 1 mysql mysql 1078 Jan 14 13:38 client-cert.pem
-rw------- 1 mysql mysql 1679 Jan 14 13:38 client-key.pem
drwxr-x--- 2 mysql mysql 56 Jan 16 17:30 db1
-rw-r----- 1 mysql mysql 309 Jan 16 17:34 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Jan 16 17:34 ibdata1
-rw-r----- 1 mysql mysql 50331648 Jan 16 17:34 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Jan 14 13:38 ib_logfile1
drwxr-x--- 2 mysql mysql 4096 Jan 14 13:38 mysql
drwxr-x--- 2 mysql mysql 8192 Jan 14 13:38 performance_schema
-rw------- 1 mysql mysql 1679 Jan 14 13:38 private_key.pem
-rw-r--r-- 1 mysql mysql 451 Jan 14 13:38 public_key.pem
-rw-r--r-- 1 mysql mysql 1078 Jan 14 13:38 server-cert.pem
-rw------- 1 mysql mysql 1675 Jan 14 13:38 server-key.pem
drwxr-x--- 2 mysql mysql 8192 Jan 14 13:38 sys
# 启动mysqld服务
[root@mysql-rpm mysql]# systemctl start mysqld
[root@mysql-rpm mysql]# netstat -lnutp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 2135/mysqld
node02节点验证备份效果
[root@mysql-rpm mysql]# mysql -uroot -p123456
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.14 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, 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 |
| db1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use db1;
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> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| fruits |
+---------------+
1 row in set (0.00 sec)
mysql> select * from fruits;
+------+------+------------+---------+
| f_id | s_id | f_name | f_price |
+------+------+------------+---------+
| a1 | 101 | apple | 5.20 |
| a2 | 103 | apricot | 2.20 |
| b1 | 101 | blackberry | 10.20 |
| b2 | 104 | berry | 7.60 |
| b5 | 107 | xxxx | 3.60 |
| bs1 | 102 | orange | 11.20 |
| bs2 | 105 | melon | 8.20 |
| c0 | 101 | cherry | 3.20 |
| l2 | 104 | lemon | 6.40 |
| m1 | 106 | mango | 15.60 |
| m2 | 105 | xbabay | 2.60 |
| m3 | 105 | xxtt | 11.60 |
| o2 | 103 | coconut | 9.20 |
| t1 | 102 | banana | 10.30 |
| t2 | 102 | grape | 5.30 |
| t4 | 107 | xbababa | 3.60 |
+------+------+------------+---------+
16 rows in set (0.00 sec)
mysql>
备份数据完成!!!