1. 程式人生 > >mysql資料庫的無縫遷移(百度技術沙龍開放空間環境討論主題)

mysql資料庫的無縫遷移(百度技術沙龍開放空間環境討論主題)

 轉自http://www.cnblogs.com/sunli/archive/2010/09/12/mysql_migration_seamless.html

昨天(9月11號)參加了infoq百度共同舉辦的技術沙龍《MySQL效能優化及空間資料庫開發實踐》,百度的劉斌分享的內容相信對目前正欲使用ssd來提升mysql效能的朋友非常有幫助,同時,個人覺得ssd在其他資料儲存上也有很大的空間。顏勳講的空間資料庫方面的,我平時沒有怎麼接觸過,不過看起來應該也是非常不錯,應該對做地理資訊的朋友很有幫助。最後的open space環境有兩個小組討論了一些問題,但是最後沒有什麼答案,正好我有些類似的經驗,所以也就分享了下。

       mysql資料庫的無縫遷移問題?

     問:在平時的開始過程中,由於經常“需求理解,架構設計,需求變更”等多種原因,導致系統執行一段時間後,資料庫的表結構需要變更,如何實現儘量短的停機,實現無縫的遷移?

     我開玩笑說,最好的解決辦法就是不遷移。不遷移肯定最好,這要依賴於非常好的設計,在前期架構設計的時候能夠考慮到需求可能的變更,資料庫設計也可以根據業務來進行一定程度的抽象。這可能有點太理想,不過遷移資料,始終是個不可避免的問題。下面說下一般的遷移方案。

     定點停機遷移

     就像那位朋友說的,在一個月黑風高的夜晚,停掉應用,用事先寫好的遷移程式,把mysql 資料庫資料遷移到新結構的mysql資料庫中。完成後,切換應用。最大的缺點就是隨著資料量的增加停機時間會變得非常長。

    mysql binlog方案

mysql的遷移可以考慮mysql的主從複製 replication的特性,解析binlog日誌出來,然後根據新的業務特點設計的資料庫結構,把資料寫入到新的資料庫,執行遷移過程不需要停機。在資料遷移基本上完成的時候,停掉前段應用,等待遷移全部完成,切換應用到新庫。停機時間非常短,只需要幾乎1-2分鐘或者更少。

    觸發器方案

     備份老的mysql資料表結構到新的mysql資料庫,在新庫建立新的表結構,更改老的資料庫表,建立觸發器,讓資料的寫入的時候同時寫入到的心的mysql表。dump老的mysql的資料,匯入到新的mysql,這是新的mysql表結構的表應該已經有相應的資料了。然後開啟主從複製,讓其達到跟主庫資料一致。切換應用,遷移到的方案。停機時間非常短,只需要幾乎1-2分鐘或者更少。

     mysql udf方案

     mysql的udf允許你開發自己的函式整合到mysql中,這樣你可以很方便的在資料寫入的時候同時寫到的其他地方。缺點是開發成本大,需要對mysql udf有了解。也可以用現成的memcached_functions_mysql和lib_mysqludf_json來實現,你就不需要編寫udf函數了,只需要實現一個memcached的服務端來接受資料,然後解析json到新的資料庫就OK了。memcached協議非常簡單,自己實現起來也很容易。這種方案的遷移時間也會非常短。

    中介軟體方案

    這種方案必須要你的應用連線資料使用了類似中間層的方案,你只需要在中間層增加同時往新庫寫資料就OK了。這種方案的依賴比較大,相信小一點的公司可能都沒有條件。

    總結:要實現無縫遷移,成本和難度肯定會增加,這需要結合你的業務需要來具體實施。遷移方案需要進行充分的測試,以及考慮出錯的回滾方案。

相關推薦

mysql資料庫無縫遷移技術沙龍開放空間環境討論主題

 轉自http://www.cnblogs.com/sunli/archive/2010/09/12/mysql_migration_seamless.html 昨天(9月11號)參加了infoq和百度共同舉辦的技術沙龍《MySQL效能優化及空間資料庫開發實踐》,百度

三十三期技術沙龍筆記整理

net structure 更新 缺失 dag 存在 文本分析 infoq 科學 此次技術沙龍是由百度的高級架構師陳天健和豆瓣首席科學家王守崑為主講,大主題是推薦系統。 陳天健的主要話題是百度推薦引擎計算平臺架構中的流式計算架構。中間有一種因為

第四十期技術沙龍筆記整理

無法 但是 hash esql 官方 標準 數據挖掘 轉換 gps 本期的技術沙龍主題內容是LBS技術,雖然LBS應用最近這兩年在業內炒得風生水起,但是我感覺離廣泛應用好像還是有一定距離。 本期的講座主講講師是百度定位服務負責人張傳明、陌陌的CTO李誌威、北

進入MySQL資料庫的大門學習筆記,有你就夠了

一、初識資料庫 1、什麼是資料庫 資料庫叫database ,簡稱DB,是長期存放在計算機內,有組織、可共享的大量資料的集合;資料庫就是存放資料的倉庫,專業的資料庫系統具有較小的資料冗餘度,較高的資料安全性,易擴充套件性。 資料庫設計原則: mysql主要優勢:一個應用對

Android面試彙總+360+Tencent+淘寶+Qualcomm+HTC

彙總筆者經歷了一些來自百度,360,淘寶,騰訊,高通中國,htc上海的電話面試及現場面試,還有筆試相關題目 百度:百度在北京中關村上地七街奎科科技大廈,不大但是很安靜的一個辦公地點。 百度技術面試分為兩輪,第一輪基礎技術面試,一般為專案負責人,主要考察基本知識及知識廣度,第二輪面試一般為部門負責 人,主要考察

C# 實現客戶端程式自動更新搜索C#雲更新程式

http://www.cnblogs.com/jenry/archive/2006/08/15/477302.html 由於微軟提供的更新程式使用不方便,所以又寫了此程式。此程式是本人一年前所寫的一段程式,當時在開發一個CS版本報價系統,當時由於開發過程倉促,程式碼可能有

sql資料庫連線:使用者‘sa’登入失敗問題破解加個人總結

程式設計環境:Microsoft Visual C# 2005 資料庫:sql server2005 目的:使用GridView控制元件繫結資料 頁面載入時間Page_Load中編寫程式碼如下:         string sqlCon = "Data Source=(l

遷移之前空間博客09年到13年的文章

來看 學習 img size afa log cto 之前 分享 2009年開始記錄自己的IT技術學習經歷,一直放在百度空間。斷斷續續堅持到了2013年。 後來換了工作,同時百度空間關閉,自己也沒有遷移數據到其他博客平臺。 最近又想學點兒東西,想記錄一下。 看來看去還是51

APP測試教福利:Appium 國內下載地址雲盤,已更新至 1.3.4.1

monkey 語言 1.3 更新 follow zha install ast IT 鏈接是Appium相關安裝包下載地址(exe&dmg格式),如需自取:) 最新更新的是: appium-1.3.4.dmg& AppiumForWindows-1.3.4.

app自動化測試之實戰應用app簡單測試

127.0.0.1 ppi eset float package light reset andro spl 在百度app中搜索python相關內容代碼如下: from appium import webdriver desired_caps = {} desire

2017年秋季校招前端面經,騰訊,網易,華為,樂視等

優勢 end 曾經 agg line 網上 秋季 期望 概念 華為實習生面試(人生第一面,4月份):那時候學了前端兩月有余,很多傻傻不知道。 面試官人蠻好的,問了很多我都不知道,所以什麽方面都問了一些,不過最後還是說了句,算你過了。 技術面:   自我介紹語言混,沒有邏輯

知乎內容抓取二內含知道、熱點和代理ip抓取

sts 精華 可用 其他 添加 get word 登錄 rar 代碼路徑:https://github.com/prophetss/zhihu-crawl   接上一篇,知乎的抓取主要是獲取所有話題id進而可以得到所有話題url地址然後就可以抓取具體內容了。之前通過根話

Mysql資料庫亂碼問題資料庫連結、資料庫格式、資料表列的字符集都是UTF8,但還是會報錯的解決方法

在做專案的時候遇到一個問題。插入資料的時候中文出現亂碼問題。檢視程式碼中與資料庫的連結,已經設定了UTF-8的編碼,檢視資料庫,資料庫格式也是UTF-8格式,檢視資料表的列,屬性也是UTF-8,檢視程式碼的編碼格式也是UTF-8,但是在插入資料的時候中文還是會出現亂碼問題。 最

演算法題 90:從多個數組中找最大值筆試題

題目:有n個長度均為m的整型陣列,陣列中的元素都是從小到大有序排列,從所有這些陣列m*n個數中,找出值最大的前k個。請給出思路和時間複雜度。 類似賽馬問題做法 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴

六天帶你玩轉mysql資料庫--第一天

這是一系列視訊學習,寫部落格也是方便自己之後複習,有大家需要的資料可以給個參考。 接上一篇:https://blog.csdn.net/aaaaaab_/article/details/80015589 原資料表: 修改欄位: alter table 表名 mo

初觸Python,關於pyquery解析html貼吧

一直聽同事說Python是個神奇的語言,上週在逛知乎的時候深受這個話題的啟發。 能利用爬蟲技術做到哪些很酷很有趣很有用的事情? 先是說到IDE的選擇,作為python新人,雖然知道mac終端自帶Python,但在一番谷歌百度之後,還是選擇了PyCharm 。理由大概是 PyCharm比

主從庫同步與讀寫分離雲教學視訊分享

目錄 一、理論解析  二、教學視訊 一、理論解析  第一步,Master 及主伺服器將對資料的操作記錄到二進位制日誌當中(Binary log)當中。在每個事務更新資料完成之前,Master 在日誌裡記錄這些改變,MySql 將日誌序列的寫入二進位制當中,在事

python 爬取動態網頁圖片

# python 3.6.3 import re import os from urllib import parse from urllib import request ################################################### # 搜尋關鍵字

二進位制轉十進位制,十進位制轉二進位制經驗

 轉成二進位制主要有以下幾種:正整數轉二進位制,負整數轉二進位制,小數轉二進位制; 1、  正整數轉成二進位制。要點一定一定要記住哈:除二取餘,然後倒序排列,高位補零。         也就是說,將正的十進位制數除以二,得到的商再除

MySQL資料庫錯誤集錦1:Can't connect to MySQL server on localhost (10061)

問題描述: 在命令列輸入 mysql -u root -p 登入mysql,返回”Can’t connect to MySQL server on localhost (10061)”錯誤。 解決方法: 1、將mysql加入到Windows的服務中。切換到mysql安裝目錄下的bin資料夾