当前位置: 首页 > news >正文

MySQL数据xtrabackup物理备份方法

目录

  • 一、物理备份的方式
  • 二、xtrabackup物理备份
    • 1.安装xtrabackup
    • 2.完整备份/恢复流程
    • 3.增量备份流程
    • 4.差异备份流程
    • 5.物理备份总结

一、物理备份的方式

1.完整备份

每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。
优点:备份与恢复操作简单方便,恢复时一次恢复到位,恢复速度快
缺点:占用空间大,备份速度慢

2.增量备份

每次备份上一次备份到现在产生的新数据,每次都是跟上一次的备份数据作对比
只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化。
特点:因而备份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起按备份时间顺序,逐个备份版本进行恢复,恢复时间长,如中间某次的备份数据损坏,将导致数据的丢失。
假设我们在第一天进行一次完全备份。第二天增量备份时,只会备份第二天和第一天之间的变化数据,第三天增量备份时,只会备份第三天和第二天之间的变化数据,以此类推。
增量备份的优势是每次备份需要备份的数据较少,耗时较短,占用的空间较小。
劣势是数据恢复比较麻烦,进行数据恢复时,就要先恢复完全备份的数据,再依次恢复第一次增量备份的数据、第二次增量备份的数据和第三次增量备份的数据,最终才能恢复所有的数据。
1

3.差异备份

只备份跟完整备份不一样的数据,每次都是跟完整备份作对比
备份那些自从第一次完全备份之后被修改过的所有文件,备份的时间起点是从第一次完整备份起,且以后每次备份都是和第一次完整备份进行比较(注意是【第一次】,不是上一次),备份自第一次完整备份以来所有的修改过的文件。备份数据量会越来越大。
特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。
假设我们在第一天进行一次完全备份。第二天差异备份时,会备份第二天和第一天之间的变化数据,第三天进行差异备份时,仍和第一天的原始数据进行对比,把第二天和第三天所有的变化数据都备份在第二次差异备份中,以此类推。
差异备份既不像完全备份一样把所有数据都进行备份,也不像增量备份在进行数据恢复时那么麻烦,只要先恢复完全备份的数据,再恢复差异备份的数据即可。
不过,随着时间的增加,和完全备份相比,变动的数据越来越多,那么差异备份也可能会变得数据量庞大、备份速度缓慢、占用空间较大。
2

总结

简单的讲,完整备份就是不管三七二十一,每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;
增量备份就是每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;
差异备份就是每次都将第一次完整备份以来有变化的文件进行备份。

二、xtrabackup物理备份

Xtrabackup是开源免费的支持MySQL 数据库热备份的软件,在 Xtrabackup 包中主要有 Xtrabackup 和 innobackupex 两个工具。
其中 Xtrabackup 只能备份 InnoDB 和 XtraDB 两种引擎;
innobackupex则是封装了Xtrabackup,同时增加了备份MyISAM引擎的功能。
官网:https://www.percona.com
下载地址:https://www.percona.com/downloads
下载地址:https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.26/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm

1.安装xtrabackup

//安装xtrabackup
//5.7版本:https://www.percona.com/downloads/Percona-XtraBackup-2.4/[root@localhost ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.26/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm[root@localhost ~]# yum install percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm  -y//查看安装情况[root@localhost ~]# rpm -qa | grep xtrabackup
percona-xtrabackup-24-2.4.26-1.el7.x86_64//查看版本:[root@localhost ~]# xtrabackup --version
xtrabackup version 2.4.26 based on MySQL server 5.7.35 Linux (x86_64) (revision id: 19de43b)//注意:my.cnf需要确认配置文件内有数据目录的指定[root@localhost ~]# cat /etc/my.cnf
[mysqld]
datadir = /usr/local/mysql/data

2.完整备份/恢复流程

完整备份
语法:innobackupex --user=root --password='口令' /备份目录

//创建备份目录:[root@localhost ~]# mkdir /xtrabackup/full -p
//创建数据库、数据表,并插入数据
mysql> create database company;   
mysql> use company;
//创建一个测试表
mysql> \eCREATE TABLE company.employee5(id int primary key AUTO_INCREMENT not null,name varchar(30) not null,sex enum('male','female') default 'male' not null,hire_date date not null,post varchar(50) not null,job_description varchar(100),office int,dep_id int)
-> ;
Query OK, 0 rows affected (0.01 sec)
//插入数据:
mysql> \einsert into company.employee5(name,sex,hire_date,post,job_description,office,dep_id) values ('jack','male','20180202','instructor','teach',501,100),('harry','male','20180202','hr',NULL,502,101),('lili','female','20180206','sale','salecc',503,102),('xiaoguo','male','20180205','sale','',503,102)-> ;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
//备份:[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' /xtrabackup/full
​[root@localhost ~]# cd /xtrabackup/full/[root@localhost full]# ls
2022-06-08_10-03-34[root@localhost full]# du -sh *
26M     2022-06-08_10-03-34

完整备份的恢复

1.停止数据库;
2.清理环境;
3.重演回滚-> 恢复数据;
4.修改权限;
5.启动数据库

重演binlog语法:innobackupex --apply-log /备份目录/完整备份目录(年月日时分秒)
恢复数据语法:innobackupex --copy-back /备份目录/完整备份目录(年月日时分秒)

//为了实验效果,首先将数据库给删掉,看看数据是否能恢复成功[root@localhost ~]# mysql -uroot -p'JiannLt@123'
mysql> drop database company;
Query OK, 1 row affected (0.00 sec)

1、关闭数据库:

[root@localhost ~]# systemctl stop mysqld
//注意:数据库目录必须为空,MySQL服务不能启动[root@localhost ~]# rm -rf /usr/local/mysql/data/ *

2、重演回滚:

[root@localhost ~]# innobackupex --apply-log /xtrabackup/full/2019-08-20_11-47-49
……
InnoDB: Shutdown completed; log sequence number 2772008
230706 10:19:29 completed OK!

3、确认数据库目录:

//恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里[root@localhost ~]# cat /etc/my.cnf
[mysqld]
datadir = /usr/local/mysql/data

4、恢复数据:

[root@localhost ~]# innobackupex --copy-back /xtrabackup/full/2019-08-20_11-47-49
………………
230706 10:22:02 [01] Copying ./ibtmp1 to /usr/local/mysql/data/ibtmp1
230706 10:22:02 [01]        ...done
230706 10:22:02 completed OK!

5、修改权限:

[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql///启动数据库:[root@localhost ~]# systemctl start mysqld
​[root@localhost ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::3306                 :::*                    LISTEN      3687/mysqld
​[root@localhost ~]# cd /usr/local/mysql/data/     //看一下data目录下是否有文件,就能看出是否恢复成功了[root@localhost data]# ls
auto.cnf          client-cert.pem  ibdata1      mysql               private_key.pem  sys
binary-mysql.pid  client-key.pem   ib_logfile0  mysql.sock          public_key.pem   xtrabackup_binlog_pos_innodb
ca-key.pem        company          ib_logfile1  mysql.sock.lock     server-cert.pem  xtrabackup_info
ca.pem            ib_buffer_pool   ibtmp1       performance_schema  server-key.pem   xtrabackup_master_key_id//登录数据库,查看数据[root@localhost data]# mysql -uroot -p'JiannLt@123'
mysql> select id,name from company.employee5;
+----+---------+
| id | name    |
+----+---------+
|  1 | jack    |
|  2 | harry   |
|  3 | lili    |
|  4 | xiaoguo |
+----+---------+
4 rows in set (0.00 sec)

3.增量备份流程

原理:每次备份上一次备份到现在产生的新数据
在数据库上面创建一个测试的库和表,并往里面写入数据

mysql> create database testdb;
Query OK, 1 row affected (0.01 sec)mysql> create table testdb.t1(id int);
Query OK, 0 rows affected (0.01 sec)mysql> insert into testdb.t1 values(1);
Query OK, 1 row affected (0.01 sec)mysql> select * from testdb.t1;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

增量备份流程(重要)
1、进行完整备份
完整备份语法:innobackupex --user=root --password='口令' /备份目录/increment/
2、添加数据以后增量备份
增量备份语法:innobackupex --user=root --password='口令' --incremental /备份目录/increment/ --incremental-basedir=/xtrabackup/increment/上一备份目录(基于前一天)
–incremental 后面跟的是本次备份文件的存放路径
–incremental-basedir 后面跟的是基于哪次备份做数据备份?接的是上一次备份成功的目录

1.完整备份:周一

[root@localhost ~]# rm -rf /xtrabackup/ *[root@localhost ~]# mkdir /xtrabackup/increment//完整备份[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' /xtrabackup/increment
​[root@localhost ~]# cd /xtrabackup/increment
​[root@localhost increment]# ls
2019-08-20_14-51-35[root@localhost increment]# cd 2019-08-20_14-51-35/[root@localhost 2019-08-20_14-51-35]# ls
backup-my.cnf  ib_buffer_pool  mysql               sys   testdb                  xtrabackup_info
company        ibdata1         performance_schema  test  xtrabackup_checkpoints  xtrabackup_logfile

2.增量备份:周二~周三

//模拟周二的生产数据
mysql -uroot -p'JiannLt@123' -e 'insert into testdb.t1 values(2);'
//查询数据
mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1;' 
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
//周二增量备份
[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' --incremental /xtrabackup/increment/ --incremental-basedir=/xtrabackup/increment/2019-08-20_14-51-35/
//--incremental-basedir:基于哪个增量
[root@localhost ~]# cd /xtrabackup/increment/
[root@localhost increment ]# ls
2019-08-20_14-51-35  2019-08-20_15-04-29        //相当于周二的增量备份//模拟周三的生产数据
mysql -uroot -p'JiannLt@123' -e 'insert into testdb.t1 values(3);'
//查询数据
mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1;' 
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
//周三增量备份
[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' --incremental /xtrabackup/increment --incremental-basedir=/xtrabackup/increment/2019-08-20_15-04-29/    //基于前一天的备份为目录
//查看一下备份目录:
[root@localhost ~]# ls /xtrabackup/increment/
2019-08-20_14-51-35  2019-08-20_15-04-29  2019-08-20_15-10-56全备周一             增量周二               增量周三
//后面周四到周日都是这种方式来增量备份    

增量备份恢复流程(重要)

1.停止数据库;
2.清理环境;
3.依次重演回滚redo log-> 恢复数据;
4.修改权限;
5.启动数据库

重演回滚语法:

  • innobackupex --apply-log --redo-only /xtrabackup/increment/全量目录
  • innobackupex --apply-log --redo-only /xtrabackup/increment/全量目录 --incremental-dir=/xtrabackup/increment/增量1目录
  • innobackupex --apply-log --redo-only /xtrabackup/全量目录 --incremental-dir=/xtrabackup/increment/增量2目录
    –apply-log --redo-only参数的作用是
    仅应用指定的增量备份redo log到全量备份上,不做数据恢复。
    通俗地说,就相当于将增量备份的修改应用到全量备份上,产生一个新的全量备份。

恢复数据语法:innobackupex --copy-back /xtrabackup/increment/全量目录

//为了实验效果,先将testdb库给删掉
[root@localhost increment]# mysql -uroot -p'JiannLt@123' -e 'drop database testdb;'                           
[root@localhost increment]# mysql -uroot -p'JiannLt@123' -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
//停止服务,并清理数据目录
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# rm -rf /usr/local/mysql/data/ *//依次重演回滚redo log:
[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/increment/2019-08-20_14-51-35    //重演回滚全量备份目录
[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/increment/2019-08-20_14-51-35 --incremental-dir=/xtrabackup/increment/2019-08-20_15-04-29
// /xtrabackup/2019-08-20_14-51-35:全量目录
// /xtrabackup/increment/2019-08-20_15-04-29:增量1目录
[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/increment/2019-08-20_14-51-35 --incremental-dir=/xtrabackup/increment/2019-08-20_15-10-56/
// /xtrabackup/2019-08-20_14-51-35:全量目录
// /xtrabackup/increment/2019-08-20_15-10-56:增量2目录//恢复数据:
[root@localhost ~]# innobackupex --copy-back /xtrabackup/increment/2019-08-20_14-51-35/
/xtrabackup/2019-08-20_14-51-35/:全量目录//修改权限
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# systemctl start mysqld
//执行sql语句看看库和表是否恢复成功
[root@localhost ~]# mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1;'
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+

4.差异备份流程

差异备份流程(重要)
1、完整备份
语法:innobackupex --user=root --password='口令' /备份目录/
2、增加数据后进行差异备份
语法:innobackupex --user=root --password='口令' --incremental /备份目录/ --incremental-basedir=/xtrabackup/第一次完全备份目录

//清理备份的环境
[root@localhost ~]# rm -rf /xtrabackup/ *
//登陆数据库,准备环境
mysql -uroot -p'JiannLt@123'
mysql> delete from testdb.t1;
mysql> insert into testdb.t1 values(1);    //插入数据1,模拟周一
mysql> select * from testdb.t1;
+------+
| id   |
+------+
|    1 |
+------+
mysql> \q

1.完整备份:周一

[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' /xtrabackup

2.差异备份:周二~周三

[root@localhost ~]# innobackupex --user=root --password=888 --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/    //完全备份目录(周一)

3.模拟周二,插入数据2:

[root@localhost ~]# mysql -uroot -p'JiannLt@123' -e 'insert into testdb.t1 values(2);'    //插入数据2,模拟周二
[root@localhost xtrabackup]# mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1;'
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
//差异备份周二的数据
[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/  //备份目录基于周一的完整备份

4.再次插入周三的数据

[root@localhost ~]# mysql -uroot -p'JiannLt@123' -e 'insert into testdb.t1 values(3);'    //插入数据3,模拟周三
[root@localhost xtrabackup]# mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1;'
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
//再次差异备份
[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/  //还是基于周一的完整备份

5.延申到周四的数据

[root@localhost ~]# mysql -uroot -p'JiannLt@123' -e 'insert into testdb.t1 values(4);'    //插入数据4,模拟周四
[root@localhost xtrabackup]# mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1;'
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
//差异备份周四
[root@localhost ~]# innobackupex --user=root --password='JiannLt@123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/    //还是基于周一的备份

6.查看一下备份目录

[root@localhost ~]# ls /xtrabackup/
2019-08-20_15-42-02  2019-08-21_15-46-53  2019-08-22_15-51-15  2019-08-23_15-53-28周一完整备份        周二差异备份           周三差异备份           周四差异备份

差异备份恢复流程(重要)

1.停止数据库;
2.清理环境;
3.重演回滚redo log(周一,某次差异)-> 恢复数据;
4.修改权限;
5.启动数据库

差异恢复重演回滚redo log恢复数据(重要)
1、恢复全量的redo log
语法:innobackupex --apply-log --redo-only /xtrabackup/全量目录
2、恢复差异的redo log(任意差异点,选择任意差异点恢复,那数据也就会恢复到当天的)
语法:innobackupex --apply-log --redo-only /xtrabackup/全量目录 --incremental-dir=/xtrabackup/某个差异备份目录
3、恢复数据
语法:innobackupex --copy-back /xtrabackup/完全备份目录

//为了实验效果,将testdb库给删除掉,看看通过差异恢复的方式数据能否恢复成功
[root@localhost ~]# mysql -uroot -p'JiannLt@123' -e 'drop database testdb;'
//停止数据库,删除数据目录下所有的文件/目录
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# rm -rf /usr/local/mysql/data/ *

1.恢复全量的redo log

[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08-20_15-42-02/

2.恢复差异的redo log

//这里我们恢复周三的差异备份
[root@localhost ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08-20_15-42-02/ --incremental-dir=/xtrabackup/2019-08-22_15-51-15/

3.恢复数据

[root@localhost ~]# innobackupex --copy-back /xtrabackup/2019-08-20_15-42-02///修改权限:
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# systemctl start mysqld
//查看数据是否恢复成功(只有123;因为我们恢复的是周三的差异备份。)
[root@localhost xtrabackup]# mysql -uroot -p'JiannLt@123' -e 'select * from testdb.t1'
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+

5.物理备份总结

优先使用:完整,差异

完整备份
完整备份语法:innobackupex --user=root --password='口令' /备份目录

完全备份恢复流程
1.停止数据库;
2.清理环境;
3.重演回滚-> 恢复数据;
4.修改权限;
5.启动数据库
重演回滚语法:innobackupex --apply-log /备份目录/完整备份目录(年月日时分秒)
恢复数据语法:innobackupex --copy-back /备份目录/完整备份目录(年月日时分秒)

增量备份流程
1.进行完整备份;
完整备份语法:innobackupex --user=root --password='口令' /备份目录
2.添加数据以后增量备份:
增量备份语法:innobackupex --user=root --password='口令' --incremental /备份目录/ --incremental-basedir=/xtrabackup/上一备份目录

增量恢复流程
1.停止数据库;2. 清理环境;3. 增量重演回滚redolog->恢复数据;4. 修改权限;5. 启动数据库
增量重演回滚语法:
a.innobackupex --apply-log --redo-only /xtrabackup/全量目录
b.innobackupex --apply-log --redo-only /xtrabackup/全量目录 --incremental-dir=/xtrabackup/增量1目录
c.innobackupex --apply-log --redo-only /xtrabackup/全量目录 --incremental-dir=/xtrabackup/增量2目录
恢复数据:innobackupex --copy-back /xtrabackup/全量目录

差异备份流程(重要)
1.完整备份
完整备份语法:innobackupex --user=root --password='口令' /备份目录
2.增加数据后进行差异备份:
差异备份语法:innobackupex --user=root --password='口令' --incremental /备份目录 --incremental-basedir=/xtrabackup/第一次完全备份目录

差异恢复流程
1.停止数据库;2.清理环境;3.差异重演回滚redo log->恢复数据;4.修改权限;5.启动数据库
差异重演回滚语法:
a.恢复全量的redo log
innobackupex --apply-log --redo-only /xtrabackup/完全备份目录
b.恢复差异的redo log(任意差异点)
innobackupex --apply-log --redo-only /xtrabackup/完全备份目录 --incremental-dir=/xtrabacku/某个差异备份目录
恢复数据语法:innobackupex --copy-back /xtrabackup/完全备份目录

相关文章:

MySQL数据xtrabackup物理备份方法

目录 一、物理备份的方式二、xtrabackup物理备份1.安装xtrabackup2.完整备份/恢复流程3.增量备份流程4.差异备份流程5.物理备份总结 一、物理备份的方式 1.完整备份 每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的…...

vue3 使用 elementUi: ./lib/theme-chalk/index.css is not exported from package

目录 1. 在 vue3 中使用 element-ui2. 如果启动报错:Module not found: Error: Package path ./lib/theme-chalk/index.css is not exported from package 1. 在 vue3 中使用 element-ui 在 vue3 中使用 element-ui,我们的流程一般是这样的:…...

[ROS系列]ORB_SLAM3错误版本(仅记录)

背景: 1、设备:pc;旭日派x3(后续会加上,目前只有pc) 2、环境:Ubuntu20.04;ROS2(Foxy)​​​​​​​ ros2机器人foxy版用笔记本摄像头跑单目orb_slam3-CSD…...

APP盾的防御机制及应用场景

移动应用(APP)在我们日常生活中扮演着越来越重要的角色,但随之而来的是各种网络安全威胁的增加。为了保障APP的安全性,APP盾作为一种专门设计用于防御移动应用威胁的工具得以广泛应用。本文将深入探讨APP盾的防御机制以及在不同应…...

Unity性能优化一本通

文章目录 关于Unity性能优化一、资源部分:1、图片1.1、 图片尺寸越小越好1.2、使用2N次幂大小1.3、取消勾选Read/Write Enabled1.4、图片压缩1.5、禁用多余的Mip Map1.6、合并图集 2、模型2.1.限制模型面数2.2.限制贴图的大小2.3.禁用Read/Write Enables2.4.不勾选其…...

Mysql,SqlServer,Oracle获取库名 表名 列名

先看下需求背景: 获取某个数据源连接下所有库名,库下所有表名,表中所有字段 1.MySql 先说MySql吧,最简单 1.1获得所有数据库库名 这是一个mysql和sqlserver公用的方法,这里url不用担心数据库问题,他其实…...

errno变量和显示错误信息

一、errno Linux很多函数发生错误,只会返回-1。因此,我们只知道函数发生了错误,却不知道具体发生了什么错误。 因此Linux 系统下对常见的错误做了一个编号,每一个编号都代表着每一种不同的错误类型。 发生错误时,对…...

Centos 7 安装 Docker Enginee

文章目录 Centos 安装 Docker Enginee系统要求卸载旧版本使用 RPM 仓库设置 Docker 仓库安装 Docker Enginee升级 Docker Enginee 卸载 Docker Centos 安装 Docker Enginee 要在 Centos 安装 Docker Enginee,需要满足以下要求: 系统要求 CentOS 7Cent…...

通过js来实现用身份证号来判断性别和出生年月

html: <input type"text" id"shenfenzhenghao" oninput"hao()" placeholder"证件号"><input type"text" id"xingbie" disabled"disabled" placeholder"性别"><input type&qu…...

华为数通方向HCIP-DataCom H12-831题库(多选题:61-80)

第61题 在MPLS VPN中,为了区分使用相同地址空间的IPV4前缀,将IPV4的地址增加了RD值,下列选项描述正确的是: A、在PE设备上,每一个VPN实例都对应一个RD值,同一PE设备上,必须保证RD值唯一 B、RD可用于来控制VPN路由信息的发布 C、RD在传递过程中作为BGP的扩展团体性封装在…...

【T】03

A 【模板】快速幂 板子&#xff0c;略 #include<bits/stdc.h> #define ll long long using namespace std; ll a,p,k; int main() {scanf("%lld%lld%lld",&a,&p,&k);printf("%lld^%lld mod %lld",a,p,k);ll ans1,wa;a%k;while(p){if(p…...

VBA技术资料MF73:将Logo添加到页眉侧

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…...

听GPT 讲Rust源代码--library/std(1)

std git:(master) ✗ tree.├── Cargo.toml├── benches│ ├── hash│ │ ├── map.rs│ │ ├── mod.rs│ │ └── set_ops.rs│ └── lib.rs├── build.rs├── src│ ├── alloc.rs│ ├── ascii.rs│ ├── backtrace│ │…...

Vue源码总结

1&#xff0c;根据vue工程package.json配置文件查看scripts命令&#xff0c;找到build命令执行的js文件 2&#xff0c;根据构建执行的js文件继续跟进&#xff0c;找到主入口文件 3&#xff0c;从主入口文件直接分析主干代码&#xff0c;追踪export的Vue对象 4&#xff0c;跟…...

记一次调试微信订阅消息的坑

微信发送订阅消息文档 发送订阅消息 | 微信开放文档 按照文档说明的&#xff0c;一直报data param错误&#xff0c;编码47001&#xff0c;从程序中把请求参数扣出来&#xff0c;放到微信提供的工具里面调试 微信调试工具 然后报data参数要用string&#xff0c;转化为string…...

ASP.NET Core3.1 API 创建(Swagger配置、数据库连接Sql Server)、开发、部署

文章目录 创建项目点击Nuget安装包删除原有controllers编辑新建controll、添加注释Startup 注册Swagger服务使用swagger中间件配置XML注释更改启动端口 launchsettings.json在startup.cs跨域处理运行 数据库设计与连接安装库新建类继承框架根据数据库表设计对应设计类在DataCon…...

大数据之LibrA数据库常见术语(八)

SCTP Stream Control Transmission Protocol&#xff0c;流控制传输协议。是IETF于2000年新定义的一个传输层协议。是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP的设计用于通过IP网传输SCN窄带信令消息。 Session 数据库系统在接收到应用程序的连接请求时…...

【实战】Kubernetes安装持久化工具NFS-StorageClass

文章目录 前言技术积累存储类&#xff08;storage class&#xff09;什么是NFS什么是PV\PVC为什么要用NFS-StorageClass 安装NFS-StorageClass保证K8S集群正常投用安装NFS工具与客户端NFS安装常见错误安装NFS-StorageClass存储器 前言 前面的博文我们介绍了如何用kuberadmin的…...

透明安全地解释Moonbeam基金会分配的GLMR去了哪

在GLMR分配比例中&#xff0c;约有16.7%的GLMR分配给了生态支持。这部分GLMR究竟用在了哪里&#xff0c;Moonbeam生态是否还有足够的GLMR扶持生态项目&#xff1f; Moonbeam基金会每隔半年会发布一份GLMR透明度报告&#xff0c;最近的报告日期为2023年7月31日。其中列出了社区…...

python安装包失败 安装scipy包

最近在配深度学习环境&#xff0c;安装好了conda、CUDA、cuDNN&#xff0c;运行之后报错&#xff0c;没有scipy包。 试了很多方法&#xff1a; 用命令行pip、conda install 在pycharm下载包 在环境中添加包 都失败了 要么直接ERROR&#xff0c;要么超时 问了师兄 需要在conda环…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...