Mysql数据库完全备份与恢复

2023-05-16

一、数据备份的重要性

在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因如下:

  • 程序错误
  • 人为错误
  • 计算机失败
  • 磁盘失败
  • 灾难(如火灾、地震)和盗窃

二、数据库备份的分类

1、从物理与逻辑的角度,备份可以分为物理备份和逻辑备份。

(1)物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。 物理备份又可分为脱机备份(冷备份)和联机备份(热备份)。

1>冷备份:是在关闭数据库的时候进行的

2>热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件

3>温备份:数据库锁定表格(不可写入但可读)的状态下进行的

(2)逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份

2、从数据库的备份策略角度,备份可分为完全备份、差异备份和增量备份

(1)完全备份:每次对数据进行完整的备份

对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。

  • 优点:备份与恢复操作简单方便
  • 缺点:数据存在大量的重复;占用大量的空间;备份与恢复时间长

(2)差异备份:备份那些自从上次完全备份之后被修改过的所有文件备份的时间节点是从上次完整备份起,备份数据量会越来越大。恢复数据时,只需恢复 上次的完全备份与最近的一次差异备份。

(3)增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化,因而备 份的数据量小,占用空间小,备份速度快。但恢复时,需要从上一次的完整备份起到最后一 次增量备份依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。

三、MySQL 完全备份操作

MySQL 数据库的备份可以采用多种方式

1、直接打包数据库文件夹,如/usr/local/mysql/data/ 或 /var/lib/mysql/

示例:

mysql> create database auth;

Query OK, 1 row affected (0.00 sec)

mysql> use auth;

Database changed
mysql> create table user(name char(10) not null,ID int(48));

Query OK, 0 rows affected (0.00 sec)

mysql> insert into user values ('linuxli','123');

Query OK, 1 row affected (0.00 sec)

mysql> select * from user;

+---------+------+
| name    | ID   |
+---------+------+
| linuxli |  123 |
+---------+------+
1 row in set (0.00 sec)

[root@mysql-master ~]# /etc/init.d/mysqld stop

Shutting down MySQL. SUCCESS!

[root@mysql-master ~]# yum -y install xz

[root@mysql-master ~]# tar Jcf mysql_all-$(date +%F).tar.xz /usr/local/mysql/data/

tar: 从成员名中删除开头的“/”

[root@mysql-master ~]# mkdir bak

#模拟数据丢失
[root@mysql-master ~]# mv /usr/local/mysql/data/* bak/

#恢复数据

[root@mysql-master ~]# tar -xf mysql_all-2019-04-22.tar.xz

[root@mysql-master ~]# cd usr/local/mysql/data/

[root@mysql-master data]# mv * /usr/local/mysql/data/

[root@mysql-master data]# /etc/init.d/mysqld start

Starting MySQL.. SUCCESS!

[root@mysql-master data]# mysql -uroot -p123456

mysql> select * from auth.user;

+---------+------+
| name    | ID   |
+---------+------+
| linuxli |  123 |
+---------+------+
1 row in set (0.01 sec)

2、使用专用备份工具 mysqldump

MySQL 自带的备份工具,相当方便对 MySQL 进行备份。通过该命令工具可以将制定的 库、表或全部的库导出为 SQL 脚本,在需要恢复时可进行数据恢复。

(1)对单个库进行完全备份

格式:

mysqldump -u 用户名 -p[密码] [选项] [数据库名] > /备份路径/备份文件名

示例:

[root@mysql-master ~]# mkdir /backup

[root@mysql-master ~]# mysqldump -uroot -p123456 auth > /backup/auth-$(date +%F).sql

[root@mysql-master ~]# echo $?

0

[root@mysql-master ~]# cat /backup/auth-2019-04-22.sql

(2)对多个库进行完全备份

格式:

mysqldump -u 用户名 -p [密码] [选项] –databases 库名 1 [库名 2]… > /备份路径/ 备份文件名

示例:

[root@mysql-master ~]# mysqldump -uroot -p123456 --database mysql auth > /backup/mysql+auth-$(date +%F).sql

[root@mysql-master ~]# cat /backup/mysql+auth-2019-04-22.sql

(3)对所有库进行完全备份

格式:

mysqldump -u 用户名 -p [密码] [选项] –all-databases > /备份路径/备份文件名

示例:

[root@mysql-master ~]# mysqldump -uroot -p123456 --opt --all-databases > /backup/mysql_all.$(date +%F).sql			//--opt 加快备份速度,当备份数据量大时使用

[root@mysql-master ~]# cat /backup/mysql_all.2019-04-22.sql

(4)对表进行完全备份 格式:

mysqldump -u 用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名

示例:

[root@mysql-master ~]# mysqldump -uroot -p123456 auth user >/backup/auth_user-$(date +%F).sql

[root@mysql-master ~]# cat /backup/auth_user-2019-04-22.sql

(5)对表结构的备份

格式:

mysqldump -u 用户名 -p [密码] -d 数据库名 表名 > /备份路径/备份文件名

示例:

[root@mysql-master ~]# mysqldump -uroot -p123456 -d mysql user >/backup/desc_mysql_user-$(date +%F).sql

[root@mysql-master ~]# cat /backup/desc_mysql_user-2019-04-22.sql

四、使用 mysqldump 备份后,恢复数据库

1、source 命令

登录到 MySQL 数据库

执行 source 备份 sql 脚本路径

示例:

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| aaa                |
| auth               |
| imployee_salary    |
| mysql              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.00 sec)

mysql> drop database auth;

Query OK, 1 row affected (0.00 sec)

mysql> source /backup/mysql_all.2019-04-22.sql

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| aaa                |
| auth               |
| imployee_salary    |
| mysql              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.00 sec)

2、mysql 命令

格式:

mysql -u 用户名 -p [密码] < 库备份脚本的路径

mysql -u 用户名 -p [密码] 库名 < 表备份脚本的路径

示例:

[root@mysql-master ~]# mysql -uroot -p123456 -e 'show databases;'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| aaa                |
| auth               |
| imployee_salary    |
| mysql              |
| performance_schema |
| test               |
+--------------------+

[root@mysql-master ~]# mysql -uroot -p123456 -e 'drop database auth;'

[root@mysql-master ~]# mysql -uroot -p123456 < /backup/mysql_all.2019-04-22.sql

[root@mysql-master ~]# mysql -uroot -p123456 -e 'show databases;'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| aaa                |
| auth               |
| imployee_salary    |
| mysql              |
| performance_schema |
| test               |
+--------------------+

[root@mysql-master ~]# mysql -uroot -p123456 -e 'drop table auth.user;'

[root@mysql-master ~]# mysql -uroot -p123456 auth </backup/auth_user-2019-04-22.sql

[root@mysql-master ~]# mysql -uroot -p123456 -e 'select * from auth.user;'

+---------+------+
| name    | ID   |
+---------+------+
| linuxli |  123 |
+---------+------+

五、MySQL 备份思路

1、定期实施备份,指定备份计划或策略,并严格遵守

2、除了进行完全备份,开启 MySQL 服务器的日志功能是很重要的(完全备份加上日志,可 以对 MySQL 进行最大化还原) 3、使用统一和易理解的备份名称,推荐使用库名或者表名加上时间的命名规则,如 mysql_user-20160505.sql,不要使用 backup1 之类没有意义的名字。

六、MySQL 完全备份案例

需求描述:

北京移电通信公司的用户信息数据库为 client,用户资费数据表为 user_info,表结构如 下所示。请为该公司指定河里的备份策略,依据所指定的策略备份数据,模拟数据丢失进行 数据恢复。

身份证姓名性别用户ID号资费
000000001孙空武011100
000000002蓝凌01298
000000003姜纹01312
000000004关园01538
000000005罗中昆01539

创建数据及表,录入数据:

[root@mysql-master ~]# mysql -uroot -p123456

mysql> create database client;

Query OK, 1 row affected (0.00 sec)

mysql> use client;

Database changed

mysql> show variables like 'character_set_%';

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql> create table user_info(身份证 int(20),姓名 char(20),性别 char(2),用户ID号 int(110),资费 int(10));

Query OK, 0 rows affected (0.00 sec)

mysql> insert into user_info values('000000001','孙空武','男','011','100');

Query OK, 1 row affected (0.00 sec)

mysql> insert into user_info values('000000002','蓝凌','女','012','98');

Query OK, 1 row affected (0.00 sec)

mysql> insert into user_info values('000000003','姜纹','女','013','12');

Query OK, 1 row affected (0.00 sec)

mysql>  insert into user_info values('000000004','关园','男','014','38');

Query OK, 1 row affected (0.01 sec)

mysql>  insert into user_info values('000000004','罗中昆','男','015','39');

Query OK, 1 row affected (0.00 sec)

mysql> select * from user_info;

+-----------+-----------+--------+-------------+--------+
| 身份证    | 姓名      | 性别   | 用户ID号    | 资费   |
+-----------+-----------+--------+-------------+--------+
|         1 | 孙空武    | 男     |          11 |    100 |
|         2 | 蓝凌      | 女     |          12 |     98 |
|         3 | 姜纹      | 女     |          13 |     12 |
|         4 | 关园      | 男     |          14 |     38 |
|         4 | 罗中昆    | 男     |          15 |     39 |
+-----------+-----------+--------+-------------+--------+
5 rows in set (0.01 sec)

完整备份 client.user_info 表:

[root@mysql-master ~]# mysqldump -uroot -p123456 client user_info >/backup/client.user_info-$(date +%F).sql

模拟数据丢失恢复数据:

[root@mysql-master ~]# mysql -uroot -p123456 -e 'drop table client.user_info;'

[root@mysql-master ~]# mysql -uroot -p123456 -e 'use client;show tables;'

[root@mysql-master ~]# mysql -uroot -p123456 client </backup/client.user_info-2019-04-22.sql

[root@mysql-master ~]# mysql -uroot -p123456 -e 'select * from client.user_info;'

+-----------+-----------+--------+-------------+--------+
| 身份证    | 姓名      | 性别   | 用户ID号    | 资费   |
+-----------+-----------+--------+-------------+--------+
|         1 | 孙空武    | 男     |          11 |    100 |
|         2 | 蓝凌      | 女     |          12 |     98 |
|         3 | 姜纹      | 女     |          13 |     12 |
|         4 | 关园      | 男     |          14 |     38 |
|         4 | 罗中昆    | 男     |          15 |     39 |
+-----------+-----------+--------+-------------+--------+

定期备份数据:

[root@mysql-master ~]# which mysqldump

/usr/local/mysql/bin/mysqldump

[root@mysql-master ~]# vim /opt/bak_client.sh

#!/bin/bash
# 备份client.user_info表脚本

/usr/local/mysql/bin/mysqldump -uroot -p123456 client user_info >/backup/client.user_info-$(date +%F).sql

[root@mysql-master ~]# chmod +x /opt/bak_client.sh

[root@mysql-master ~]# crontab -e

0 0 * * * /opt/bak_client.sh

[root@mysql-master ~]# systemctl enable crond

[root@mysql-master ~]# systemctl start crond

七、MySQL 数据库备份脚本

实验环境:

mysql-server:192.168.1.108

mysql-client:192.168.1.48

实验要求:对 mysql-server 的 auth 库和 client 库,实现异地备份,每天凌晨 2:00 进行备份, 撰写一个数据恢复脚本。

MySQL 服务端授权,给予 select 和 lock tables 权限,以备份


[root@mysql ~]# mysql -uroot -p123123

mysql> grant select,lock tables on auth.* to 'admin'@'192.168.1.48' identified by '1233123'; 

Query OK, 0 rows affected (0.00 sec)

mysql> grant select,lock tables on client.* to 'admin'@'192.168.1.48' identified by '1123123'; 

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

客户端安装客户端软件


[root@client ~]# rpm -qa |grep mysql

mysql-libs-5.1.71-1.el6.x86_64

[root@client ~]# yum -y install mysql

连接测试

[root@client ~]# mysql -uadmin -p123123 -h192.168.1.108 

mysql> show databases;

+--------------------+
| Database 			 |
+--------------------+
| information_schema |
| auth 				 | 
| client				 |
| test 				 |
+--------------------+

撰写客户端备份脚本

[root@client ~]# vim /opt/bakmysql.sh

#!/bin/bash
# MySQL 数据库备份脚本
# 设置登录变量
MY_USER="admin"
MY_PASS="123123"
MY_HOST="192.168.1.108"
MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"
# 设置备份的数据库
MY_DB1="auth"
MY_DB2="client"
# 定义备份路径、工具、时间、文件名
BF_DIR="/backup"
BF_CMD="/usr/bin/mysqldump"
BF_TIME=$(date +%Y%m%d-%H%M) 
NAME_1="$MY_DB1-$BF_TIME" 
NAME_2="$MY_DB2-$BF_TIME"
# 备份为.sql 脚本,然后打包压缩(打包后删除原文件)
[ -d $BF_DIR ] || mkdir -p $BF_DIR
cd $BF_DIR
$BF_CMD $MY_CONN --databases $MY_DB1 > $NAME_1.sql 
$BF_CMD $MY_CONN --databases $MY_DB2 > $NAME_2.sql 
/bin/tar zcf $NAME_1.tar.gz $NAME_1.sql --remove &>/dev/null 
/bin/tar zcf $NAME_2.tar.gz $NAME_2.sql --remove &>/dev/null

[root@client ~]# chmod +x /opt/bakmysql.sh

[root@client ~]# /opt/bakmysql.sh

[root@client ~]# ls /backup/

auth-20160505-1805.tar.gz client-20160505-1805.tar.gz

[root@client ~]# tar tvf /backup/auth-20160505-1805.tar.gz

-rw-r--r-- root/root 1967 2016-05-05 18:05 auth-20160505-1805.sql 

[root@client ~]# tar tvf /backup/client-20160505-1805.tar.gz

-rw-r--r-- root/root 2250 2016-05-05 18:05 client-20160505-1805.sql

[root@client ~]# crontab -e

0 2 * * * /opt/bakmysql.sh

改变系统时间,执行任务计划,模拟每天的备份,为之后的恢复脚本做准备


[root@client ~]# date 050601592016.59 //MMDDhhmmYY.SS 月日小时分钟.秒

[root@client ~]# ls /backup/

auth-20160505-1805.tar.gz client-20160505-1805.tar.gz

auth-20160506-0200.tar.gz client-20160506-0200.tar.gz 

[root@client ~]# date 050701592016.59

2016 年 05 月 07 日 星期六 01:59:59 CST

[root@client ~]# date 050801592016.59

2016 年 05 月 08 日 星期日 01:59:59 CST

[root@client ~]# ls /backup/

auth-20160505-1805.tar.gz auth-20160508-0200.tar.gz client-20160507-0200.tar.gz auth-20160506-0200.tar.gz client-20160505-1805.tar.gz client-20160508-0200.tar.gz auth-20160507-0200.tar.gz client-20160506-0200.tar.gz

撰写数据恢复脚本

[root@client ~]# vim /opt/restore_mysql.sh

#!/bin/bash
# 恢复 MySQL 数据库数据脚本
# 设置变量

MY_USER="admin"

MY_PASS="123123"

MY_HOST="192.168.1.108"

BF_DIR="/backup"

mkdir .aaa

ls $BF_DIR |column -t > .aaa/db_list

awk -F'-' '{print $2}' .aaa/db_list > .aaa/dt.txt

read -p "请指定要恢复数据库的日期(YYYYMMDD):" dt 

if [ $dt -ge 20160501 ] && [ $dt -le 20160601 ];then

	grep "$dt" .aaa/dt.txt &>/dev/null 

if [ $? -ne 0 ];then

	echo "很抱歉,您恢复数据库的备份日期不再备份日期范围内" 

else
	echo "搜索到的可恢复数据库如下:"
	awk -F'-' /$dt/'{print NR,$1}' .aaa/db_list
	read -p "请选择您要恢复数据库的编号: " nb
	nm=$(awk -F'-' /$dt/'{print NR,$1}' .aaa/db_list |awk /$nb/'{print $2}') 	
	echo "现在开始恢复数据库:$nm 到$dt"
	cd $BF_DIR
	onm=$(ls |grep "$nm-$dt")
	mkdir .bbb
	tar xf $onm -C .bbb
	mysql -u$MY_USER -p$MY_PASS -h$MY_HOST $nm < .bbb/*
	echo "$nm 已经恢复到$dt"
		rm -rf .bbb 
	cd - &>/dev/null
	rm -rf .aaa
fi 

else

echo "很抱歉,您恢复数据库的备份日期不再备份日期范围内" 

fi

[root@client ~]# chmod +x /opt/restore_mysql.sh

如在客户端恢复数据,需要开放权限

mysql> grant all on auth.* to 'admin'@'192.168.1.48';

Query OK, 0 rows affected (0.00 sec)

mysql> grant all on client.* to 'admin'@'192.168.1.48';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

恢复测试:

[root@client ~]# /opt/restore_mysql.sh

请指定要恢复数据库的日期(YYYYMMDD):20160507 搜索到的可恢复数据库如下:
3 auth
7 client
请选择您要恢复数据库的编号: 3 
现在开始恢复数据库:auth 到 20160507 
auth 已经恢复到 20160507

[root@client ~]# /opt/restore_mysql.sh

请指定要恢复数据库的日期(YYYYMMDD):20100101 
很抱歉,您恢复数据库的备份日期不再备份日期范围内

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql数据库完全备份与恢复 的相关文章

  • Google Cloud SQL 在重新启动时卡住

    我的云 sql 实例长时间处于重新启动状态 在操作窗格中 重新启动的状态显示为待处理 并且还发生了导出 其状态仍为Running 有没有办法可以强制重新启动或取消重新启动或从常规备份中恢复数据 不 没有办法 如果您向 Google 支付高级
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • MySQL 错误 1172 - 结果包含多行

    在存储过程中运行查询时 我从 MySQL 收到此错误 错误代码 1172 结果包含多行 我理解错误 我正在做一个SELECT INTO var list 因此查询需要返回单行 当我使用LIMIT 1 or SELECT DISTINCT 错
  • 如何在 SEQUELIZE (nodeJS) 中创建触发器?

    我正在尝试使用sequelize 创建一个触发器 主要思想是创建一个实例CONFIG创建后USER USER MODEL module exports function sequelize DataTypes var User sequel
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val
  • 基于mysql表中唯一电子邮件地址的唯一代码?

    我有一个 mysql 表 它将存储用户电子邮件地址 每个地址都是唯一的 并且是主字段 和时间戳 我添加了另一列名为 unique code varchar 64 utf8 unicode ci 我非常感谢您提供的帮助 a 生成5位字母数字代
  • 从前端更改记录顺序

    我在编写下一个功能时遇到问题 我希望用户能够重新排列记录并更改 display order 值 我使用 Jquery UI 的可拖放功能来促进这一点 我可以看到如何简单地交换 display order 值 但我想为一条记录设置一个显示顺序
  • 使用外键将表拆分为两个表

    我有一张桌子 drupal comments 其中包括以下列 cid primary key uid foreign key to users table optional name varchar optional email varch
  • MySQL为每个组创建带有序列号的视图

    我在此网站上看到了类似的解决方案 但由于变量使用限制 它在视图中不可用 在MySQL中为每个组生成序列 https stackoverflow com questions 30118096 generating sequence for e
  • “完整性约束违规:1062 重复条目” - 但没有重复行

    我正在将应用程序从本机 mysqli 调用转换为 PDO 尝试将行插入具有外键约束的表时遇到错误 Note 这是一个简化的测试用例 不应复制 粘贴到生产环境中 InfoPHP 5 3 MySQL 5 4 首先 这是表格 CREATE TAB

随机推荐

  • Maven的安装与配置(详细版)

    目录 一 安装本地Maven xff08 1 xff09 下载Maven xff1a xff08 2 xff09 解压Maven xff1a xff08 3 xff09 配置Maven环境变量到Path中 xff1a xff08 4 xff
  • Redis哨兵模式(一主二从三哨兵)

    目录 一 redis环境 xff1a 二 哨兵介绍 xff1a 三 安装redis 四 使用Redis主从复制的作用 xff1a 五 配置redis一主二从 xff1a redis启动前的准备工作 xff1a 六 配置redis三哨兵 xf
  • 微信登录的接口

    目录 第一步 xff1a 生成微信扫描二维码 网页内嵌的二维码 接口第二步 xff1a 处理微信回调 xff0c 获取扫描人信息 微信开放平台 xff1a https developers weixin qq com doc oplatfo
  • Linux安装MongoDB(简单详细)

    目录 MongoDB 安装环境1 下载 MongoDB 的linux安装包2 上传 MongoDB 安装包到linux系统中 xff1a 3 解压 MongoDB 安装包4 创建 MongoDB 必要目录5 移动 MongoDB 安装目录6
  • 镀镍的工艺

  • Solidworks学习一

    目录 页面介绍 xff1a 视图操作 xff1a 实例圆柱 xff1a 直线的绘制 xff1a 草图的保存和不保存 xff1a 绘制工具 xff1a 切线弧 xff1a 转换实体引用 xff1a 交叉曲线 xff1a 等距实体 xff1a
  • 螺纹的标记

    M2 xff1a 螺纹孔的画法 例如M2的螺纹 怎么画螺纹孔 1 外螺纹 xff0c 大径是螺纹标准值用粗实线画 xff0c 小径用细实线画 在沿端面看时 xff0c 大径是整圆 xff0c 小径是3 4圆 2 内螺纹 xff08 螺纹孔
  • c#日志组件Serilog使用

    NuGet 安装 Serilog 核心的包是 Serilog 和 Serilog AspNetCore 建议安装 Serilog AspNetCore xff0c 几乎包含了Serilog常用的所有包 异步写入 Serilog Sinks
  • Zynq-7000系列之linux开发学习笔记:PS和PL端的GPIO使用(三)

    开发板 xff1a Zynq7030数据采集板 PC平台 xff1a Ubuntu 18 04 43 MobaXterm 开发环境 xff1a Xilinx Vivado 43 SDK 18 3 学习目标 xff1a PS通过 EMIO A
  • 人工智能革命(上):通往超级智能之路

    导读 xff1a 本系列文章讲述了人工智能革命的爆发以及人类未来的出路 xff0c 由于篇幅较长分为上下两篇 xff0c 原英文载于神奇的网站 WaitButWhy com xff0c 作者Tim Urban还写过一篇有关脑机接口的文章 N
  • kubelet源码分析

    做个笔记记录k8s中赫赫有名的LIST amp WATCH 其实之前的文章中都有过watch的身影了 分别是informer篇和configCh篇这两篇其实都共用了client go包中的LIST amp WATCH方法 这篇内容详细讲一下
  • Li‘s 核磁共振影像数据处理-20-FSL数学工具fslmaths

    讲解视频内容请移步Bilibili xff1a https space bilibili com 542601735 入群讨论请加v hochzeitstorte 请注明 核磁共振学习 公众号 xff1a 美好事物中转站 FSLeyes F
  • CentOS7 防火墙(firewalld、iptables)-端口相关问题

    firewalld Centos7默认安装了firewalld xff0c 如果没有安装的话 xff0c 可以使用 yum install firewalld firewalld config进行安装 1 启动防火墙 systemctl s
  • centos 7.5 安装桌面环境及报错

    一 查看运行级别 xff0c 输入命令 xff1a runlevel 二 查看centos7 5系统中没有是否安装过桌面环境工具 xff0c 输入命令 xff1a yum grouplist more 注 xff1a 此命令还显示了系统安装
  • Seata(一) 服务配置以及启动

    文章目录 Seata 介绍Seata 简介Seata 演进历史Seata 设计理念Seata 的三大组件seata 实现的 2PC 与传统 2PC 的区别 Seata Server 安装Seata Server 下载Seata Server
  • 新手入门:PyCharm 的使用

    初次接触 pycharm 不要怕 xff0c 这篇文章帮你快速入门 xff0c 点击收藏不迷路 相关文章 xff1a Windows 10 同时安装 Python 2 和 Python 3 推荐一个视频 xff1a pycharm使用教程
  • EntityFrameworkCore 运行时数据迁移

    EntityFrameworkCore 以后简称EFCore 是 net core的一个orm框架 xff0c 以前在 net framework中使用时候利用code first可以在程序运行的时候自动迁移数据库 xff0c 更新数据库表
  • query.unwrap(SQLQuery.class).setResultTransformer弃用

    替换为 query unwrap span class token punctuation span NativeQueryImpl class span class token punctuation span setResultTran
  • pyinstaller报错AttributeError: type object ‘Callable‘ has no attribute ‘_abc_registry‘

    遇到问题 xff1a pyinstaller 打包文件时失败 xff0c 报错 xff1a AttributeError type object Callable has no attribute abc registry 解决方法 xff
  • Mysql数据库完全备份与恢复

    一 数据备份的重要性 在生产环境中 xff0c 数据的安全性是至关重要的 xff0c 任何数据的丢失都可能产生严重的后果 造成数据丢失的原因如下 程序错误人为错误计算机失败磁盘失败灾难 如火灾 地震 和盗窃 二 数据库备份的分类 1 从物理