基于radius的Mysql計費(fèi)系統(tǒng)數(shù)據(jù)遷移

radius計費(fèi)系統(tǒng)向藍(lán)海計費(fèi)系統(tǒng)數(shù)據(jù)遷移技術(shù)總結(jié)

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊(duì)的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),微信小程序定制開發(fā),軟件按需定制等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

本文僅供參考,在實(shí)際環(huán)境中測試成功。歡迎大家提出問題。

1.    首先要有一個清晰的思路和明確的目標(biāo)。

本次計費(fèi)遷移主要將老計費(fèi)radius management系統(tǒng)的用戶,遷移到藍(lán)海計費(fèi)系統(tǒng)。由于老計費(fèi)系統(tǒng)和藍(lán)海計費(fèi)有相似性、同時具有一定的差異性。所以要修正老計費(fèi)系統(tǒng)數(shù)據(jù)格式符合藍(lán)海計費(fèi)的要求(藍(lán)海計費(fèi)已經(jīng)提供了數(shù)據(jù)導(dǎo)入的標(biāo)準(zhǔn)格式)。這樣才能將老計費(fèi)平安的導(dǎo)入藍(lán)海系統(tǒng),順利進(jìn)行計費(fèi)系統(tǒng)遷移。

2.    準(zhǔn)備工作

2-1首先要收集新老計費(fèi)系統(tǒng)的數(shù)據(jù)格式和數(shù)據(jù)庫的相關(guān)權(quán)限。

2-2收集需要遷移的需求,本次遷移并不是將所有的用戶遷移到藍(lán)海系統(tǒng)。根據(jù)公司營長的需要按要求將數(shù)據(jù)導(dǎo)出老系統(tǒng)、再導(dǎo)入新系統(tǒng)。

2-3為了保證計費(fèi)系統(tǒng)的安全性,需要將老系統(tǒng)的數(shù)據(jù)庫備份到測試環(huán)境進(jìn)行測試。同時要做好數(shù)據(jù)庫的導(dǎo)出時間點(diǎn)。

2-4先做部分?jǐn)?shù)據(jù)的產(chǎn)品導(dǎo)入。觀測導(dǎo)入效果后再研究后續(xù)的工作。

2-5由于數(shù)據(jù)導(dǎo)入藍(lán)海計費(fèi)系統(tǒng),在后期的運(yùn)營中也要進(jìn)行數(shù)據(jù)檢測。

2-6收集新舊系統(tǒng)的相關(guān)數(shù)據(jù),本次主要收集數(shù)據(jù)的套餐信息、資費(fèi)信息。

3風(fēng)險

3-1本次數(shù)據(jù)遷移,如果失敗會導(dǎo)致所有遷移用戶不能正確使用網(wǎng)絡(luò)。藍(lán)海系統(tǒng)手動錄入的用戶不受影響。為了本次遷移的順利完成,通過和營帳進(jìn)行商議。先將某一個很小的小區(qū)的10個用戶進(jìn)行遷移,做好隨時恢復(fù)的準(zhǔn)備,根據(jù)用戶反映做出有效處理。

3-2在數(shù)據(jù)遷移完成后的一段時間內(nèi),暫定1個月或者更長時間任何人不得刪除老計費(fèi)的數(shù)據(jù)并保證老計費(fèi)一直處于運(yùn)行狀態(tài)。

3-3如果遷移失敗,會導(dǎo)致所有涉及遷移的用戶不能正常撥號。故必須做好計費(fèi)恢復(fù)、割接事前通知、事中做好客服的安撫工作。

3-4遷移時間盡量選擇在用戶上網(wǎng)人數(shù)較少的時間段。

4時間

4-1本次遷移按照公司安排,在測試遷移成功的基礎(chǔ)上進(jìn)行數(shù)據(jù)的一次性遷移。計劃耗時10個小時,盡可能將時間壓縮到最小。

5資源調(diào)度

5-1本次遷移需要技術(shù)部研發(fā)部相關(guān)人員參加、計費(fèi)營帳資深管理員、網(wǎng)絡(luò)割接部門的同事、網(wǎng)管部門同事、客服同事做好通知和解釋工作,有效防止網(wǎng)絡(luò)中斷。

6.實(shí)施步驟

6-1用putty通過ssh連接到老計費(fèi)的linux系統(tǒng)上,

6-2用獲得的數(shù)據(jù)庫帳號執(zhí)行數(shù)據(jù)庫備份操作,命令如下:

   MySQLdump –h227.0.0.1 –uroot –pxxxx radius>radius_201512310800.sql;

6-3在搭建的測試數(shù)據(jù)庫環(huán)境執(zhí)行如下數(shù)據(jù)庫還原操作。

   Create database radius;

   Mysql –h227.0.0.1 –uroot –p***** radius<radius_201512310800.sql;

6-4新建一個業(yè)務(wù)表格,將營帳給的最新資費(fèi)套餐導(dǎo)入此表。Xls格式的導(dǎo)入不再詳述。

/*createtable srvname

(

idint primary key auto_increment,

srvidint(11),

srvnamevarchar(50)

)

 

 

SELECT* FROM srvname

 

 

altertable srvname add column srvname2 varchar(50)

altertable srvname add column srvid_old int(11)

xls數(shù)據(jù)導(dǎo)入到srvname表中

 

6-5將新舊業(yè)務(wù)套餐和資費(fèi)進(jìn)行轉(zhuǎn)換并生成臨時表

#測試將舊業(yè)務(wù)碼轉(zhuǎn)換為新業(yè)務(wù)碼

 

SELECT* FROM  rm_services

 

 

 

SELECTid

FROM(SELECT * FROM srvname WHERE srvname NOT LIKE '%年%'  ) AS t_srv_flage

WHERESUBSTRING(srvname,LOCATE('~',srvname)+1,1) IN ('1','z')

 

#設(shè)置flag,剔除年的業(yè)務(wù)代碼和008 3天 3月 6月的業(yè)務(wù)代碼

UPDATEsrvname SET flag=SUBSTRING(srvname,LOCATE('~',srvname)+1,1)

WHERE

idIN (

SELECTid

FROM(SELECT * FROM srvname WHERE srvname NOT LIKE '%年%'  ) AS t_srv_flage

WHERESUBSTRING(srvname,LOCATE('~',srvname)+1,1) IN ('1','z'))

 

ALTERTABLE srvname ADD COLUMN flag CHAR(1)

 

SELECT* FROM srvname WHERE flag IS NOT NULL

 

6-6將新舊計費(fèi)對接成功的數(shù)據(jù)寫入臨時表srvname_temp

CREATETEMPORARY TABLE srvname_temp

AS

 

SELECT 

a.srvidAS srvid_new,a.srvname AS srvname_new,a.srvid_old AS srvname_abc,

b.srvidAS srvid_old,b.srvname AS srvname_old,

a.flag

FROMsrvname AS a

LEFTJOIN

rm_servicesAS b

ONa.srvname_old=b.srvname

WHEREa.flag IS NOT NULL

 

SELECT* FROM srvname_temp

 

6-7從測試環(huán)境的radius庫將數(shù)據(jù)按條件查詢出來并導(dǎo)出為csv格式的數(shù)據(jù)。編碼格式選擇GBk2312

 

#導(dǎo)入藍(lán)海計費(fèi)的最終數(shù)據(jù)。

 

/*總結(jié):

FIELDSTERMINATED BY ','字段間分割符

OPTIONALLYENCLOSED BY '"'將字段包圍對數(shù)值型無效

LINESTERMINATED BY '\n'換行符*/

 

/*1queries executed, 0 success, 1 errors, 0 warnings

 

查詢:select u. username, k.value AS明文密碼,u.password as密文密碼, u.srvid as old_srvid, t.srvid_newas new_srvid, t.srvid...

 

錯誤代碼: 1064

Youhave an error in your SQL syntax; check the manual that corresponds to yourMySQL server version for the right syntax to use near 'select * from radcheck

 

select* from rm_users

leftjoin rm_services as s

on'at line 22

 

執(zhí)行耗時  : 0 sec

傳送時間  : 0 sec

總耗時      : 0.002 sec

 

grantfile on *.* to zwfayf@'%';

flushprivileges;

mysql服務(wù)器沒有d盤導(dǎo)致

*/

/*

Excel顯示數(shù)字時,如果數(shù)字大于12位,它會自動轉(zhuǎn)化為科學(xué)計數(shù)法;如果數(shù)字大于15位,它不僅用于科學(xué)技術(shù)費(fèi)表示,還會只保留高15位,其他位都變0。

Excel打開csv文件時,只要字段值都是數(shù)字,它就認(rèn)為該字段類型是數(shù)值。但我們存放在數(shù)據(jù)庫中的純數(shù)字char有可能會超過15位,這樣導(dǎo)出csv文件后,用excel打開看到的字段值就不對了。

網(wǎng)上的解決方法

1、將單元格格式設(shè)為文本,但行不通,還是會以科學(xué)計數(shù)法顯示

2、將單元格格式設(shè)為特殊,類型郵政編碼,這樣不會以科學(xué)計數(shù)法顯示,但是數(shù)字超過15位時低位還是會變0;

3、新建一個新工作表,用數(shù)據(jù)導(dǎo)入自文本文件功能,將csv導(dǎo)入到工作表中(分隔符逗號,每一列格式都設(shè)為文本),這樣可以正確顯示,但是每次導(dǎo)出新csv文件都要這么做比較麻煩,而且我們也不可能讓客戶去進(jìn)行這個操作。

 

參考這篇文章 java導(dǎo)出csv用excel打開后數(shù)字不用科學(xué)計數(shù)法顯示

我在mysql導(dǎo)出csv文件時,設(shè)置字段值用制表符\t括起來(outfile 'e:\\test.csv'fields terminated by ',' optionally enclosed by '\t' lines terminated by '\r\n'),

這樣excel打開csv文件時,會將數(shù)值用文本格式顯示,而不是數(shù)值格式,因?yàn)槲覀兊臄?shù)值前后都有制表符\t,而不是單純的數(shù)字。

這樣打開導(dǎo)出的csv文件就可以正常顯示了。不建議這樣使用*/

 

 

SELECT

u.username AS '賬號',

k.valueAS '密碼',

IF(u.`firstname`!='',u.`firstname`,'測試')AS '姓名',

IF(u.`taxid`,u.`taxid`,'610000000000000000')AS '證件號碼', //處理×××號碼為空的字段

IF(u.mobile,u.mobile,'13000000000')AS '手機(jī)號碼', //處理手機(jī)號碼為空的字段

 

IF(u.`address`!='',u.`address`,'xxx')AS'聯(lián)系地址', //處理地址為空的字段

 

''AS '賬號余額',

u.`staticip`AS 'ip地址',

u.`createdon`AS '開始時間',

u.`expiration`AS '結(jié)束時間',

 

 

#if(SUBSTRING(u.`address`,1,2) IN ('小區(qū)或社區(qū)名稱'),'17','18') as '區(qū)域編號', //處理地址自動化分行政區(qū)域的字段,并自動按規(guī)范設(shè)置區(qū)域編號 17 18為區(qū)域編號,可以根據(jù)相關(guān)規(guī)范進(jìn)行設(shè)定。

 

 

 

'陜西省xx市xx區(qū)' AS '區(qū)域名稱',

'1'AS '運(yùn)營商編號',

'本地'AS '運(yùn)營商名稱',

'5'AS '項(xiàng)目編號',

 

'BRAS'AS'項(xiàng)目名稱', //計費(fèi)類型

t.srvid_newAS '產(chǎn)品編號',

t.srvname_newAS  '產(chǎn)品名稱',

u.`createdby`AS '開戶人員',

''AS'用戶備注1',

 

''AS'地址池名稱',

REPLACE(u.`comment`,'\\','') AS '用戶備注',

''AS'發(fā)票號',

''AS'固話號碼',

''AS'操作人員',

 

''AS'用戶屬性'

 

#INTOOUTFILE 'e://lanhai.csv'  //設(shè)置導(dǎo)出的文件名

#FIELDSTERMINATED BY ',' //設(shè)置導(dǎo)出數(shù)據(jù)以逗號分割字段

#OPTIONALLYENCLOSED BY '"' //設(shè)置字段以””進(jìn)行包裹

#LINESTERMINATED BY '\n'  //設(shè)置行結(jié)束符為換行符

 

FROMrm_users AS u

LEFTJOIN radcheck AS k

ONu.username=k.username

LEFTJOIN srvname_temp AS t

ONu.`srvid`=t.srvid_old

WHEREk.`value` <>1

ANDSUBSTRING(u.username,1,9)='029010000'

ANDu.`address`  LIKE '文景%'

AND  u.`expiration`>'2015-05-31'

 

 

6-8將導(dǎo)出的csv在藍(lán)海計費(fèi)里面通過數(shù)據(jù)庫管理下的數(shù)據(jù)導(dǎo)入功能將數(shù)據(jù)導(dǎo)入。注意導(dǎo)入的過程中藍(lán)海計費(fèi)的提示信息。如果發(fā)現(xiàn)錯誤,請認(rèn)真進(jìn)行分析。

6-9由于數(shù)據(jù)涉及到公司的機(jī)密,故再次就不一一附圖。

 

本文至此結(jié)束。

網(wǎng)站欄目:基于radius的Mysql計費(fèi)系統(tǒng)數(shù)據(jù)遷移
標(biāo)題鏈接:http://muchs.cn/article30/ihggpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器移動網(wǎng)站建設(shè)、網(wǎng)站維護(hù)網(wǎng)站改版、網(wǎng)站策劃網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管