mysql进阶(三)

本文详细介绍了MySQL的数据库备份与恢复策略,包括冷备份、温备份和热备份的优缺点,以及全量备份、增量备份和差异备份的实施方法。重点讲解了使用mysqldump工具进行备份,并提及了数据恢复过程。此外,还探讨了开启二进制日志功能后的差异备份恢复步骤。最后,文章阐述了MySQL多实例部署的流程,从下载二进制包到配置、启动实例。
摘要由CSDN通过智能技术生成

1.数据库备份与恢复

  • 数据备份方案:
  1. 冷备份:数据库服务关闭,把数据库对应的数据目录下的数据文件拷贝一份 ——物理备份(不建议使用:如果关掉数据库备份,会导致数据丢失)
  2. 温备份:
  3. 热备份:数据库服务正常运行的时候,直接对数据库备份
  • 数据库备份手段:
  1. 全量备份:全备
    数据恢复快。
    备份时间长

  2. 增量备份:
    第一次是全备,
    第二次在全备的基础上备份你增加或修改的数据备份
    第三次是基于第二次增备更改的数据进行备份
    缺点:恢复数据库容易乱,恢复数据库

  3. 差异备份 (每次更改都是全备)
    第一次全备
    第二次是把全备的基础上增加或者修改的数据插入到全备里去
    第三次是备份第二次增加或者修改了的数据的全备
    优点:只备份更改了的数据 每次备份都是最新的

冷备份
1.先创建一个可以备份的目录,然后把/opt/data/*下的所有的信息移动到 /tmp/mysql-back/下
[root@localhost ~]# mkdir /tmp/mysql-back/
[root@localhost ~]# mv  /opt/data/* /tmp/mysql-back/
2.数据库都被移动备份走了
[root@localhost ~]# mysql -p123
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.01 sec)

mysql> exit
Bye
3.数据恢复
[root@localhost ~]# mv   /tmp/mysql-back/*   /opt/data/
[root@localhost ~]# mysql -p123
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

2.mysql备份工具mysqldump

//常用的OPTIONS:
-uUSERNAME //指定数据库用户名
-hHOST //指定服务器主机,请使用ip地址
-pPASSWORD //指定数据库用户的密码
-P# //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3307

//备份tb_course这个表到tb_course.sql下
[root@localhost ~]# mysqldump -uroot -p123 renweiwei tb_course > tb_course.sql
[root@localhost ~]# ls
anaconda-ks.cfg  passwd  tb_course.sql

//备份数据库renweiwei
[root@localhost ~]# mysqldump  -uroot -p123 --databases renweiwei > renweiwei.sql
[root@localhost ~]# ls
anaconda-ks.cfg  passwd  renweiwei.sql  tb_course.sql

//备份全部数据库
[root@localhost ~]# mysqldump --all-databases  > all-$(date '+%Y%m%d%H%M%S').sql
[root@localhost ~]# ls
all-20220728174008.sql 

3.mysql数据恢复

//误删了数据库中tb_students_info表里面的第一个和第二个信息
mysql> delete  from tb_students_info where id =1 and id = 3;
Query OK, 0 rows affected (0.00 sec)
//恢复数据库
[root@localhost ~]# mysql -uroot -p123 renweiwei < renweiwei.sql
mysql> use renweiwei;
Database changed
mysql> select *from tb_students_info;
+----+------+------+------+--------+-----------+
| id | name | age  | sex  | height | course_id |
+----+------+------+------+--------+-----------+
|  1 | qq q |   24 | 男   |    170 |         4 |
|  2 | aaa  |   22 | 女   |    162 |         3 |
|  3 | zzz  |   28 | 男   |    190 |         1 |
+----+------+------+------+--------+-----------+
3 rows in set (0.00 sec)


//误删整个数据库
mysql> drop database renweiwei;
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)
[root@localhost ~]# mysql -uroot -p123  < all-20220728174008.sql
mysql> source renweiwei.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 databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| renweiwei          |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

4. 差异备份与恢复

  1. 开启MySQL服务器的二进制日志功能
[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
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
server-id=10           //设置服务器标识符
log-bin=mysql_bin              //开启二进制日志功能
[root@localhost ~]# service mysqld restart
Shutting down MySQL.... SUCCESS! 
Starting MySQL... SUCCESS! 
[root@localhost ~]# ss -antl
State      Recv-Q     Send-Q         Local Address:Port           Peer Address:Port     Process     
LISTEN     0          128                  0.0.0.0:22                  0.0.0.0:*                    
LISTEN     0          128                     [::]:22                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值