加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[bigdata-069]mysql数据迁移从自建导入到rds+代码过滤增量导入 c

发布时间:2020-12-14 03:12:10 所属栏目:大数据 来源:网络整理
导读: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 pas
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!!!',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') ----------------------------

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读