MYSQL差异备份、恢复与多表查询

文章详细介绍了MySQL数据库的备份与恢复操作,包括全备、指定数据库备份、恢复特定表等内容,还涉及了如何使用mysqldump工具。此外,文章还提到了Java开发者的求职准备,强调了明确发展方向和掌握Java基础知识的重要性。
摘要由CSDN通过智能技术生成

-P# //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3306

备份所有数据库(全备):

[root@localhost ~]# mysqldump -uroot -predhat123 --all-databases > all-$(date ‘+%Y%m%d’).sql

[root@localhost ~]# ls

all-20210825.sql anaconda-ks.cfg

恢复完全备份:

[root@localhost ~]# mysql -uroot -predhat123 < all-20210825.sql

备份指定数据库:

[root@localhost ~]# mysqldump -uroot -predhat123 --databases hhr > hhr-$(date ‘+%Y+%m%d’).sql

[root@localhost ~]# ls

all-20210825.sql anaconda-ks.cfg hhr-20210825.sql

恢复指定库:

[root@localhost ~]# mysql -uroot -predhat123 < hhr-xxx.sql

备份指定数据库中的某一个表:

[root@localhost ~]# mysqldump -uroot -predhat123 hhr student > student-$(date ‘+%Y+%m%d’).sql

[root@localhost ~]# ls

all-20210825.sql hhr-20210825.sql

anaconda-ks.cfg student-20210825.sql

方法1:恢复表(指定库名)

[root@localhost ~]# mysql -uroot -predhat123 hhr < student-xxx.sql

方法2:在指定的库里恢复表

MariaDB [hhr]> source student-xxx.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)

Query OK, 0 rows affected (0.00 sec)

差异备份与恢复


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

//在数据库中查看二进制日志是否开启

MariaDB [(none)]> show variables like ‘log_bin’;

±--------------±------+

| Variable_name | Value |

±--------------±------+

| log_bin | OFF |

±--------------±------+

1 row in set (0.001 sec)

//在配置文件中开启二进制日志

[root@hhr ~]# vim /etc/my.cnf.d/mariadb-server.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mariadb/mariadb.log

pid-file=/run/mariadb/mariadb.pid

server-id=1 #设置服务器标识符

log-bin=mysql_bin #开启二进制日志功能

//重启服务

[root@localhost ~]# systemctl restart mariadb.service

[root@hhr ~]# ls /var/lib/mysql/

aria_log.00000001 ibdata1 multi-master.info mysql_bin.000005 mysql_upgrade_info

aria_log_control ib_logfile0 mysql mysql_bin.000006 performance_schema

hhr ib_logfile1 mysql_bin.000003 mysql_bin.index

ib_buffer_pool ibtmp1 mysql_bin.000004 mysql.sock

//登录数据库查看二进制日志已经开启

MariaDB [(none)]> show variables like ‘log_bin’;

±--------------±------+

| Variable_name | Value |

±--------------±------+

| log_bin | ON |

±--------------±------+

1 row in set (0.001 sec)

//在数据库中查看有哪些二进制日志文件

MariaDB [(none)]> show binary logs;

±-----------------±----------+

| Log_name | File_size |

±-----------------±----------+

| mysql_bin.000003 | 1446 |

| mysql_bin.000004 | 907269 |

| mysql_bin.000005 | 365 |

| mysql_bin.000006 | 342 |

±-----------------±----------+

4 rows in set (0.000 sec)

对数据库进行完全备份

//查看数据库数据

MariaDB [hhr]> show databases;

±-------------------+

| Database |

±-------------------+

| hhr |

| information_schema |

| mysql |

| performance_schema |

±-------------------+

4 rows in set (0.000 sec)

MariaDB [hhr]> show tables;

±--------------+

| Tables_in_hhr |

±--------------+

| jj |

| student |

±--------------+

2 rows in set (0.000 sec)

MariaDB [hhr]> select * from jj;

±-----±---------+

| id | name |

±-----±---------+

| 1 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

±-----±---------+

3 rows in set (0.000 sec)

MariaDB [hhr]> 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 | 100 |

| 10 | qiuyi | 15 |

| 11 | qiuxiaotian | 20 |

±—±------------±-----+

10 rows in set (0.000 sec)

//存放密码

[root@hhr ~]# cat .my.cnf

[client]

user=root

password=redhat123

//完全备份

[root@hhr ~]# mysqldump --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > all-20210826.sql

[root@hhr ~]# ls

all-20210825.sql all-20210826.sql student-20210825.sql

//添加新内容

MariaDB [(none)]> select * from hhr.jj;

±-----±---------+

| id | name |

±-----±---------+

| 1 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

±-----±---------+

3 rows in set (0.001 sec)

MariaDB [hhr]> insert jj values (4,‘aixinjueluo’);

Query OK, 1 row affected (0.001 sec)

MariaDB [hhr]> select * from jj;

±-----±------------+

| id | name |

±-----±------------+

| 1 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

| 4 | aixinjueluo |

±-----±------------+

4 rows in set (0.000 sec)

//修改内容

MariaDB [hhr]> update jj set id = 10 where name = ‘zhangsan’;

Query OK, 1 row affected (0.001 sec)

Rows matched: 1 Changed: 1 Warnings: 0

MariaDB [hhr]> select * from jj;

±-----±------------+

| id | name |

±-----±------------+

| 10 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

| 4 | aixinjueluo |

±-----±------------+

4 rows in set (0.000 sec)

mysql差异备份恢复

模拟误删数据

MariaDB [hhr]> drop database hhr;

Query OK, 2 rows affected (0.005 sec)

MariaDB [(none)]> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| performance_schema |

±-------------------+

3 rows in set (0.000 sec)

刷新创建新的二进制日志

[root@hhr ~]# mysql -e “show binary logs;”

±-----------------±----------+

| Log_name | File_size |

±-----------------±----------+

| mysql_bin.000007 | 867 |

±-----------------±----------+

1 row in set (0.000 sec)

[root@hhr ~]# ls /var/lib/mysql/

aria_log.00000001 ibdata1 ibtmp1 mysql_bin.000007 mysql_upgrade_info

aria_log_control ib_logfile0 multi-master.info mysql_bin.index performance_schema

ib_buffer_pool ib_logfile1 mysql mysql.sock

//刷新创建新的二进制日志

[root@hhr ~]# mysqladmin flush-logs

[root@hhr ~]# ls /var/lib/mysql/

aria_log.00000001 ibdata1 ibtmp1 mysql_bin.000007 mysql.sock

aria_log_control ib_logfile0 multi-master.info mysql_bin.000008 mysql_upgrade_info

ib_buffer_pool ib_logfile1 mysql mysql_bin.index performance_schema

[root@hhr ~]# mysql -e “show binary logs;”

±-----------------±----------+

| Log_name | File_size |

±-----------------±----------+

| mysql_bin.000007 | 914 |

| mysql_bin.000008 | 484032 |

±-----------------±----------+

恢复完全备份

[root@hhr ~]# mysql < all-20210826.sql

[root@hhr ~]# mysql -e “show databases;”

±-------------------+

| Database |

±-------------------+

| hhr |

| information_schema |

| mysql |

| performance_schema |

±-------------------+

4 rows in set (0.000 sec)

[root@hhr ~]# mysql -e “show tables from hhr;”

±--------------+

| Tables_in_hhr |

±--------------+

| jj |

| student |

±--------------+

[root@hhr ~]# mysql -e “select * from hhr.jj;”

±-----±---------+

| id | name |

±-----±---------+

| 1 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

±-----±---------+

恢复差异备份


//在数据库中查看有哪些二进制日志文件

[root@hhr ~]# mysql

MariaDB [hhr]> show binary logs;

±-----------------±----------+

| Log_name | File_size |

±-----------------±----------+

| mysql_bin.000007 | 914 |

| mysql_bin.000008 | 483675 |

±-----------------±----------+

2 rows in set (0.000 sec)

//在数据库中查看正在写入的是哪个二进制日志文件

MariaDB [hhr]> show master status;

±-----------------±---------±-------------±-----------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

±-----------------±---------±-------------±-----------------+

| mysql_bin.000008 | 483675 | | |

±-----------------±---------±-------------±-----------------+

1 row in set (0.000 sec)

//检查误删数据库的位置在什么地方

MariaDB [hhr]> show binlog events in ‘mysql_bin.000007’;

±-----------------±----±------------------±----------±------------±---------------------------------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

±-----------------±----±------------------±----------±------------±---------------------------------------------------------+

| mysql_bin.000007 | 4 | Format_desc | 1 | 256 | Server ver: 10.3.28-MariaDB-log, Binlog ver: 4 |

| mysql_bin.000007 | 256 | Gtid_list | 1 | 299 | [0-1-253] |

| mysql_bin.000007 | 299 | Binlog_checkpoint | 1 | 342 | mysql_bin.000006 |

| mysql_bin.000007 | 342 | Binlog_checkpoint | 1 | 385 | mysql_bin.000007 |

| mysql_bin.000007 | 385 | Gtid | 1 | 427 | BEGIN GTID 0-1-254 |

| mysql_bin.000007 | 427 | Query | 1 | 527 | use hhr; insert jj values (4,‘aixinjueluo’) |

| mysql_bin.000007 | 527 | Xid | 1 | 558 | COMMIT /* xid=461 */ |

| mysql_bin.000007 | 558 | Gtid | 1 | 600 | BEGIN GTID 0-1-255 |

| mysql_bin.000007 | 600 | Query | 1 | 711 | use hhr; update jj set id = 10 where name = ‘zhangsan’ |

| mysql_bin.000007 | 711 | Xid | 1 | 742 | COMMIT /* xid=463 */ |

| mysql_bin.000007 | 742 | Gtid | 1 | 784 | GTID 0-1-256 |

| mysql_bin.000007 | 784 | Query | 1 | 867 | drop database hhr |

| mysql_bin.000007 | 867 | Rotate | 1 | 914 | mysql_bin.000008;pos=4 |

±-----------------±----±------------------±----------±------------±---------------------------------------------------------+

13 rows in set (0.000 sec)

//使用mysqlbinlog恢复差异备份

这里的784是你开始删除库之前的修改过数据的位置

[root@hhr ~]# mysqlbinlog --stop-position=784 /var/lib/mysql/mysql_bin.000007 | mysql

[root@hhr ~]# mysql -e “select * from hhr.jj;”

±-----±------------+

| id | name |

±-----±------------+

| 10 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

| 4 | aixinjueluo |

±-----±------------+

多表查询

===================================================================

Group By的使用


概述

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

Group By与聚合函数

| 函数 | 作用 |

| — | :-- |

| sum(列名) | 求和 |

| max(列名) | 最大值 |

| min(列名) | 最小值 |

| avg(列名) | 平均值 |

| count(列名) | 统计记录数 |

//创建表

MariaDB [hhr]> create table test (id varchar(20),name varchar(20), company varchar(20));

Query OK, 0 rows affected (0.007 sec)

//查看表

MariaDB [hhr]> show tables;

±--------------+

| Tables_in_hhr |

±--------------+

| student |

| test |

±--------------+

2 rows in set (0.000 sec)

//查看表结构

MariaDB [hhr]> desc test;

±--------±------------±-----±----±--------±------+

| Field | Type | Null | Key | Default | Extra |

±--------±------------±-----±----±--------±------+

| id | varchar(20) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| company | varchar(20) | YES | | NULL | |

±--------±------------±-----±----±--------±------+

3 rows in set (0.001 sec)

//插入数据

MariaDB [hhr]> insert test values(1,‘a’,‘jia’),(1,‘a’,‘jia’),(1,‘a’,‘jia’),(1,‘a’,‘jia’),(1,‘a’,‘yi’),(1,‘b’,‘yi’),(1,‘b’,‘yi’),(1,‘b’,‘yi’);

Query OK, 8 rows affected (0.001 sec)

Records: 8 Duplicates: 0 Warnings: 0

//查看数据

MariaDB [hhr]> select * from test;

±-----±-----±--------+

| id | name | company |

±-----±-----±--------+

| 1 | a | jia |

| 1 | a | jia |

| 1 | a | jia |

| 1 | a | jia |

| 1 | a | yi |

| 1 | b | yi |

| 1 | b | yi |

| 1 | b | yi |

±-----±-----±--------+

8 rows in set (0.000 sec)

MariaDB [hhr]> select * from student;

±—±------------±-----+

| id | name | age |

±—±------------±-----+

| 1 | tom | 20 |

| 2 | jerry | 23 |

| 3 | wangqing | 25 |

| 4 | sean | 28 |

| 5 | zhangshan | 26 |

| 7 | lisi | 50 |
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
img-MEaQ3U0O-1713506612785)]

[外链图片转存中…(img-elsHOZTE-1713506612787)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

[外链图片转存中…(img-KGg2il91-1713506612789)]

[外链图片转存中…(img-LfxbTLCg-1713506612791)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值