国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

去O遷移小計(oracle--MySQL)

IT那活兒 / 2575人閱讀
去O遷移小計(oracle--MySQL)
點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了?。。?/strong>

遷移背景

隨著集團去O工作展開,近期實施多套oracle遷移開源數據庫,隨著業務需求變化,數據量較大,遷移面臨的調整也越來越大,近期實施一次大表遷移MySQL的操作,在遷移過程中并對該大表進行分表 ; 要求業務停機時間不超過2小時。

環境說明:

主機
數據庫
遷移對象
用途
10.10.10.11
Oracle 19c
user.big_table(300GB)
源端數據庫
10.10.10.12
MySQL8.0
user.table_n(分150個表)
目標數據庫
10.10.10.13
--

臨時主機,部署遷移工具
遷移思路:
序號
操作
耗時
1
Oracle端使用物化視圖分表
約50h
2
使用etl工具同步mv數據到mysql
約70h
3
配置ogg同步mv分表
4
啟用mv增量刷新
5
停業務,準備切換到MySQL

6
最后一次mv增量刷新,并確保ogg同步到完成

7
業務切換到MySQL驗證業務



遷移過程

2.1 實施MV分表

原表約300GB數據,遷移到MySQL中需要分表為150個分表;最終分表方式如下(對字段后40位求和與150取余):
-創建mv的腳本如下:
alter session force parallel query parallel 10;
alter session force parallel ddl parallel 10;
alter session force parallel dml parallel 10;
create materialized view TABLE_O refresh fast  with primary key  on demand  as
select * FROM  USER.BIG_TABLE
where mod(decode(length(col1), 1,ASCII(substr(col1, -1, 1)),
2, ASCII(substr(col1, -1, 1)) + ASCII(substr(col1, -2, 1)),
3, ASCII(substr(col1, -1, 1)) + ASCII(substr(col1, -2, 1)) + ASCII(substr(col1, -3, 1)) ,
......
, 150) = 0 ;

分表踩坑:

  • 一開始才用對字段進行hash分表,經測試,oracle hash計算結果和應用程序hash計算結不一致,放棄該方式。
  • 對字段后2位進行ASCII計算去和后和150進行取余,經測試數據分布嚴重不均勻不能實現良好的分表效果。
  • 多次測試后,最終確定采用字段后40位求和后與150取余。
  • 使用物化視分表,增量刷新緩慢,通過調整參數規避。

2.2 采用ETL同步分表數據到MySQL

由于ogg initial load初始化效率較低,故采用kettle同步mv數據到MySQL:

  • 在10.10.10.13主機部署kettle軟件;
  • MySQL提前創建表結構;
  • 配置kettl同步。
Kettl程序如下:

2.3 配置ogg同步mv到MySQL

1)Oracle創建ogg賬號

CREATE USER GOLDENGATE IDENTIFIED BY goldengate DEFAULT TABLESPACE users TEMPORARY TABLESPACE TEMP;
GRANT CONNECT TO GOLDENGATE;
GRANT ALTER ANY TABLE TO GOLDENGATE;
GRANT ALTER SESSION TO GOLDENGATE;
GRANT CREATE SESSION TO GOLDENGATE;
GRANT FLASHBACK ANY TABLE TO GOLDENGATE;
GRANT SELECT ANY DICTIONARY TO GOLDENGATE;
GRANT SELECT ANY TABLE TO GOLDENGATE;
GRANT RESOURCE TO GOLDENGATE;
GRANT EXECUTE ANY TYPE TO GOLDENGATE;
GRANT SELECT ANY TRANSACTION TO GOLDENGATE;
GRANT CREATE any  TABLE,CREATE any  SEQUENCE TO goldengate ;
GRANT INSERT ANY TABLE TO GOLDENGATE;
GRANT UPDATE ANY TABLE TO GOLDENGATE;
GRANT DELETE ANY TABLE TO GOLDENGATE;
GRANT CREATE ANY INDEX TO GOLDENGATE;
grant unlimited  tablespace to goldengate ;
grant execute on DBMS_FLASHBACK to goldengate;
grant  COMMENT ANY TABLE  to goldengate;
alter system set enable_goldengate_replication=true sid=* scope=both;
exec dbms_goldengate_auth.grant_admin_privilege(goldengate)

2歸檔模式/補充日志/force logging

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
alter database FORCE LOGGING;
set line 350 pages 999
col NAME for a15
col LOG_MODE for a15
col OPEN_MODE for a15
col PLATFORM_NAME for a25
col FORCE_LOGGING for a20
col SUPPLEMENTAL_LOG_DATA_MIN for a25
SELECT
NAME,
LOG_MODE,
OPEN_MODE,
PLATFORM_NAME,
FORCE_LOGGING,
SUPPLEMENTAL_LOG_DATA_MIN
FROM
V$DATABASE;
alter system archive log current;

3)部署ogg軟件

在10.10.10.13部署ogg軟件,部署過程較為簡單,不在贅述。

4)添加ogg憑證

export TNS_ADMIN=/data/ggsdata/tnsadmin
exora=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =10.10.10.11 )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =test )
)
)
添加ogg憑證:
add credentialstore
alter credentialstore add user goldengate@exora alias exora
INFO CREDENTIALSTORE
dblogin useridalias exora

5)添加附加日志

為150個mv都添加附加日志:
add  trandata user.table_0
info  trandata user.table_0
add  trandata user.table_1
info  trandata user.table_2
......

6)配置ogg mgr

-- 參數如下:
PORT 7809
DYNAMICPORTLIST 7810-7819
ACCESSRULE, PROG SERVER, ALLOW
AUTOSTART EXTRACT *
AUTORESTART EXTRACT * retries 5 waitminutes 3
PURGEOLDEXTRACTS /ogg/ggs_oracle/dirdat/*,usecheckpoints, minkeepdays 2
LAGREPORTMINUTES 10
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 60
-- 啟動mgr:
Start  mgr

7)配置extract

  • 參數文件如下:
--base parameter
extract ex_ora
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
SETENV (TNS_ADMIN=/data/ggsdata/tnsadmin)
useridalias exora
numfiles 5000
TRANLOGOPTIONS INTEGRATEDPARAMS (max_sga_size 256, parallelism 1)
exttrail /data/ggsdata/dirdat/yx
DISCARDFILE /data/ggsdata/dirrpt/ex_ora_01.dsc,APPEND,MEGABYTES 100
DISCARDROLLOVER AT 3:00
REPORTCOUNT EVERY 30 MINUTES, RATE
REPORTROLLOVER AT 9:00
WARNLONGTRANS 2h, CHECKINTERVAL 30m
TRANLOGOPTIONS INTEGRATEDPARAMS(_CKPT_RETENTION_CHECK_FREQ 300)
TRANLOGOPTIONS EXCLUDEUSER GOLDENGATE
-- Performance optimization
cachemgr cachesize 512M, cachedirectory /data/ggsdata/dirtmp 10G
BR BRINTERVAL 40M, BRDIR BR
--map objects(150個分表)
table UPSYS.t_audition_0;
table UPSYS.t_audition_1;
......
  • 添加extract:
dblogin useridalias exora
REGISTER EXTRACT ex_ora , DATABASE
ADD EXTRACT ex_ora, INTEGRATED TRANLOG, BEGIN NOW
ADD EXTTRAIL /data/ggsdata/dirdat/yx, EXTRACT ex_ora , MEGABYTES 50
start  exora

8)配置OGG復制到MySQL

  • 安裝ogg for mysql:解壓軟件即可,不在贅述。
  • MySQL創建ogg用戶。
create user goldengate@% identified by Goldengate-123;
grant all on *.* to goldengate@%;

配置MySQL ogg mgr進程:

edit params mgr

PORT 7839
DYNAMICPORTLIST 7840-7849
ACCESSRULE, PROG SERVER, ALLOW
AUTOSTART REPLICAT *
AUTORESTART REPLICAT * retries 5 waitminutes 1
--PURGEOLDEXTRACTS /ogg/ggs_mysql/dirdat/*,usecheckpoints, minkeepdays 2
LAGREPORTMINUTES 10
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 60
--STARTUPVALIDATIONDELAY 5
DBLOGIN sourcedb user@10.10.10.12:3306, USERID goldengate, PASSWORD Goldengate-123


Start mgr

添加復制進程:

  • 添加添加checkpointtable:
create database pt;

cd $OGG_HOME
ggsci
edit param ./GLOBALS
checkpointtable pt.ggs_checkpoint
  • 添加復制進程:
DBLOGIN sourcedb pt@10.10.10.12:3306, USERID goldengate, PASSWORD Goldengate-123
add checkpointtable pt.ggs_checkpoint
add replicat rp_ora,exttrail /data/ggsdata/dirdat/yx,checkpointtable pt.ggs_checkpoint
-- 編輯復制參數:
edit params rp_ora

replicat rp_ora
targetdb user@10.10.10.12:3306,userid goldengate,password Goldengate-123
--sourcedefs   /data/ggsdata/dirdef/zly.def
discardfile /data/ggsdata/dirrpt/rep_exora.dsc,append,megabytes 50
REPERROR DEFAULT, ABEND
REPORTCOUNT EVERY 60 MINUTES, RATE
REPORTROLLOVER AT 9:00

MAP user.table_0, target user.table_0;
MAP user.table_1, target user.table_1;
......
MAP user.table_149, target user.table_149;
此時oracle和MySQL中數據一樣,且 oracle中mv未進行刷新,可直接啟動復制進程。
Start rp_ora

2.4 配置物化視圖增量刷新

set linesize 350 pages 999
col OWNER for a15
col JOB_NAME for a25
col JOB_CREATOR for a25
col ENABLED for a10
col START_DATE for a25
col NEXT_RUN_DATE for a25
col LAST_START_DATE for a25
col REPEAT_INTERVAL for a40
col JOB_ACTION for a60
SELECT OWNER,
JOB_NAME,
ENABLED,
STATE,
JOB_TYPE,
JOB_ACTION,
to_char(START_DATE, yyyy/mm/dd hh:mm) START_DATE,
to_char(LAST_START_DATE, yyyy/mm/dd hh:mm) LAST_START_DATE,
to_char(NEXT_RUN_DATE, yyyy/mm/dd hh:mm) NEXT_RUN_DATE,
REPEAT_INTERVAL,
RUN_COUNT
FROM dba_scheduler_jobs
WHERE
JOB_ACTION LIKE %TABLE_%"%
ORDER BY 6 ;
執行以上查詢,根據查詢結果編寫啟用mv增量刷新的語句,如:
exec dbms_scheduler.enable(name=>upper(UPSYS.MV_RF$J_0_S_55082) );
啟用刷新后,觀察ogg同步情況。

2.5 切換業務到MySQL

業務停止后,手動執行一次快速刷新,ogg無延遲后,將業務切換到MySQL數據庫。


經驗總結

本次遷移經過多次測試,總計耗時約2個月;測試過程中,觸發了物化視圖bug等諸多問題,甚至影響現網業務,導致測試進展緩慢。
應當充分了解業務,只有對業務對數據了解之后,才能提出新環境合理的規劃設計及選擇合理的遷移技術。
在技術選擇上,應該進行廣泛的測試,不局限于某一種技術,避免遇阻后沒有備用方案,在條件允許的情況下,能達成目標的方案都應該進行測試評估,擇優而用。


本文作者:張雷員(上海新炬中北團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129107.html

相關文章

  • OceanBase遷移服務:向分布式架構升級的直接路徑

    摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...

    KaltZK 評論0 收藏0
  • OceanBase遷移服務:向分布式架構升級的直接路徑

    摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...

    gnehc 評論0 收藏0
  • 基于雙態IT架構的混合云助力企業數字化轉型之路

    摘要:打造滿足未來穩態敏態業務的雙態架構分析機構預測,年全球的都是由數字化來驅動。單獎定介紹說,在解決敏態穩態同時落地的需求,聯想不僅提供支持雙態的混合云架構,還能幫助企業實現數據的價值。今天,越來越多的企業認識到,在企業數字化轉型的道路上,IT基礎設施是必不可少的重要支撐。隨著企業數字化轉型腳步加快,IT基礎設施也正在發生重要變革,混合云、網絡虛擬化、安全等成為這輪變革的關鍵詞。作為對市場最新變...

    Cruise_Chan 評論0 收藏0
  • PyCharm 設置小計

    摘要:在使用的新特性時,出現如下,身為完美主義強迫癥患者,怎么能忍展開詳情無腦翻譯一下如果您需要你的代碼兼容多個版本例如如果您正在構建一個庫,請啟用此檢查。檢查設置中可以指定你的代碼需要兼容的版本的范圍。 在使用Python 3.6的新特性f-strings時,出現如下warning,身為完美主義+強迫癥患者,怎么能忍? Python version 2.7 does not support...

    Warren 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<