[bigdata-069]mysql数据迁移从自建导入到rds+代码过滤增量导入 centos6.8+pymsql+mysqldump+source

来源:互联网 发布:让人喜欢的女生知乎 编辑:程序博客网 时间:2024/06/01 20:30
1. 将数据从mysql_s逐张表迁移到rds上
rds机的用户信息
内网rds的地址 xxx-db.mysql.rds.aliyuncs.com
用户名 user_t 密码: passwordisok!!!


2. 检查mysql_s和rds的细节
2.1 统计各库的信息
[root@TT-SH-SER-02 ~]# mysqlshow --count -u root -p 
Enter password: 
+--------------------+--------+--------------+
|     Databases      | Tables |  Total Rows  |
+--------------------+--------+--------------+
| information_schema |     28 |         3221 |
| mysql              |     23 |         2022 |
| test               |      0 |            0 |
| ttss_trust         |     49 |      2951457 |
+--------------------+--------+--------------+
4 rows in set.


2.2 统计一个库的信息
mysqlshow --count ttss_trust -u root -p


[root@TT-SH-SER-02 ~]# mysqlshow --count ttss_trust -u root -p
Enter password: 
Database: ttss_trust
+----------------------------+----------+------------+
|           Tables           | Columns  | Total Rows |
+----------------------------+----------+------------+
| tss_ar         |        4 |          0 |
| tss_re        |       10 |          0 |
| tss_ma           |       13 |         23 |
| tss_maa      |       10 |         89 |


2. 备份方式,以tss_api_manage为例
    2.1 源数据库是mysql_s,目标数据库是xxx-db.mysql.rds.aliyuncs.com
    2.2 在mysql_s上,将tss_api_manage导出成sql文件
     目标机上库和表已经创建,不需要创建新库,不需要创建新表,不需要删除目标机的已存库,不需要删除目标机的已存同名表。
     mysqldump -uroot -pt1234455 -n -t  ttss_trust tss_api_manage  --skip-lock-tables > tss_api_manage.sql
    2.3 在mysql_s上,将tss_api_manage导入到xxx-db.mysql.rds.aliyuncs.com
     2.3.1 mysql -hxxx-db.mysql.rds.aliyuncs.com -uuser_t -ppasswordisok!!!
     2.3.2 然后在mysql里执行:source /root/bridir/tss_api_manage.sql




     


2. mysql_s上一共有n个表
+----------------------------+
| Tables_in_ttss_tru       | 记录数/备份后记录数
+----------------------------+
| tss_are         |0/不备份
| tss_ee_rule        |0/不备份
| tss_manage           |23/搞定




3. 导出导入二进制字段表tss_attach_file
3.1 在mysql_s上执行
mysqldump -uroot -pt1234455 -n -t ttss_trust tss_attach_file  --hex-blob --skip-lock-tables > tss_attach_file.sql
3.2 在mysql_s上执行:
mysql -hxxx-db.mysql.rds.aliyuncs.com -uuser_t -ppasswordisok!!!
然后再执行
source /tmp/bridir/tss_attach_file.sql




4. 导入增量数据
写一个py程序,来判断某个记录是否在另一个库里有值,如果没有,就把这个记录insert进去。
tss_ord
tss_ecord
tss_cord
...


5. 用代码导入
临时代码,不考虑复用,简单既可
从mysql_s库取5-6之后的创建的id,如果这个id不再rds上,则记录值,然后dump导出所有这些id的记录,然后在rds的source执行。


----------------------------
#!/usr/bin/env python3
#!-*- coding:utf-8 -*-


"""
迁移:
"""


import os
import pymysql


#mysql_s上的mysql
conn_s = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='t1234455',
                         db='ttss_tru', charset='utf8')


#rds
conn_t = pymysql.connect(host='xxx-db.mysql.rds.aliyuncs.com',
                         port=3306, user='user_t', passwd='passwordisok!!!',
                         db='ttss_tru', charset='utf8')
c_s = conn_s.cursor()
c_t = conn_t.cursor()


#################


#迁移当天
t_date = '2017-05-06 00:00:00'




def trans_a_table(t_name):
    #在mysql_s上,创建日期大于date的id
    sql = 'select id from %s where create_date > \'%s\';' % (t_name, t_date)
    # sql = 'select id from %s;' % (t_name)
    c_s.execute(sql)
    to_be_insert_id = []
    #取所有的结果
    r_s = c_s.fetchall()
    for i in r_s:
        # print(i[0])
        #这个id在rds是不是有?
        sql = 'select id from %s where id = \'%s\';' % (t_name, i[0])
        c_t.execute(sql)
        r_t = c_t.fetchone()
        #如果rds里没有这个id,那么,将它记录下来
        if None == r_t:
            print(i[0])
            to_be_insert_id.append(i[0])
    #生成mysqldump命令行
    str = ''
    for i in to_be_insert_id[:1000]:
        str += 'id=\'%s\' or ' % (i)
    str = str[:-4]
    cmd = 'mysqldump -uroot -pt1234455 -n -t ttss_tru %s --where=\"%s\" --skip-lock-tables > %s.sql' % (
    t_name, str, t_name)
    print(cmd)
    os.system(cmd)
    print('source /root/bridir/%s.sql' %(t_name))


trans_a_table('tss_record')
----------------------------







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 萍果6splus关机键失灵怎么办 苹果5s很快没电怎么办 天猫分期付款没有花呗怎么办 淘宝花呗分期额度不够怎么办 支付宝余额支付超限怎么办 想分期花呗不够怎么办 来分期提现不了怎么办 帮朋友分期手机他不还钱怎么办 手机分期套现被骗了怎么办 学生既有分期办手机被骗怎么办? 京东刚买完东西第二天降价了怎么办 微信上买东西不给退货怎么办 微信买东西转红包被骗怎么办 买手机分期被骗了怎么办 苹果手机摔弯了怎么办 6s主板摔弯了怎么办 京东显示器坏了怎么办 苹果6s手机弯了怎么办 苹果手机变弯了怎么办 苹果手机屏幕摔碎了怎么办 苹果6p后壳弯曲怎么办 苹果手机后壳有点弯曲怎么办 苹果手机x弯了怎么办 苹果8手机弯了怎么办 苹果8p手机弯了怎么办? 美版iphone弯了怎么办 oppor9手机听筒声音小怎么办 苹果7摔弯了屏幕怎么办 苹果手机压弯了怎么办 京东买的电脑坏了怎么办 拼多多低价乱价怎么办 厂家不通过经销商直接发货怎么办 媳妇吵架说我全家有病怎么办 全家都不尊重媳妇怎么办 招商闪电贷有额度不通过怎么办 闪电贷页面登录不进去怎么办 91借钱极速逾期怎么办 论文没过拿不到毕业证怎么办 大学论文不过拿不到毕业证怎么办 转店被黑中介骗了钱怎么办? 被星外转铺骗了怎么办