這回是帳號同步異常,血淚經驗和教訓!

2021-06-19 17:23:05 字數 1445 閱讀 2871

業務**缺乏容錯機制,直接把缺失的帳號給乾掉了。

結果:自然是使用者登入提示帳號不存在……

教訓:1、資料回滾流程不通暢,足足花了2個小時;

2、光有告警是不夠的,

異常保護機制很重要!

超出閾值,就阻斷。

要把風險扼殺在搖籃裡。

經驗:從備份庫取出一張表的資料,差異恢復到生產環境

1.1、切忌直接從備份庫匯出!

原因是:mysqldump -h 1.1.1.1 --single-transaction -u root xxdb xx_tbl > xx_tbl_1215.sql

vim xx_tbl_1215.sql 會發現語句:drop table if exists `xx_tbl`; create table `xx_tbl`(

看起來 --add-drop-table引數是預設的)。

也就意味著,如果拿這個sql直接匯入生產環境,則生成環境當前的資料會被drop掉。

正確的做法是建立個臨時表:

在備份庫上:create table xx_tbl_bak like xx_tbl; 

insert

xx_tbl_bak

select * from

xx_tbl;

mysqldump -h 1.1.1.1 --single-transaction -u root xxdb xx_tbl_bak > xx_tbl_bak_1215.sql

恢復到生產環境:create table 

xx_tbl_bak

like 

xx_tbl

;mysql -u root xxdb < xx_tbl_bak_1215.sql

1.2、找出xx_tbl和xx_tbl_bak的

差異資料,合併處理

select * from xx_tbl_bak where not exists (select * from xx_tbl where uin=xx_tbl_bak.uin and device=xx_tbl_bak.device);

insert into xx_tbl 

select * from 

xx_tbl_bak

where not exists (select * from 

xx_tbl

where uin=

xx_tbl_bak

.uin and device=

xx_tbl_bak

.device);

反之,如果要查詢兩張表相同的資料:

select * from 

xx_tbl_bak

where exists (select * from 

xx_tbl

where uin=

xx_tbl_bak

.uin and device=

xx_tbl_bak

.device);

chrome同步之帳號登入

通過chrome的選項進行登入同步的時候的主要流程。chrome內部支援了基於oauth的驗證 首先使用者輸入使用者名稱和密碼,提交後服務端會返回sid和lsid,這兩個內容是加密過的。然後用sid和lsid到服務端去獲取這個使用者的資訊,主要包括 email 暱稱 賬號的型別及支援的種類。然後將這...

這回看來是真的要與Google說88了

這兩天,google文件好像是真的沒辦法用了,舊的文件倒還能開啟和修改,但7.1後建立的開不了,建立新文件會出現錯誤頁,建立其它格式好像還行。這次不像以前,只是開啟不順利,多試幾次或換成非https方式基本上都還能用,這回看起來是真不行了。相簿反正是早就不行了,其它我常用的gmail和地圖一直還好。...

幀同步 什麼是幀同步什麼是狀態同步

以下是moba第七章內容 第七章 ue4底層原理和ue4跨平台通訊外掛程式封裝 7 1 什麼是幀同步什麼是狀態同步 7 2 ue4客戶端和服務端的udpsocket如何初始化 7 3 ue4服務端的udpsocket初始化流程 7 4 ue4客戶端的udpsocket初始化流程 7 5 ue4握手階...