[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')
----------------------------
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
- [bigdata-069]mysql数据迁移从自建导入到rds+代码过滤增量导入 centos6.8+pymsql+mysqldump+source
- [bigdata-039] pysql+pymongo+py3把数据从sql 导入 到mongo的通用代码
- 使用mysqldump导入数据和mysqldump增量备份(mysqldump使用方法)
- MySQL数据的导出和导入工具:mysqldump ,source
- mysqldump数据导出和source数据导入
- MySQL数据导出导入(mysqldump)
- mysql 导入数据 source
- mysql 增量导入到elasticsearch
- mysql 增量数据导出导入
- 利用SQOOP将数据从数据库导入到HDFS(并行导入,增量导入)
- Sqoop增量从MySQL中向hive导入数据
- Solr 5,5从Mysql全量、增量导入数据
- Solr-6.5.1从mysql数据库增量导入数据
- Solr 5,5从Mysql全量、增量导入数据
- NavicatforMySQL 数据导入从excel导入数据到mysql
- Sqoop数据迁移,工作机制,sqoop安装(配置),Sqoop的数据导入,导入表数据到HDFS,导入关系表到HIVE,导入到HDFS指定目录,导入表数据子集,按需导入,增量导入,sqoop数据导出
- 批量数据从excel导入到mysql
- 从文件导入数据到MySQL数据库
- Windows ubuntu 之前cwRsync 数据同步备份 工具环境配置及使用
- 栈的压入、弹出序列
- windows注册表文件关联机制
- Vue---路由跳转和嵌套
- Cesium-3D Tiles 跳跃式层级细节
- [bigdata-069]mysql数据迁移从自建导入到rds+代码过滤增量导入 centos6.8+pymsql+mysqldump+source
- python学习之路之六--input与while
- jQuery基础篇(一)样式篇
- 自定义标签库
- 2.结构型模式
- Linux下打包压缩war和解压war包
- Eclipse使用git命令行
- 织梦自定义表单验证字段不能为空,绝对实用灵活
- python实现获取天气信息后自动登录邮箱发送到指定邮件联系人