把投影片傳到 Speaker Deck 上了:「MySQL to NoSQL & Search Engine」。
這是在介紹 noplay/python-mysql-replication 這個軟體,我在示範時用的 python script 有增加 blocking
參數讓他保持一直讀取 MySQL replication stream:
from pymysqlreplication import BinLogStreamReader mysql_settings = {'host': '127.0.0.1', 'port': 3306, 'user': 'root', 'passwd': ''} stream = BinLogStreamReader(connection_settings = mysql_settings, server_id=100, blocking=True) for binlogevent in stream: binlogevent.dump() stream.close()
利用這樣的工具可以做很多事情,像是當 post
表格更新時自動更新 search engine,並且清空 memcached 內的資料。這可以避免使用 library 時有可能會漏掉忘記做 (因為有些程式不用 library 處理),可靠度比較高。
另外一方面 replication protocol 本身就有考慮重連的問題,重新接上時是可以從上一次處理完的資料繼續處理 (只要不要隔太久),這讓寫應用的人不需要用太複雜的方式確保他不會漏掉。