xtrabackup使用

来源:https://www.cnblogs.com/caicairui/archive/2018/03/13/8556736.html
-Advertisement-
Play Games

轉自:https://www.cnblogs.com/waynechou/p/xtrabackup_backup.html 閱讀目錄 xtrabackup 選項 xtrabackup 全量備份恢復 xtrabackup 增量備份恢復 轉自:https://www.cnblogs.com/waynec ...


轉自:https://www.cnblogs.com/waynechou/p/xtrabackup_backup.html

閱讀目錄

 

前一篇文章我們講到了PXB的原理以及安裝方法,接下來將詳細介紹 XtraBackup 備份和恢復的具體過程。

回到頂部

xtrabackup 選項

xtrabackup 工具有許多參數,具體可去官網查詢(xtrabackup 參數選項 | innobackupex 參數選項),這裡簡單介紹 innobackupex 一些常用的參數。

1) innobackupex 參數選項

--defaults-file=[MY.CNF]    //指定配置文件:只能從給定的文件中讀取預設選項。 且必須作為命令行上的第一個選項;必須是一個真實的文件,它不能是一個符號鏈接。

--databases=#    //指定備份的資料庫和表,格式為:--database="db1[.tb1] db2[.tb2]" 多個庫之間以空格隔開,如果此選項不被指定,將會備份所有的資料庫。

--include=REGEXP    //用正則表達式的方式指定要備份的資料庫和表,格式為 --include=‘^mydb[.]mytb’ ,對每個庫中的每個表逐一匹配,因此會創建所有的庫,不過是空的目錄。--include 傳遞給 xtrabackup --tables。

--tables-file=FILE    //此選項的參數需要是一個文件名,此文件中每行包含一個要備份的表的完整名稱,格式為databasename.tablename。該選項傳遞給 xtrabackup --tables-file,與--tables選項不同,只有要備份的表的庫才會被創建。

註意:部分備份(--include、--tables-file、--database)需要開啟 innodb_file_per_table 。

--compact    //創建緊湊型備份,忽略所有輔助索引頁,只備份data page;通過--apply-log中重建索引--rebuild-indexs。

--compress    //此選項指示xtrabackup壓縮備份的InnoDB數據文件,會生成 *.qp 文件。

--decompress    //解壓縮qp文件,為瞭解壓縮,必須安裝 qpress 工具。 Percona XtraBackup不會自動刪除壓縮文件,為了清理備份目錄,用戶應手動刪除 * .qp文件:find /data/backup -name "*.qp" | xargs rm。

--no-timestamp    //指定了這個選項備份將會直接存儲在 BACKUP-DIR 目錄,不再創建時間戳文件夾。

--apply-log    //應用 BACKUP-DIR 中的 xtrabackup_logfile 事務日誌文件。一般情況下,在備份完成後,數據尚且不能用於恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處於不一致狀態。“準備”的主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件使得數據文件處於一致性狀態。

--use-memory=#    //此選項接受一個字元參數(1M/1MB,1G/1GB,預設100M),僅與--apply-log一起使用,該選項指定prepare時用於崩潰恢復(crash-recovery)的記憶體。

--copy-back    //拷貝先前備份所有文件到它們的原始路徑。但原路徑下不能有任何文件或目錄,除非指定 --force-non-empty-directories 選項。

--force-non-empty-directories    //恢復時指定此選項,可使 --copy-back 和 --move-back 複製文件到非空目錄,即原data目錄下可以有其他文件,但是不能有與恢覆文件中同名的文件,否則恢復失敗。

--rsync    //此選項可優化本地文件(非InnoDB)的傳輸。rsync工具一次性拷貝所有非InnoDB文件,而不是為每個文件單獨創建cp,在備份恢復很多資料庫和表時非常高效。此選項不能和 --stream 一起使用。

--incremental    //這個選項告訴 xtrabackup 創建一個增量備份,而不是完全備份。它傳遞到 xtrabackup 子進程。當指定這個選項,可以設置 --incremental-lsn 或 --incremental-basedir。如果這2個選項都沒有被指定,--incremental-basedir 傳遞給 xtrabackup 預設值,預設值為:基礎備份目錄的第一個時間戳備份目錄。

--incremental-basedir=DIRECTORY    //該選項接受一個字元串參數,該參數指定作為增量備份的基本數據集的完整備份目錄。它與 --incremental 一起使用。

--incremental-dir=DIRECTORY    //該選項接受一個字元串參數,該參數指定了增量備份將與完整備份相結合的目錄,以便進行新的完整備份。它與 --incremental 選項一起使用。

--redo-only    //在“準備基本完整備份” 和 “合併所有的增量備份(除了最後一個增備)”時使用此選項。它直接傳遞給xtrabackup的 xtrabackup --apply-log-only 選項,使xtrabackup跳過"undo"階段,只做"redo"操作。如果後面還有增量備份應用到這個全備,這是必要的。有關詳細信息,請參閱xtrabackup文檔。

--parallel=NUMBER-OF-THREADS    //此選項接受一個整數參數,指定xtrabackup子進程應用於同時備份文件的線程數。請註意,此選項僅適用於文件級別,也就是說,如果您有多個.ibd文件,則它們將被並行複製; 如果您的表一起存儲在一個表空間文件中,它將不起作用。

2) xtrabackup 參數選項

--apply-log-only    //這個選項使在準備備份(prepare)時,只執行重做(redo)階段,這對於增量備份非常重要。

回到頂部

xtrabackup 全量備份恢復

1. 完全備份

創建用於備份恢復的用戶 pxb 並賦予許可權

mysql> create user pxb@'localhost' identified by '123456';
mysql> grant reload,process,lock tables,replication client on *.* to pxb@localhost;

創建存放目錄

[root@centos6 mysql]# mkdir -pv /data/pxb
mkdir: 已創建目錄 "/data"
mkdir: 已創建目錄 "/data/pxb"

進行資料庫全備

複製代碼
[root@centos6 pxb]# innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --socket=/tmp/mysql.sock  /data/pxb                                                                                                               

170424 02:46:11 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".
…………

170424 02:46:12 >> log scanned up to (2627779)
170424 02:46:13 Executing FLUSH NO_WRITE_TO_BINLOG TABLES...
170424 02:46:13 Executing FLUSH TABLES WITH READ LOCK...
170424 02:46:13 Starting to backup non-InnoDB tables and files
…………
170424 02:46:15 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
xtrabackup: The latest check point (for incremental): '2627770'
xtrabackup: Stopping log copying thread.
.170424 02:46:15 >> log scanned up to (2627779)

170424 02:46:15 Executing UNLOCK TABLES
170424 02:46:15 All tables unlocked
170424 02:46:15 [00] Copying ib_buffer_pool to /data/pxb/2017-04-24_02-46-11/ib_buffer_pool
170424 02:46:15 [00]        ...done
170424 02:46:15 Backup created in directory '/data/pxb/2017-04-24_02-46-11/'
MySQL binlog position: filename 'mysql-bin.000002', position '2628'
170424 02:46:15 [00] Writing backup-my.cnf
170424 02:46:15 [00]        ...done
170424 02:46:15 [00] Writing xtrabackup_info
170424 02:46:15 [00]        ...done
xtrabackup: Transaction log of lsn (2627770) to (2627779) was copied.
170424 02:46:15 completed OK!
複製代碼

可以看到整個備份過程:連接資料庫,開始拷貝redo log,拷貝innodb表文件,鎖表、拷貝非innodb表文件,停止拷貝redo log,解鎖。

查看生成的文件:

複製代碼
[root@centos6 pxb]# ll 2017-04-24_02-46-11/
總用量 12340
-rw-r----- 1 root root      427 4月  24 02:46 backup-my.cnf
-rw-r----- 1 root root      358 4月  24 02:46 ib_buffer_pool
-rw-r----- 1 root root 12582912 4月  24 02:46 ibdata1
drwxr-x--- 2 root root     4096 4月  24 02:46 mysql
drwxr-x--- 2 root root     4096 4月  24 02:46 performance_schema
drwxr-x--- 2 root root    12288 4月  24 02:46 sys
drwxr-x--- 2 root root     4096 4月  24 02:46 test
drwxr-x--- 2 root root     4096 4月  24 02:46 test1
-rw-r----- 1 root root       22 4月  24 02:46 xtrabackup_binlog_info
-rw-r----- 1 root root      113 4月  24 02:46 xtrabackup_checkpoints
-rw-r----- 1 root root      518 4月  24 02:46 xtrabackup_info
-rw-r----- 1 root root     2560 4月  24 02:46 xtrabackup_logfile
複製代碼

 其中,mysql/, performance_schema/, sys/ ,test/ ,test1/ 下存放的是資料庫文件。

backup-my.cnf,備份命令用到的配置選項信息;

複製代碼
[root@centos6 2017-04-24_02-46-11]# cat backup-my.cnf 
# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]
innodb_checksum_algorithm=innodb
innodb_log_checksum_algorithm=strict_crc32
innodb_data_file_path=ibdata1:12M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=50331648
innodb_fast_checksum=false
innodb_page_size=16384
innodb_log_block_size=512
innodb_undo_directory=./
innodb_undo_tablespaces=0
server_id=153

redo_log_version=1
複製代碼

ib_buffer_pool, buffer pool 中的熱數據,當設置 innodb_buffer_pool_dump_at_shutdown=1 ,在關閉 MySQL 時,會把記憶體中的熱數據保存在磁碟里 ib_buffer_pool 文件中,位於數據目錄下。

ibdata1,備份的共用表空間文件;

xtrabackup_binlog_info,mysql伺服器當前正在使用的二進位日誌文件及至備份這一刻為止二進位日誌事件的位置;

[root@centos6 2017-04-24_02-46-11]# cat xtrabackup_binlog_info
mysql-bin.000002    2628

xtrabackup_checkpoints,備份類型(如完全或增量)、備份狀態(如是否已經為prepared狀態)和LSN(日誌序列號)範圍信息;

複製代碼
[root@centos6 2017-04-24_02-46-11]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 2627770
last_lsn = 2627779
compact = 0
recover_binlog_info = 0
複製代碼

xtrabackup_info,記錄備份的基本信息,uuid、備份命令、備份時間、binlog、LSN、以及其他加密壓縮等信息。

複製代碼
[root@centos6 2017-04-24_02-46-11]# cat xtrabackup_info
uuid = 216881a3-2855-11e7-bc84-080027b387ba
name = 
tool_name = innobackupex
tool_command = --defaults-file=/etc/my.cnf --user=pxb --password=... --socket=/tmp/mysql.sock /data/pxb
tool_version = 2.4.6
ibbackup_version = 2.4.6
server_version = 5.7.10-log
start_time = 2017-04-24 02:46:11
end_time = 2017-04-24 02:46:15
lock_time = 0
binlog_pos = filename 'mysql-bin.000002', position '2628'
innodb_from_lsn = 0
innodb_to_lsn = 2627770
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N
複製代碼

xtrabackup_logfile,備份的重做日誌文件。

2. 全備恢復

關閉資料庫並刪除數據文件

[root@centos6 data]# /etc/init.d/mysqld stop
Shutting down MySQL..                                      [確定]
[root@centos6 mysql]# cd /home/mysql
[root@centos6 mysql]# mv data/ data_bak/
[root@centos6 mysql]# mkdir data

準備(prepare)一個完全備份: --apply-log ( /data/pxb/2017-04-24_02-46-11/ 為備份目錄,執行之後 xtrabackup_checkpoints 文件中的 backup_type = full-prepared )

複製代碼
[root@centos6 mysql]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/
170424 15:50:20 innobackupex: Starting the apply-log operation

IMPORTANT: Please check that the apply-log run completes successfully.
           At the end of a successful apply-log run innobackupex
           prints "completed OK!".

…………

InnoDB: 5.7.13 started; log sequence number 2628117
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 2628136
170424 15:50:24 completed OK!
複製代碼

執行恢復操作:

複製代碼
[root@centos6 2017-04-24_02-46-11]# innobackupex  --defaults-file=/etc/my.cnf --copy-back --rsync /data/pxb/2017-04-24_02-46-11/
170424 16:02:26 innobackupex: Starting the copy-back operation

IMPORTANT: Please check that the copy-back run completes successfully.
           At the end of a successful copy-back run innobackupex
           prints "completed OK!".

innobackupex version 2.4.6 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 8ec05b7)
170424 16:02:26 [01] Copying ib_logfile0 to /home/mysql/data/ib_logfile0
170424 16:02:26 [01]        ...done
170424 16:02:26 [01] Copying ib_logfile1 to /home/mysql/data/ib_logfile1
170424 16:02:26 [01]        ...done
170424 16:02:26 [01] Copying ibdata1 to /home/mysql/data/ibdata1
170424 16:02:26 [01]        ...done

……

170424 16:02:31 [01] Copying ./xtrabackup_info to /home/mysql/data/xtrabackup_info
170424 16:02:31 [01]        ...done
170424 16:02:31 [01] Copying ./xtrabackup_binlog_pos_innodb to /home/mysql/data/xtrabackup_binlog_pos_innodb
170424 16:02:31 [01]        ...done
170424 16:02:31 completed OK!
複製代碼

更改 data/ 目錄許可權並啟動mysql:

[root@centos6 mysql]# chown -R mysql.mysql data/
[root@centos6 data]# /etc/init.d/mysqld start
Starting MySQL.                                            [確定]

可以看到資料庫和表均已恢復:

複製代碼
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
| test1              |
+--------------------+
6 rows in set (0.00 sec)
複製代碼 回到頂部

xtrabackup 增量備份恢復

我們以之前做的全備為基準,在其基礎上做增量備份:

複製代碼
##新建一張表,並插入數據作為增量##
mysql> create table tb2 (id int,name varchar(40)); Query OK, 0 rows affected (0.06 sec) mysql> insert into tb2 values (1,'aaa'),(2,'bbb'),(3,'ccc'),(26,'zzz'); Query OK, 4 rows affected (0.01 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from tb2; +------+------+ | id | name | +------+------+ | 1 | aaa | | 2 | bbb | | 3 | ccc | | 26 | zzz | +------+------+ 4 rows in set (0.00 sec)
複製代碼

增量備份1:( 以全備為基準:/data/pxb/2017-04-24_02-46-11/ )

複製代碼
[root@centos6 pxb]# innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --socket=/tmp/mysql.sock --incremental /data/pxb/inc --incremental-basedir=/data/pxb/2017-04-24_02-46-11/ --parallel=2

[root@centos6 2017-04-28_01-09-40]# cat xtrabackup_checkpoints 
backup_type = incremental    ##說明是增量備份
from_lsn = 2627770
to_lsn = 2636739
last_lsn = 2636748
compact = 0
recover_binlog_info = 0
複製代碼

再往 tb2 里插入數據:

複製代碼
mysql> insert into tb2 values (201,'aaa'),(202,'bbb'),(203,'ccc'),(326,'zzz');
Query OK, 4 rows affected (0.12 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> 
mysql> select * from tb2; 
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|   26 | zzz  |
|  201 | aaa  |
|  202 | bbb  |
|  203 | ccc  |
|  326 | zzz  |
+------+------+
8 rows in set (0.00 sec)
複製代碼

增量備份2:( 以增量1為基準:/data/pxb/inc/2017-04-28_01-09-40/ )

複製代碼
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --socket=/tmp/mysql.sock --incremental /data/pxb/inc --incremental-basedir=/data/pxb/inc/2017-04-28_01-09-40/ --parallel=2

[root@centos6 2017-04-28_01-27-46]# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 2636739
to_lsn = 2643563
last_lsn = 2643572
compact = 0
recover_binlog_info = 0
複製代碼

增量備份的恢復

增量備份的恢復需要有3個步驟

  1. 恢復完全備份
  2. 恢復增量備份到完全備份(開始恢復的增量備份要添加--redo-only參數,到最後一次增量備份要去掉--redo-only)
  3. 對整體的完全備份進行恢復,回滾未提交的數據
複製代碼
 ##準備一個全備##
[root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/ xtrabackup: starting shutdown with innodb_fast_shutdown = 1 InnoDB: Starting shutdown... InnoDB: Shutdown completed; log sequence number 2628145 InnoDB: Number of pools: 1 170428 01:33:52 completed OK! ##將增量1應用到完全備份## [root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-09-40/ ##將增量2應用到完全備份,註意不加 --redo-only 參數了## [root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-27-46/ ##把所有合在一起的完全備份整體進行一次apply操作,回滾未提交的數據## [root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/ xtrabackup: Log applied to lsn 2628145 xtrabackup: The intended lsn is 2643563
複製代碼

模擬測試:

複製代碼
mysql> drop table tb2;
Query OK, 0 rows affected (0.05 sec)

[root@centos6 mysql]# /etc/init.d/mysqld stop
[root@centos6 mysql]# mv data data_bak2
[root@centos6 mysql]# mkdir data
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/pxb/2017-04-24_02-46-11/
[root@centos6 mysql]# chown -R mysql:mysql data/
[root@centos6 mysql]# /etc/init.d/mysqld start

##數據已經恢復##
mysql> select * from tb2;
+------+------+
| id   | name |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|   26 | zzz  |
|  201 | aaa  |
|  202 | bbb  |
|  203 | ccc  |
|  326 | zzz  |
+------+------+
8 rows in set (0.01 sec)
複製代碼
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文最後修改時間:20180313 一、快速修改,重啟後設置就沒了 二、修改配置文件,重啟設置還在 (一)ubuntu 版本命令行設置靜態IP 修改 /etc/network/interfaces 在/etc/resolv.conf添加 重啟網卡: (二)SUSE 1、修改IP地址 修改/etc/s ...
  • linux if 命令判斷條件總結linux if命令 關於文件屬性的判斷式 -a 如果文件存在 -b 如果文件存在,且該文件是區域設備文件 -c 當file存在並且是字元設備文件時返回真 -d 當pathname存在並且是一個目錄時返回真 -e 當pathname指定的文件或目錄存在時返回真 -f ...
  • 本文最後修改時間:20180313 root預設為空密碼,預設遠程無法登錄。 mysql5.7更新了user表,網上的方法試了很多,都有點問題 \ 先停止MySQL服務 \ 跳過安全檢查 如果出現如下報錯信息 mysqld_safe Directory ‘/var/run/mysqld’ for U ...
  • #!/bin/bash step=2 for((i=0;i<60;i=i+step));do ps aux|grep apptomcat |grep -v grep >/dev/null y=`echo $?` if [ "$y" -ne "0" ];then ps aux|grep webtomc ...
  • 進程管理回顧 基本方法: 用戶進程最大記憶體640K。 問題:記憶體過小,如果應用程式需要更多記憶體怎麼辦 解決方案:overlay。僅載入當前必須的代碼和數據。 問題:P1, P2都在運行,P1需要申請更多記憶體,但記憶體已經用完 解決方案:swap(將P2臨時交換到外存)。缺點:磁碟傳輸導致swap成本極 ...
  • 本文目錄:1.stickiness和stick table簡介2.使用stick table 2.1 創建stick table 2.2 查看stick table 2.3 使用客戶端源IP作為客戶端標識符 2.4 使用cookie作為客戶端標識符 2.5 使用String作為客戶端標識符 2.6 ...
  • 轉載自:http://blog.csdn.net/j755ing/article/details/69400439 第一步: 下載 材料/工具: 下載 VMware Workstation 12 Pro , 下載 Mac OS安裝補丁(unlocker208), 下載 OS X 10.11.1(15 ...
  • 資源競爭 相互隔絕:兩個進程不會同時進入critical section progress: critical section之外的進程不會阻止其他進程進入他們的critical section bounded waiting: 每個進程等待有限時間即可進入critical section spee ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...