在杭州某银行项目部署的工作经历回顾

之前工作积累的数据需要到合作伙伴某银行上内部进行部署,中间遇到很多坑,最后都一一解决了,现在把遇到的坑都好好总结一下,以后遇到同样的问题,可作为参考。

 

数据的导入

 

1.将mysql数据库操作:

  • 把原数据库中的表数据结构导成sql文件
  • 把原数据库中的表数据导成.txt文件
  • 把load file 的sql 脚本导成sql文件   

2.优化mysql的存储配置

[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
#innodb_buffer_pool_size = 2G
#innodb_flush_log_at_trx_commit = 0
lower_case_table_names = 1
innodb_file_per_table = 1
wait_timeout=1800
max_connection=3000
default-storage-engine = innodb
thread_cache_size=64

local-infile = 1

# Change following line if you want to store your database elsewhere
datadir = /var/lib/mysql
skip-external-locking
key_buffer_size = 400M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 4M
net_buffer_length = 1M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 8M

innodb_log_file_size = 500M
innodb_log_buffer_size = 20M
innodb_flush_log_at_trx_commit = 0
innodb_lock_wait_timeout = 50


[safe_mysqld]
log-error       = /var/log/mysql/mysqld.log
socket          = /var/lib/mysql/mysql.sock

!includedir /etc/mysql

[mysqldump]
socket          = /var/lib/mysql/mysql.sock
quick
max_allowed_packet = 16M

[mysql]

local-infile = 1


[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

  ps :  关于mysql的优化配置参照了这边博客http://blog.51cto.com/5434718/1207526

3.使用Load导入.txt数据文件

ps:如果想了解如何操作LOAD DATA的具体操作可以看我的另一篇博客:

关于mysql大批量数据的索引优化与备份问题

 

环境搭建

 

1.安装python3环境与依赖包

  • 生产环境是SUSE11 企业版,离线内网系统,无法连网操作,意味着只能源码安装
  • 在自己电脑的的环境下,预先现在好所有的安装包

关于如何离线安装python环境可以参照这篇博客pip 9.0 离线安装Python3的环境库

  • 安装Anacoda 的Linux版本【python3.6版本】,这里要罗嗦两句,原本打算下载python3.4的源码进行安装的,但是离线环境无法用yum安装所需要的依赖环境,安装的python3总是缺少相关依赖包,在折腾了一天无果之后放弃,最终采用这这种方案。

关于如何下载Anacoda的Linux版本可以参见这篇博客 linux下Anaconda的安装

如果sudo vim /etc/profile 编辑时没有权限,就 sudo chmod 755  /etc/profile

  • 安装环境所需依赖包。前面已经下载了离线文件packages依赖包和requiements.txt文件,Anacoda里边自带pip,如果缺少那个依赖包,进入到packages目录,直接利用pip install 下载相应的包就可以了。

 

同步到本地Elasticsearch

 

1.打开elsaticsearch

2.导入数据,从mysql中提取数据导入ES中

下面是部分代码:

# -*- coding: utf-8 -*-
from datetime import datetime
from elasticsearch import Elasticsearch
import elasticsearch.helpers
import pymysql
import json


def conn():
    es = Elasticsearch("http://esaddress:9200/", verify_certs=False,timeout = 60)
    db=pymysql.connect(host='localhost',user='root',password='123123',db='dbdb',local_infile=1,charset='utf8')
    cursor = db.cursor()
    sql = "select * from sm_auction "
    cursor.execute(sql)
    data = cursor.fetchall()
    for dataInfo in data:
        #print(dataInfo)
        package = []
        row = {
            "id": dataInfo[1],
            "create_by": dataInfo[2],
            "create_date": dataInfo[3]    
        }
        # print(row)
        package.append(row)
        action = [
            {
                '_op_type': 'index',
                '_index': "test",
                '_type': "data",
                '_source': d
            }
            for d in package
            ]
        elasticsearch.helpers.bulk(es, action)
        print("******"*20)
        print("插入elasticsearch成功")


if __name__ == '__main__':
    conn()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  •  

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值