成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本

python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本

熱門標(biāo)簽:舉辦過冬奧會(huì)的城市地圖標(biāo)注 螳螂科技外呼系統(tǒng)怎么用 400電話申請(qǐng)資格 電銷機(jī)器人系統(tǒng)廠家鄭州 正安縣地圖標(biāo)注app 阿里電話機(jī)器人對(duì)話 地圖地圖標(biāo)注有嘆號(hào) 遼寧智能外呼系統(tǒng)需要多少錢 qt百度地圖標(biāo)注

python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse,腳本如下:

#!/usr/bin/env python3
# _*_ coding:utf8 _*_
 
from pymysqlreplication import BinLogStreamReader
from pymysqlreplication.row_event import (DeleteRowsEvent,UpdateRowsEvent,WriteRowsEvent,)
import clickhouse_driver
import configparser
import os
 
configfile='repl.ini'
########## 配置文件repl.ini 操作 ##################
def create_configfile(configfile,log_file,log_pos):
  config = configparser.ConfigParser()
 
  if not os.path.exists(configfile):
    config['replinfo'] = {'log_file':log_file,'log_pos':str(log_pos)}
 
    with open(configfile,'w+') as f:
      config.write(f)
 
### repl.ini 寫操作 ##################
def write_config(configfile,log_file,log_pos):
  config = configparser.ConfigParser()
  config.read(configfile)
 
  config.set('replinfo','log_file',log_file)
  config.set('replinfo','log_pos',str(log_pos))
 
  if os.path.exists(configfile):
    with open(configfile,'w+') as f:
      config.write(f)
  else:
    create_configfile(configfile)
 
### 配置文件repl.ini 讀操作 ##################
def read_config(configfile):
  config = configparser.ConfigParser()
  config.read(configfile)
  # print(config['replinfo']['log_file'])
  # print(config['replinfo']['log_pos'])
  return (config['replinfo']['log_file'],int(config['replinfo']['log_pos']))
 
############# clickhouse 操作 ##################
def ops_clickhouse(db,table,sql):
  column_type_dic={}
  try:
    client = clickhouse_driver.Client(host='127.0.0.1',\

                     port=9000,\

                     user='default',\

                     password='clickhouse')
    # sql="select name,type from system.columns where database='{0}' and table='{1}'".format(db,table)
    client.execute(sql)
 
  except Exception as error:
    message = "獲取clickhouse里面的字段類型錯(cuò)誤. %s" % (error)
    # logger.error(message)
    print(message)
    exit(1)
 
MYSQL_SETTINGS = {'host':'127.0.0.1','port':13306,'user':'root','passwd':'Root@0101'}
only_events=(DeleteRowsEvent, WriteRowsEvent, UpdateRowsEvent)
def main():
  ## 每次重啟時(shí),讀取上次同步的log_file,log_pos
  (log_file,log_pos) = read_config(configfile)
  # print(log_file+'|'+ str(log_pos))
  print('-----------------------------------------------------------------------------')
  stream = BinLogStreamReader(connection_settings=MYSQL_SETTINGS, resume_stream=True, blocking=True, \

                server_id=10,
                 only_tables='t_repl', only_schemas='test', \

                log_file=log_file,log_pos=log_pos, \

                only_events=only_events, \

                fail_on_table_metadata_unavailable=True, slave_heartbeat=10)
 
  try:
    for binlogevent in stream:
      for row in binlogevent.rows:
        ## delete操作
        if isinstance(binlogevent, DeleteRowsEvent):
          info = dict(row["values"].items())
          # print("DELETE FROM `%s`.`%s` WHERE %s = %s ;" %(binlogevent.schema ,binlogevent.table,binlogevent.primary_key,info[binlogevent.primary_key]) )
          # print("ALTER TABLE `%s`.`%s` DELETE WHERE %s = %s ;" %(binlogevent.schema ,binlogevent.table,binlogevent.primary_key,info[binlogevent.primary_key]) )
          sql="ALTER TABLE `%s`.`%s` DELETE WHERE %s = %s ;" %(binlogevent.schema ,binlogevent.table,binlogevent.primary_key,info[binlogevent.primary_key])
 
        ## update 操作
        elif isinstance(binlogevent, UpdateRowsEvent):
          info_before = dict(row["before_values"].items())
          info_after = dict(row["after_values"].items())
          # info_set = str(info_after).replace(":","=").replace("{","").replace("}","")
          info_set = str(info_after).replace(":", "=").replace("{", "").replace("}", "").replace("'","")
          # print("UPDATE `%s`.`%s` SET %s WHERE %s = %s ;"%(binlogevent.schema,binlogevent.table,info_set,binlogevent.primary_key,info_before[binlogevent.primary_key]  ) )
          # print("ALTER TABLE %s.%s UPDATE %s WHERE %s = %s ;"%(binlogevent.schema,binlogevent.table,info_set,binlogevent.primary_key,info_before[binlogevent.primary_key]  ) )
          sql = "ALTER TABLE %s.%s UPDATE %s WHERE %s = %s ;"%(binlogevent.schema,binlogevent.table,info_set,binlogevent.primary_key,info_before[binlogevent.primary_key]  )
 
        ## insert 操作
        elif isinstance(binlogevent, WriteRowsEvent):
          info = dict(row["values"].items())
          # print("INSERT INTO %s.%s(%s)VALUES%s ;"%(binlogevent.schema,binlogevent.table , ','.join(info.keys()) ,str(tuple(info.values())) ) )
          sql = "INSERT INTO %s.%s(%s)VALUES%s ;"%(binlogevent.schema,binlogevent.table , ','.join(info.keys()) ,str(tuple(info.values())) )
        ops_clickhouse('test', 't_repl',sql )
 
        # 當(dāng)前l(fā)og_file,log_pos寫入配置文件
        write_config(configfile, stream.log_file, stream.log_pos)
 
  except Exception as e:
    print(e)
  finally:
    stream.close()
 
if __name__ == "__main__":
  main()
 
 
 
'''
BinLogStreamReader()參數(shù)
ctl_connection_settings:集群保存模式信息的連接設(shè)置
resume_stream:從位置或binlog的最新事件或舊的可用事件開始
log_file:設(shè)置復(fù)制開始日志文件
log_pos:設(shè)置復(fù)制開始日志pos(resume_stream應(yīng)該為true)
auto_position:使用master_auto_position gtid設(shè)置位置
blocking:在流上讀取被阻止
only_events:允許的事件數(shù)組
ignored_events:被忽略的事件數(shù)組
only_tables:包含要觀看的表的數(shù)組(僅適用于binlog_format ROW)
ignored_tables:包含要跳過的表的數(shù)組
only_schemas:包含要觀看的模式的數(shù)組
ignored_schemas:包含要跳過的模式的數(shù)組
freeze_schema:如果為true,則不支持ALTER TABLE。速度更快。
skip_to_timestamp:在達(dá)到指定的時(shí)間戳之前忽略所有事件。
report_slave:在SHOW SLAVE HOSTS中報(bào)告奴隸。
slave_uuid:在SHOW SLAVE HOSTS中報(bào)告slave_uuid。
fail_on_table_metadata_unavailable:如果我們無法獲取有關(guān)row_events的表信息,應(yīng)該引發(fā)異常
slave_heartbeat:(秒)主站應(yīng)主動(dòng)發(fā)送心跳連接。這也減少了復(fù)制恢復(fù)時(shí)GTID復(fù)制的流量(在許多事件在binlog中跳過的情況下)。請(qǐng)參閱mysql文檔中的MASTER_HEARTBEAT_PERIOD以了解語義
'''

知識(shí)點(diǎn)擴(kuò)展:

MySQL備份-增量同步

mysql增量同步主要使用binlog文件進(jìn)行同步,binlog文件主要記錄的是數(shù)據(jù)庫更新操作相關(guān)的內(nèi)容。

1. 備份數(shù)據(jù)的意義

針對(duì)不同業(yè)務(wù),7*24小時(shí)提供服務(wù)和數(shù)據(jù)的重要性不同。
數(shù)據(jù)庫數(shù)據(jù)是比較核心的數(shù)據(jù),對(duì)企業(yè)的經(jīng)營至關(guān)重要,數(shù)據(jù)庫備份顯得尤為重要。

2. 備份數(shù)據(jù)庫

MySQL數(shù)據(jù)庫自帶的備份命令 `mysqldump`,基本使用方法:
語法:`mysqldump -u username -p password dbname > filename.sql`

執(zhí)行備份命令

`mysqldump -uroot -pmysqladmin db_test > /opt/mysql_bak.sql`

查看備份內(nèi)容

`grep -v "#|\*|--|^$" /opt/mysql_bak.sql`

到此這篇關(guān)于python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本的文章就介紹到這了,更多相關(guān)python實(shí)現(xiàn)MySQL增量同步數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于python的mysql復(fù)制工具詳解
  • 由Python編寫的MySQL管理工具代碼實(shí)例
  • python實(shí)現(xiàn)讀取excel寫入mysql的小工具詳解
  • Python操作MySQL數(shù)據(jù)庫的簡單步驟分享
  • Python爬蟲爬取全球疫情數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫的步驟
  • Python爬取騰訊疫情實(shí)時(shí)數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫的示例代碼
  • 解決python mysql insert語句的問題
  • python 在mysql中插入null空值的操作
  • 用python開發(fā)一款操作MySQL的小工具

標(biāo)簽:昭通 合肥 興安盟 淘寶好評(píng)回訪 濟(jì)源 信陽 阜新 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本》,本文關(guān)鍵詞  python,實(shí)現(xiàn),MySQL,指定,表,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本》相關(guān)的同類信息!
  • 本頁收集關(guān)于python實(shí)現(xiàn)MySQL指定表增量同步數(shù)據(jù)到clickhouse的腳本的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    奇米影视777在线欧美电影观看| 久久久久久久久久久综合| 毛片a片免费观看| 99热在线网站| 蜜桃精品视频在线| 欧美成人精品影院| 中文字幕中文乱码欧美一区二区| www免费在线观看| 国产又黄又爽又色| 波多野结衣午夜| 日韩免费av一区| 欧美色图在线观看| 国产视频第一页在线观看| 九九视频免费观看| 在线观看制服搞黄视频| 国产有码在线一区二区视频| 精品视频免费| 久久99热精品这里久久精品| 99国产超薄丝袜足j在线观看| 欧美多人爱爱视频网站| 国产精品99精品| 好吊色欧美一区二区三区| 99中文字幕在线观看| 精品一区二区三区中文字幕视频| 欧美一区二区三| 欧美日韩一区二区三区不卡视频| 激情五月综合色婷婷一区二区| av电影在线观看完整版一区二区| 欧美高清在线一区二区| canopen超线视频网线的应用| 久久亚洲黄色| www.日韩欧美| 8x8x最新地址| 国产综合精品一区二区三区| 亚洲一区资源| 免费成人高清| 色偷偷88欧美精品久久久| 日韩精品亚洲一区二区三区免费| 99伊人久久| 亚洲欧美自拍一区| 成人在线免费观看网站| hd国产人妖ts另类视频| 69精品丰满人妻无码视频a片| 国产真实精品久久二三区| 国产女人高潮的av毛片| 欧美人与禽性xxxxx杂性| 国产精品7m凸凹视频分类| 日本成年人网址| 在线观看免费观看在线| 国产一区亚洲| 国产高清一区二区三区| 亚洲精品伦理在线| 免费91麻豆精品国产自产在线观看| 国产一级伦理片| 久久久久久无码精品人妻一区二区| 91在线资源| 国产又色又爽又黄又免费| 精品国产免费人成电影在线观看四季| 黄色成人91| 色婷婷精品久久二区二区密| 国产精品影视网| 精品免费一区二区三区蜜桃| 免费一区二区三区四区| 国产变态拳头交视频一区二区| 欧美一区二区三区公司| 中文视频一区视频二区视频三区| av中文字幕在线看| 国产国语性生话播放| 国产精久久久| kk眼镜猥琐国模调教系列一区二区| 99国内精品久久| 老熟妇仑乱视频一区二区| a毛片在线看免费观看| 精品国产免费视频| 亚洲精品一区在线| 成人午夜激情免费视频| 轻轻色免费在线视频| 91.麻豆视频| 男人天堂1024| 99在线精品视频免费观看软件| 伊人久久大香线蕉av一区| 水野朝阳av一区二区三区| av资源中文色综合| 一区二区三区视频免费视频观看网站| www.桃色av嫩草.com| 亚洲激情男女视频| 男人的天堂亚洲| 欧美xxxx三人交性视频| 在线播放高清视频www| 69av在线播放| 亚洲一级免费在线观看| 宅男在线国产精品| 国产精品久久久久久久免费软件| 成片免费观看视频| 狠狠色噜噜狠狠狠8888米奇| 男女h黄动漫啪啪无遮挡软件| 精品一区亚洲| 精品一区二区三区四区| 日韩极品视频在线观看| 一本久久知道综合久久| 欧美亚洲一区三区| 亚洲视频久久| 国产91热爆ts人妖在线| 岛国av在线不卡| 老师我好爽再深一点的视频| 99久久婷婷国产综合精品电影| 日韩成人精品在线| 亚洲精品综合久久中文字幕| 成人av动漫在线观看| 91一区二区三区在线| 亚洲波多野结衣| 好吊成人免视频| 久久精品日产第一区二区| 99热在线这里只有精品| 9191精品国产综合久久久久久| 国产精品91久久久久久| 豆国产97在线| 免费看又黄又无码的网站| 欧美国产日韩一二三区| 亚洲专区在线视频| jiujiure精品视频播放| 国精产品一区二区三区| 亚洲国产网址| 最新日本中文字幕| 3atv一区二区三区| 欧美精品hd| 免费看裸体网站| 在线观看的毛片| 亚洲精品国产视频| 美女网站视频久久| 久久久久久久久久影院| 国产麻豆9l精品三级站| 午夜日韩电影| 清纯唯美亚洲激情| 中文字幕在线视频网| 欧美精品在线观看一区二区| 欧美妇性猛交视频| jiujiure精品视频播放| 欧美插插视频| 巨胸喷奶水www久久久| 波多野结衣家庭教师在线观看| 欧美高清电影在线| 天堂网视频在线| 国产精品v欧美精品∨日韩| 亚洲一区在线视频观看| 成人国产1314www色视频| 国产超碰人人爽人人做人人爱| 中文字幕日韩av综合精品| 国产日韩在线不卡| 视频国产在线观看| 人人天天夜夜| 99久久99久久精品免费观看| 免费网站在线观看人| 制服丝袜中文字幕亚洲| 久草国产在线视频| 91自拍.com| 亚洲免费视频在线观看| 国产成人tv| 日韩一级在线视频| 欧美伊人久久| 99国产麻豆精品| 午夜精品爽啪视频| 国产亚洲精品久久久久久无几年桃| 91精品国产91久久久久久吃药| 国产精品欧美激情在线观看| 9999精品免费视频| 狠狠干在线视频| 日韩性xxx| 大波视频国产精品久久| 久久精品国产亚洲av高清色欲| 国产在线观看不卡| 日日躁夜夜躁白天躁晚上躁91| 国精产品乱码一区一区三区四区| 精品电影一区二区| 伊人春色之综合网| 先锋影音av在线资源| 久久精品a一级国产免视看成人| 欧洲精品一区色| 成人一二三四区| 午夜一区在线观看| 国产一级淫片a视频免费观看| 中文日韩在线观看| 日韩国产福利| 国产男男gay网站| 中文字幕9999| 九九热hot精品视频在线播放| 精品久久久久久久久久久久久久久久久| 夜夜嗨av一区二区三区| 天堂在线观看一卡二卡三卡四卡| 91免费版网站入口| 日本在线视频一区二区三区| 波多野结衣高清视频| 欧美顶级少妇做爰| 久色婷婷小香蕉久久| 精品乱码一区内射人妻无码| 97在线视频观看| 欧美色女视频| 午夜激情视频在线| 欧美久久久久久久久久久| 欧美视频自拍偷拍| 国产a亚洲精品| 极度色播免费播放视频| 91麻豆国产香蕉久久精品| 日韩久久免费电影| 亚洲欧美小说国产图片| 日韩在线视频线视频免费网站| 偷拍自拍亚洲| eeuss影影院www在线播放| 相泽南亚洲一区二区在线播放| 欧美性大战xxxxx久久久| 麻豆精品视频| 人人做人人爽人人爱| 欧美影院在线| 日韩码欧中文字| 国产在线观看一区二区| 91精品91久久久久久| 国产午夜精品久久久久免费视| 成人免费网站在线观看| 欧美最顶级a∨艳星| 精品久久久久久久久久久久| 性色av一区二区| 中文字幕资源站| 成人免费大片黄在线播放| 亚洲男人天堂古典| 久久蜜桃av一区精品变态类天堂| 日韩欧美精品中文字幕| 欧美91福利在线观看| 亚洲精品成人无限看| 成人av在线播放网站| 成人动漫av在线| 一级特黄特色的免费大片| 久久久久久国产精品免费无遮挡| 一区不卡在线观看| 成人网av.com/| 国产网友自拍视频导航网站在线观看| 国产色综合一区| 亚洲啪啪aⅴ一区二区三区9色| 26uuu亚洲伊人春色| 欧美性黄网官网| 91精品综合久久| 亚洲国产99精品国自产| 久久久久久久香蕉网| www.超碰在线观看| 黄网在线播放| 成人在线免费观看一区| 韩国xxxx做受gayxxxx| 九色免费视频| 欧美一区二区人人喊爽| 免费看91视频| 成人亚洲在线观看| 影音先锋成人资源网站| 欧美在线观看一区| 护士精品一区二区三区| 精品国产av一区二区| 极品白嫩的小少妇| 九一国产在线| 国产极品999| 日韩在线一区二区三区四区| 青青草av在线播放| 国产在线精品国自产拍免费| 国产精品igao网网址不卡| 久久精品视频16| 青青青国产在线视频| 亚洲一区中文字幕永久在线| 欧美特黄一级视频| av在线你懂的| 亚洲一区二区三区在线播放| zjzjzjzjzj亚洲女人| 国产超碰在线观看| 中国女人真人一级毛片| bl动漫在线观看| 懂色中文一区二区在线播放| 一区二区三区 在线观看视| 国产极品嫩模在线视频一区| 在线中文字幕第一页| 国产精品主播一区二区| 欧美日韩精品一区二区| 国产大片中文字幕| 国产一区二区久久| 丝袜制服影音先锋| 欲色天天网综合久久| 亚洲一区在线免费观看| 久久美女福利视频| 色悠悠在线视频| 国产伦子伦对白视频| 国产日本欧美一区| 嗯~啊~轻一点视频日本在线观看| 久久国产精彩视频| 毛片av免费观看| 色91精品久久久久久久久| 日韩成人一区二区| 在线精品视频一区二区三四| 妞干网这里只有精品| 1024免费在线视频| 精品亚洲一区二区三区四区| 亚洲精品国产综合区久久久久久久| 热99re久久精品这里都是免费| 亚洲影院一区| 欧美日韩国产一二三| 2019中文字幕视频| 91香蕉一区二区三区在线观看| 中文在线√天堂| 亚洲激情视频| 青青草国产免费自拍| 国产精品视频一区二区三| 18欧美亚洲精品| 91精品国产91久久久久麻豆 主演| 重囗味另类老妇506070| 日韩Av无码精品| 国产成人亚洲综合91精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 成人av.网址在线网站| 国产精彩视频一区二区| 国产男男chinese网站| 国产伦精一区二区三区| 欧美亚洲综合一区| 97超碰人人在线| 成人国产精品一级毛片视频| 午夜一区二区三区在线观看| 精品按摩偷拍| 亚洲一级生活片| 国产在线视频欧美一区| 夜夜爽夜夜操| 一级黄色电影片| 国产欧美一区二区精品秋霞影院| 97视频精彩视频在线观看| 久久好看免费视频| 欧美在线短视频|