mysql備份恢復(mysqldump備份 mysqlbinlog恢復)

来源:https://www.cnblogs.com/xuxuxuxuxu/archive/2023/08/08/17613139.html
-Advertisement-
Play Games

# mysql備份恢復(mysqldump備份 mysqlbinlog恢復) ## 一、備份的分類 1. 物理備份 ​ 物理備份:對資料庫操作系統的物理文件(如數據文件、日誌文件等) - 冷備份(離線備份) :是在關閉資料庫的時候進行的 - 熱備份(聯機備份) :資料庫處於運行狀態,依賴於資料庫的日 ...


mysql備份恢復(mysqldump備份 mysqlbinlog恢復)

一、備份的分類

  1. 物理備份

    ​ 物理備份:對資料庫操作系統的物理文件(如數據文件、日誌文件等)

    • 冷備份(離線備份) :是在關閉資料庫的時候進行的
    • 熱備份(聯機備份) :資料庫處於運行狀態,依賴於資料庫的日誌文件
    • 溫備份:資料庫鎖定表格(不可寫入但可讀)的狀態下進行備份操作
  2. 邏輯備份

    邏輯備份:對資料庫邏輯組件(如: 表等資料庫對象)的備份

    從資料庫的備份策略角度,備份可分為

    • 完全備份:每次對數據進行完整的備份
    • 差異備份:差異備份是指在一次全備份後到進行差異備份的這段時間內,對那些增加或者修改文件的備份。在進行恢復時,我們只需對第一次全備份和最後一次差異備份進行恢復。
    • 增量備份:增量備份是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加和者被修改的文件。這就意味著,第一次增量備份的對象是進行全備後所產生的增加和修改的文件;第二次增量備份的對象是進行第一次增量備份後所產生的增加和修改的文件,如此類推。

二、常見的備份方法

  1. 物理冷備
    • 備份時資料庫處於關閉狀態,直接打包資料庫文件
    • 備份速度快,恢復時也是最簡單的
    • 直接複製資料庫文件,適用於大型資料庫環境,不受存儲引擎的限制,但不能恢復到不同的MySQL版本。
  2. 專用備份工具mydump或mysqlhotcopy
    • mysqldump常用的邏輯備份工具
    • mysqlhotcopy僅擁有備份MyISAM和ARCHIVE表
  3. 啟用二進位日誌進行增量備份
    • 進行增量備份,需要刷新_二進位日誌
  4. 第三方工具備份
    • 免費的MySQl熱備份軟體Percona XtraBackup

三、mysql完全備份

  1. 定義

    完全備份是對整個資料庫的備份、資料庫結構和文件結構的備份
    完全備份保存的是備份完成時刻的資料庫
    完全備份是增量備份的基礎

  2. 優點

    安全性高
    備份與恢復操作簡單方便

  3. 缺點

    數據存在大量的重覆
    占用大量的備份空間,空間利用率低
    備份與恢復時間長

四、資料庫完全備份分類

4.1 物理備份/冷備份-tar (備份與恢復)

關閉MySQL資料庫
使用tar命令直接打包資料庫文件夾
直接替換現有MySQL目錄即可

  • 準備好資料庫(當然可以自己準備資料庫,主要演示對數據的增刪改)
進入mysql 創建kings資料庫
create database kings;

use kings;

創建tanks表
tanks | CREATE TABLE `tanks` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `skills` varchar(100) NOT NULL,
  `price` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 

插入數據
insert into tanks(name,skills,price) values('豬八戒','像一個肉球一樣彈',12888);

select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
+----+-----------+--------------------------+-------+
1 row in set (0.00 sec)
  • 先退出mysql,關閉資料庫服務,再打包備份
tar zcf /backup/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/

cd /backup/

ll
總用量 760
-rw-r--r-- 1 root root 776114 8月   7 01:21 mysql_all-2023-08-07.tar.gz
  • 將原來的數據移走到備份文件夾中,解壓剛纔備份的tar包到/restore目錄下,再移動到mysql服務的文件夾中
mkdir /bak

將現有mysql的data 移走
mv /usr/local/mysql/data/ /bak

mkdir /restore
 
將備份文件解壓到restore
tar -zxf /backup/mysql_all-2023-08-07.tar.gz -C /restore/

將解壓的備份文件data 移動到mysql中
mv restore/usr/local/mysql/data/ /usr/local/mysql
  • 重啟mysql服務,登錄mysql,查看數據是否恢復
mysql>use kings;

mysql> show tables;
+-----------------+
| Tables_in_kings |
+-----------------+
| tanks           |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
+----+-----------+--------------------------+-------+
1 row in set (0.00 sec)

4.2 邏輯備份/熱備份-mysqldump備份

MySQL自帶的備份工具,可方便實現對MySQL的備份
可以將指定的庫、表導出為SQL腳本
mysqldump命令備份過程,實際上是把資料庫、表,以SQL語句的形式,輸出為文件的備份過程,這種方式稱之為邏輯備份。
但是這種方式效率並不高,以SQL導出,在海量數據下,例如幾十G的場景,備份、恢復的時間都會過長。
備份的是建表、建庫、插入等操作所執行SQL語句(DDL DML DCL),適用於中小型資料庫。

mysqldump命令用於備份MySQL資料庫

語法:

mysqldump -u username -p password [option] database_name table_name > backup_file.sql

常用參數:

--all-databases:備份所有資料庫。
--single-transaction:在備份期間使用單個事務,確保數據的一致性(不停機備份)。
--master-data:為1時在文件中生成change master語句,為2時也添加change master並註釋。
--delete-master-logs:在master上備份後刪除其二進位日誌。
--flush-logs:切斷日誌,做一次日誌輪轉。
--skip-lock-tables:備份時跳過鎖定表,適用於大型資料庫。
--no-create-db:備份時不包含創建資料庫語句。
--no-create-info:備份時不包含創建表的語句。
--no-data:備份時不包含數據。
--add-drop-database:備份時在創建資料庫之前添加DROP DATABASE語句。
--add-drop-table:備份時在創建表之前添加DROP TABLE語句。
--result-file=file_name:將備份結果輸出到指定文件中。
--compress:在備份過程中使用壓縮。

常用命令:

mysqldump -u root -p --all-databses > all-data-$(date +%F).sql ###備份所有資料庫
mysqldump -u root -p -databases auth mysql > auth-mysql.sql ###備份auth和mysql庫
mysqldump -u root -p auth > auth-$(data +%F).sql ###備份auth資料庫
mysqldump -u root -p mysql user > mysql-user-$(date +%F).sql ###備份mysql的user表
mysqldump -u root -p -d mysql user > /tmp/desc-mysql-user.sql ###備份mysql庫user表的結構

mysqldump -u root -p --all-databases --single-transaction --master-data=2 --flush-logs >/backup/`date +%F-%H`mysql_all.sql ###備份所有庫,添加change master並註釋,並切斷日誌

對單個表備份

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kings              |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

[root@localhost ~]# mysqldump -u root -p kings  > /backup/kings-$(date +%F).sql
Enter password: 
[root@localhost ~]# cd /backup/
[root@localhost backup]# ls
kings-2023-08-07.sql  mysql_all-2023-08-07.tar.gz

對所有庫進行備份

[root@localhost ~]# mysqldump -u root -p --all-databases > /backup/all-$(date +%F).sql
Enter password: 
[root@localhost ~]# cd /backup/
[root@localhost backup]# ls
all-2023-08-07.sql  kings-2023-08-07.sql  mysql_all-2023-08-07.tar.gz

備份表

[root@localhost backup]# mysqldump -u root -p kings tanks > /backup/kings.tanks-$(date +%F).sql
[root@localhost backup]# ls
all-2023-08-07.sql  kings-2023-08-07.sql  kings.tanks-2023-08-07.sql  mysql_all-2023-08-07.tar.gz

4.2.1使用source命令恢複數據庫

source命令【作用於mysql模式下】

使用source恢複數據庫

模擬刪除表 恢復表

mysql> drop table tanks;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)

mysql> source /backup/kings.tanks-2023-08-07.sql;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)
...

mysql> show tables;
+-----------------+
| Tables_in_kings |
+-----------------+
| tanks           |
+-----------------+
1 row in set (0.00 sec)

4.2.2使用mysql命令恢複數據庫

mysql命令【作用於於linux模式下】

模擬刪表 恢復

mysql> drop table tanks;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)

kings為資料庫名字 恢復導入表需要指定資料庫!
[root@localhost ~]# mysql -uroot -p kings < /backup/kings.tanks-2023-08-07.sql 
Enter password: 

mysql> show tables;
+-----------------+
| Tables_in_kings |
+-----------------+
| tanks           |
+-----------------+
1 row in set (0.00 sec)

五、二進位日誌備份、恢復

mysqlbinlog工具來讀取和分析binlog文件

語法:

mysqlbinlog [options] logfile1 logfile2

常用參數:

--database=name,僅顯示指定資料庫的轉儲內容。
--short-form,使用簡單格式。
--start-datetime=name,轉儲日誌的起始時間。
--stop-datetime=name,轉儲日誌的截止時間。
--start-position=#,轉儲日誌的起始位置。
--stop-position=#,轉儲日誌的截止位置。
--no-defaults:指定不載入或使用預設配置文件,以確保按照命令行參數指定的配置選項進行操作。
--base64-output=decode-rows:將讀取的二進位數據解碼為可讀格式,即將Base64編碼的內容解碼為原始數據。
-v:輸出詳細信息,包括讀取的日誌事件和相關數據。

常用命令:

查看日誌
mysqlbinlog --no-defaults --base64-output=decode-rows -v 

恢複數據
mysqlbinlog --stop-position=xxx [mysql-bin.0000xx] | mysql -uroot -p
mysqlbinlog --start-position=xxx --stop-position=xxx [mysql-bin.0000xx] | mysql -uroot -p
mysqlbinlog --start-datetime=xxx --stop-datetime=xxx [mysql-bin.0000xx] | mysql -uroot -p

5.1基於position(位置點)備份

1.開啟mysql伺服器的二進位日誌功能

[root@localhost ~]# tail -15 /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/mysql.sock
port = 3306
pid-file = /usr/local/mysql/mysql.pid
user = mysql
skip-name-resolve
server-id = 1   // 設置伺服器標識
log-bin = /usr/local/mysql/mysql-bin  //開啟二進位功能

查看日誌文件
[root@localhost ~]# ll /opt/data/
-rw-r-----. 1 mysql mysql      154 2月  22 16:37 mysql_bin.000001
-rw-r-----. 1 mysql mysql       19 2月  22 16:37 mysql_bin.index

2.對資料庫進行完全備份

mysqldump -uroot -p --single-transation --master-data=2 --flush-logs --all-databases --delete-master-logs > /backup/all-`date +%F-%H`.sql

可以看到all-2023-08-07-16.sql已經創建
[root@localhost backup]# ls
all-2023-08-07-16.sql  kings-2023-08-07.sql        mysql_all-2023-08-07.tar.gz
all-2023-08-07.sql     kings.tanks-2023-08-07.sql 

3.在數據資料庫中增加類容

mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
+----+-----------+--------------------------+-------+
1 row in set (0.00 sec)

mysql> insert into tanks(name,skills,price) values('鐘馗','鉤子英雄',12888);
Query OK, 1 row affected (0.01 sec)

mysql> select * from tanks;                                              
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
|  3 | 鐘馗      | 鉤子英雄                 | 12888 |
+----+-----------+--------------------------+-------+
2 rows in set (0.00 sec)

4.模擬刪庫

mysql> drop database kings;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

5.刷新二進位文件

[root@localhost mysql]# mysqladmin -uroot -p flush-logs

[root@localhost mysql]# ls /usr/local/mysql/
mysql-bin.000002  mysql-bin.000003  ...

6.恢復完全備份
查看tanks表內容,可以發現備份之後修改的內容丟失

[root@localhost mysql]# mysql -uroot -p < /backup/all-2023-08-07-16.sql
Enter password: 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kings              |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use kings;
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_kings |
+-----------------+
| tanks           |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
+----+-----------+--------------------------+-------+
1 row in set (0.00 sec)

7.查看binlog 日誌,發現414為刪庫前,所以恢復到414

mysql> show binlog events in 'mysql-bin.000002'\G

*************************** 4. row ***************************
   Log_name: mysql-bin.000002
        Pos: 233
 Event_type: Query
  Server_id: 1
End_log_pos: 383
       Info: use `kings`; insert into tanks(name,skills,price) values('鐘馗','鉤子英雄',12888)
*************************** 5. row ***************************
   Log_name: mysql-bin.000002
        Pos: 383
 Event_type: Xid
  Server_id: 1
End_log_pos: 414
       Info: COMMIT /* xid=965 */
*************************** 6. row ***************************
   Log_name: mysql-bin.000002
        Pos: 414
 Event_type: Query
  Server_id: 1
End_log_pos: 509
       Info: drop database kings
       
恢復到刪庫前
退出mysql 執行mysqlbinlog --stop-position=
[root@localhost ~]# mysqlbinlog --stop-position=414 /usr/local/mysql/mysql-bin.000003 | mysql -uroot -p
Enter password: 

進入mysql 查看tanks表
mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
|  3 | 鐘馗      | 鉤子英雄                 | 12888 |
+----+-----------+--------------------------+-------+
2 rows in set (0.00 sec)

同理也可以恢復到插入'id=3'語句之前

對二進位日誌查詢還可以用

mysql> show binlog events in 'mysql-bin.000002';
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                                                                    |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------------------+
| mysql-bin.000023 |   4 | Format_desc |         1 |         120 | Server ver: 5.6.40-log, Binlog ver: 4                                                   |
| mysql-bin.000023 | 120 | Query       |         1 |         201 | BEGIN                                                                                   |
| mysql-bin.000023 | 201 | Intvar      |         1 |         233 | INSERT_ID=3                                                                             |
| mysql-bin.000023 | 233 | Query       |         1 |         383 | use `kings`; insert into tanks(name,skills,price) values('鐘馗','鉤子英雄',12888)       |
| mysql-bin.000023 | 383 | Xid         |         1 |         414 | COMMIT /* xid=965 */                                                                    |
| mysql-bin.000023 | 414 | Query       |         1 |         509 | drop database kings                                                                     |
| mysql-bin.000023 | 509 | Rotate      |         1 |         556 | mysql-bin.000024;pos=4                                                                  |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------------------------------------------+
7 rows in set (0.00 sec)

5.2基於datetime(時間點)備份

1.刪庫 (之前添加的id=3 數據 這裡不進行修改表了)

mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
|  3 | 鐘馗      | 鉤子英雄                 | 12888 |
+----+-----------+--------------------------+-------+
2 rows in set (0.01 sec)

Database changed
mysql> drop database kings;
Query OK, 1 row affected (0.00 sec)

2.恢復完全備份 (因為之前有備份過就不需要進行mysqldump備份了,直接使用備份文件完全恢復就行)

mysql -uroot -p  < /backup/all-2023-08-07-16.sql

3.查看表 此時已經恢復到了完全備份的數據狀態

mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
+----+-----------+--------------------------+-------+
1 row in set (0.01 sec)

4.使用mysqlbinlog查詢時間點

[root@localhost data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000002

找到有關的信息
# at 233
#230807 17:01:37 server id 1  end_log_pos 233 CRC32 0xf9822b3a  Intvar
SET INSERT_ID=3/*!*/;
#230807 17:01:37 server id 1  end_log_pos 383 CRC32 0xc6524022  Query   thread_id=9     exec_time=0    error_code=0
use `kings`/*!*/;
SET TIMESTAMP=1691398897/*!*/;
insert into tanks(name,skills,price) values('鐘馗','鉤子英雄',12888)
/*!*/;
# at 383
#230807 17:01:37 server id 1  end_log_pos 414 CRC32 0x090e26df  Xid = 965
COMMIT/*!*/;
# at 414
#230807 17:02:35 server id 1  end_log_pos 509 CRC32 0xd7c5718b  Query   thread_id=9     exec_time=0    error_code=0
SET TIMESTAMP=1691398955/*!*/;
drop database kings
/*!*/;

5.使用mysqlbinlog時間點恢復

[root@localhost 3306]#  mysqlbinlog --no-defaults --start-datetime='2023-08-07 17:01:37' --stop-datetime='2023-08-07 17:02:35' /usr/local/mysql/mysql-bin.000023 | mysql -uroot -p 

mysql> select * from tanks;
+----+-----------+--------------------------+-------+
| id | name      | skills                   | price |
+----+-----------+--------------------------+-------+
|  2 | 豬八戒    | 像一個肉球一樣彈         | 12888 |
|  3 | 鐘馗      | 鉤子英雄                 | 12888 |
+----+-----------+--------------------------+-------+
2 rows in set (0.00 sec)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本篇概覽 - 欣宸的月俸雖然很低,但還是咬著牙攢夠銀子 ...
  • ## 抽象靜態方法 在C# 11中,引入了對抽象靜態介面成員的支持。這個特性可以讓你在介面中定義靜態抽象方法、屬性、或事件。具體來說,一個介面可以定義一個或多個抽象靜態成員,這些成員沒有具體的實現。任何實現該介面的類或結構必須提供這些成員的靜態實現。這就像實現普通介面成員一樣,只不過是靜態的。當然, ...
  • SqlSugar ORM SqlSugar 是一款 老牌 .NET 開源多庫架構ORM框架 ,一套代碼能支持多種資料庫像Admin.net、Blog.Core、CoreShop等知名開源項目都採用了SqlSugar作為底層 特色1:超級簡單 在不用任何設計模式,任何框架的情況下都可以擁有最佳體驗,S ...
  • Debian 沒有像 Ubuntu 提供 Ubuntu-Base 那樣提供打包好的 rootfs, 但是 Debian 提供了一個製作 rootfs 的工具 debootstrap. 以下介紹使用 debootstrap 製作 Debian rootfs 的過程. ...
  • 1.常用命令 pwd 當前路徑 passwd 修改密碼 passwd root 修改root用戶密碼 date 顯示系統日期 sudo + 命令 調用管理許可權 clear 清屏 firefox 瀏覽器打開 shutdown -h now 關閉系統(1) init 0 關閉系統(2) telinit ...
  • 如果把整個Linux操作系統看作層級關係, 根文件系統是位於內核之上的模塊,對於同樣的硬體和架構, Linux各個發行版的區別主要在於根文件系統, 而底層的內核部分幾乎是一樣的. 通過製作根文件系統, 可以更換成其它發行版, 定製自己的最小化安裝. ...
  • GParted-live下載官網:https://gparted.org/download.php 1、用Rufus製作gparted-live啟動盤(Windows) Rufus下載官網:https://rufus.ie 2、 用Unetbootin製作gparted-live啟動盤(Window ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230804113710206-1765431897.png) # 1. Any ## 1.1. 任意一個 ## 1.2. 選修了任意一門課程的學生 ### 1.2.1. 找出 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...