-
2022-02-10 18:35:03
MySQL千万级数据迁移方案
MySQLDump
导出
mysqldump -h [host] --port [port] -u[user] -p [db_name] [table_name] --where=[sql] > [file_path]
注:
- host:服务器IP,默认为127.0.0.1
- port:数据库端口,默认为3306
- user:数据库用户名
- db_name:数据库名
- table_name:数据表名
- sql:where查询条件
- file_path:导出的文件地址
例子
mysqldump -h 127.0.0.1 --port 3306 -uroot -p test operate_record --where="update_time like '201801%' order by update_time limit 100,50" > D:/test.sql
- 对于超大量的数据导出时需要进行分页处理(limit后第一个参数为数据偏移量,第二个参数为每页大小)
- 先排序后分页!!!
导入
导入前对数据
sql
文件全局替换表名mysql -uroot -p mytest < D:/test.sql
CREATE SELETE
SELETE INTO OUTFILE
更多相关内容 -
不同场景下 MySQL 的迁移方案
2020-12-14 20:37:01MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸内心神往的城堡。 ... -
MySQL数据库迁移快速导出导入大量数据
2020-09-09 05:00:14今天小编就为大家分享一篇关于MySQL数据库迁移快速导出导入大量数据,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
MySQL 数据库跨操作系统的最快迁移方法
2020-12-15 13:56:16数据库文件很大,约有70G, 如果普通的迁移,需要在原始数据库导出数据,然后在新数据库导入数据 经仔细考虑,是否MySQL的数据库文件存储格式在不同的操作系统相同呢? 测试过程如下: 在64位SUN机器上安装64位版的... -
MySQL数据迁移使用MySQLdump命令
2020-12-16 03:57:56该方案优点是简单,容易手上;缺点是停机时间较长。 因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成。 以下是MySQLdump命令的一些用法: 1.将整个数据库的数据及建表文件导出到sql... -
MySQL数据库迁移方案比较和使用
2021-12-09 17:37:46mysql提供了对数据迁移需求的支持手段,mysqldump是MySQL自带的逻辑备份工具,它的备份原理是通过协议连接到MySQL数据库,根据参数转换,将需要操作的数据查询出来,然后将数据转换成相应的查询语句,生成sql脚本...数据库迁移方案
数据迁移(Data migration)是指在存储类型、格式和计算机系统之间的数据转换。
1 常用的迁移方案介绍
项目使用的数据存储技术是MySQL,关于MySQL的迁移方案大致分为三类:
1.1 mysqldump命令
mysql提供了对数据迁移需求的支持手段,mysqldump是MySQL自带的逻辑备份工具,它的备份原理是通过协议连接到MySQL数据库,根据参数转换,将需要操作的数据查询出来,然后将数据转换成相应的查询语句,生成sql脚本文件,将sql脚本拷贝到迁移机器上,执行脚本文件即可。
这种数据迁移方案被官方所支持,也是较为推荐使用的方案。因为该方法采用sql脚本命令进行数据库迁移,兼容性最好,准确性最高,只是速率会较慢。
mysqldump命令参数说明
参数名 缩写 含义 –host -h 服务器IP地址 –port -P 服务器端口号 –user -u MySQL 用户名 –password -p MySQL 密码 –databases 指定要备份的数据库 –all-databases 备份mysql服务器上的所有数据库 –compact 压缩模式,产生更少的输出 –comments 添加注释信息 –complete-insert 输出完成的插入语句 –lock-tables 备份前,锁定所有数据库表 –no-create-db/–no-create-info 禁止生成创建数据库语句 –force 当出现错误时仍然继续备份操作 –default-character-set 指定默认字符集 –add-locks 备份数据库表时锁定数据库表 1.2 拷贝数据库文件目录
这种方式采用的是数据目录迁移,将数据库文件存档目录直接拷贝至要迁移的目标机器。
可以直接将mysql存储数据的目录copy下来,用ftp等方式上传至新主机的对应存储数据的目录下。该操作需要关闭两端的数据库服务,否则将产生错误。
该方法只支持myql的Myisam的表引擎。该方法迁移速度快,但因Mysql默认采用innodb引擎,适用场景少,且数据库版本升级后出错率高。
1.3 使用整盘迁移工具
采用云主机的第三方迁移工具,将整个磁盘文件直接进行迁移。
该方法迁移速度快,对业务中断时间短,但成本高,一般为收费工具。
2 项目数据迁移方案
基于项目实验数据特点及迁移过程的要求,综合比对三种数据迁移方案的优缺点之后,项目采用的数据迁移方案为第一种,使用MySQL自带的逻辑备份工具mysqldump将项目数据库转成sql脚本文件,然后拷贝sql脚本文件在目标机器上进行执行,完成数据迁移工作。
2.1 迁移数据库操作
在使用mysqldump进行迁移数据库之前,首先要将mysql数据库表锁定,将存在内存中的数据写入磁盘之中,命令如下
mysql>flush tables with read lock;
用mysqldump将数据库中数据导出为sql文件
C:\windows>mysqldump -uroot -p000000 AISDB > d:AIS\aisdb.sql
命令参数说明:
参数 参数说明 mysqldump mysqldump命令 -uroot 数据库使用root用户登录 -p1234 数据库密码1234 AISDB 迁移数据库名为AISDB >d:\Game\test.sql sql文件的存储路径 2.2 目标数据库导入操作
将sql文件拷贝到目标机器上,采用MySQL提供的sql脚本执行支持技术,将数据迁移的sql文件再转换成数据导入到目标机器。
注意,因为数据迁移转换的sql脚本不能自动生成数据库,所以在转换前需要建好数据库,数据库名可以根据需求设定。
建库语句:
mysql>create database dbName;
使用MySQL数据库提供的mysql命令,执行sql语句将数据迁移到目标机器数据库中,执行语句
C:\windows>mysql -uroot -p000000 AISDB < d:\AIS\aisdb.sql
命令参数说明:
参数 参数说明 mysql mysql命令 -uroot 数据库使用root用户登录 -p1234 数据库密码1234 AISDB 迁移数据库名为AISDB <d:\Game\test.sql 执行sql脚本写入数据库 -
Mysql迁移Oracle方案
2018-03-14 14:48:292 数据迁移 2.1 数据准备 2.1.1 生产数据备份 2.1.2 导入机还原备份文件 2.2 Oracle SQL Developer配置连接 2.2.1 连接本机mysql数据库 2.2.2 连接生产oracle数据库 2.3 执行迁移 2.3.1 关联移植资料档案库 2.3.2 ... -
如何把sqlserver数据迁移到mysql数据库及需要注意事项
2020-12-15 07:30:51在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL。下面是小编日常整理的一种sqlserver数据库迁移的方法。 一、SQL Server中常... -
MySQL迁移升级解决方案
2021-01-18 19:19:48原标题:MySQL迁移升级解决方案任务背景 由于现有业务架构已不能满足当前业务需求,在保证数据完整的前提下,现需要将原有数据库迁移到另外一台单独的服务器上,在保证原有服务正常的情况下,将原有LAMP环境中mysql...原标题:MySQL迁移升级解决方案
任务背景
由于现有业务架构已不能满足当前业务需求,在保证数据完整的前提下,现需要将原有数据库迁移到另外一台单独的服务器上,在保证原有服务正常的情况下,将原有LAMP环境中mysql数据库版本5.6.31升级为5.6.35.
任务要求
1. 在业务维护时间(02:00-4:00)段对数据库进行全量备份
2. 将MySQL数据库从原有服务器迁移到新服务器上并且升级版本为5.6.35
任务拆解
1. 新服务器安装Centos7.5,并且安装MySQL-5.6.35版本数据库
2. 停止监控、停止前端应用、停止MySQL数据库
3. 备份数据库(省略)
4. 迁移数据库——>同步数据库文件到新的环境中(rsync/scp)
5. 测试验证
任务解决方案
环境说明
具体步骤
1. 老环境停止相应服务
1) 停止监控略2) 停止应用服务apache和数据库[root@lamp ~]# service httpd stop[root@lamp ~]# service mysql stopShutting down MySQL.. SUCCESS!
2. 新环境部署安装MySQL
① 官网下载mysql软件
# du -sh mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz301M mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
② 安装需求
安装目录(basedir):/usr/local/mysql数据库目录(datadir):/usr/local/mysql/data端口:3306socket文件:/tmp/mysql.sock错误日志文件:/usr/local/mysql/data/mysql.err
③ glibc方式安装步骤
1) 解压软件包
# tar -xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz# cd /usr/local/# ln -s /soft/installer/mysql-5.6.35-linux-glibc2.5-x86_64 mysql注意:进入到/usr/local目录里软连接
2) 创建用户并修改目录权限
1. 查看用户是否存在[root@db01 mysql]# id mysqlid: mysql: no such user[root@db01 mysql]# useradd -r -s /sbin/nologin mysql[root@db01 mysql]# id mysqluid=997(mysql) gid=995(mysql) 组=995(mysql)2. 更改mysql的安装目录的权限[root@db01 mysql]# chown -R mysql.mysql /usr/local/mysql/[root@db01 mysql]# ll -d /usr/local/mysql/drwxr-xr-x 13 mysql mysql 191 10月 9 10:26 /usr/local/mysql/
3) 修改配置文件
修改/etc/my.cnf文件[root@db01 mysql]# vim /etc/my.cnf[mysqld]basedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport=3307socket=/usr/local/mysql/mysql.socklog-error=/usr/local/mysql/data/mysql3307.err
4) 拷贝启动脚本
[root@db01 mysql]# pwd/usr/local/mysql[root@db01 mysql]# cp support-files/mysql.server /etc/init.d/mysql
5) 初始化说明
1. 正常安装新数据库直接使用,是需要初始化数据库然后再启动使用
2. 当前需求是将原来MySQL数据库文件迁移到新的数据库的数据目录里,故不需要初始化
3. 迁移数据库到新环境
说明:新数据库服务器上操作
① 同步老库数据文件到新库数据目录里
[root@db01 mysql]# rsync -av 10.1.1.1:/usr/local/mysql/data/ /usr/local/mysql/data
② 启动新数据库
直接启动新的数据库,并且检查日志文件(查看是否有选项不兼容)[root@db01 mysql]# service mysql start
③ 升级数据库(重点,升级数据库文件)
使用mysql_upgrade命令检查数据文件的兼容性[root@db01 ~]# /usr/local/mysql/bin/mysql_upgrade -S /tmp/mysql.sock -p123注意:1. 在实际的环境中,建议使用-s参数,不检查业务表,只检查系统文件2. 升级是需要连接数据库的,-p密码 -S指定socket文件[root@db01 mysql]# /usr/local/mysql/bin/mysql_upgrade -pEnter password:Looking for 'mysql' as: /usr/local/mysql/bin/mysqlLooking for 'mysqlcheck' as: /usr/local/mysql/bin/mysqlcheckError: Failed while fetching Server version! Could be due to unauthorized access.FATAL ERROR: Upgrade failed原因:连接数据库失败
4. 原web服务连接新数据库(LAMP=>LNMP)
① 修改php连接mysql的配置文件(如果有)
[root@lamp ~]# find / -name php.ini/usr/local/lib/php.ini[root@lamp ~]# vim /usr/local/lib/php.ini[MySQL]mysql.default_port = 3306mysql.default_host = 10.1.1.37[MySQLi]mysql.default_port = 3306mysql.default_host = 10.1.1.37
② 修改网站配置文件连接数据库
修改http://www.myblog.net网站所在数据库目录的配置文件[root@lamp www]# pwd/var/html/www[root@lamp www]# vim wp-config.php...// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** ///** WordPress数据库的名称 */define('DB_NAME', 'myblog');/** MySQL数据库用户名 */define('DB_USER', 'root');/** MySQL数据库密码 */define('DB_PASSWORD', '123');/** MySQL主机 */define('DB_HOST', '10.1.1.37');/** 创建数据表时默认的文字编码 */define('DB_CHARSET', 'utf8');
③ 新数据库授权为web服务
新的mysql数据库需要给root@10.1.1.19用户授权mysql> grant all on *.* to 'root'@'10.1.1.19' identified by '123';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)注意:把防火墙firewalld和selinux全部关闭掉,不然打死都连接不上!
④ 启动web服务
[root@lamp ~]# service apache start[root@lamp ~]# netstat -nltp|grep httpdtcp 0 0 :::80 :::* LISTEN 1376/httpd
⑤ 测试验证
1.浏览器访问2. web服务器上使用mysql工具远程访问[root@lamp ~]# mysql -uroot -h10.1.1.37 -uroot -p123返回搜狐,查看更多
责任编辑:
-
mysql数据迁移方案及迁移后服务无法启动解决方案。
2018-10-23 14:37:47因公司项目数据库表太大超过了百万行,需要做数据位置迁移。迁移后mysql服务无法启动。百度了很久,试了好几种方法都不行,最后Google一下,一下子找到了原因,因为迁移后的文件夹权限不足。 迁移过程: ...因公司项目数据库表太大超过了百万行,需要做数据位置迁移。迁移后mysql服务无法启动。百度了很久,试了好几种方法都不行,最后Google一下,一下子找到了原因,因为迁移后的文件夹权限不足。
迁移过程:
- 暂停mysql服务。
- 创建要迁移目的地的文件夹。例如:D:\MySqlData\Data。
- 找到mysql默认存储数据位置:C:\ProgramData\MySQL\MySQL Server 5.7\Data目录。注意是C:\ProgramData并非C:\Program Files。
- 拷贝目录下的所有文件到目标文件夹D:\MySqlData\Data。 可以讲Data文件夹复制覆盖。
- 到C:\ProgramData\MySQL\MySQL Server 5.7下修改my.ini文件中的datadir。复制到下一行,讲复制的datadir将后面的值修改为:”D:/MySqlData/Data”。需要加”号,需要注意是 “/”并非“\”。 注释掉原来的#datadir
- 打开C:\ProgramData\MySQL\MySQL Server 5.7的属性中的安全选项,查看访问权限都有哪些用户或者组,根据访问权限,把D:\MySqlData目录和它设置成一模一样,并且获取最高控制权。点击编辑、新增(我就是在D:\MySqlData中少了一个NETWORK SERVICE的访问权限,所以一直启动服务失败)。
启动MySql57服务,亲测成功
-
oracle数据库迁移到MySQL的方法总结
2020-09-09 18:24:49本文主要总结了oracle数据库迁移到MySQL的方法,方法包括手动方式导入导出、使用工具Navicat 进行导入、使用工具DBMover 的OracleToMySQL 进行导入和使用工具intelligent-converters 的 oracle-to-mysql 进行导入,... -
MySQL数据库--几种数据迁移的方法详解都在这了!看完必懂
2021-06-11 21:58:45数据迁移的几种方式 - MySQL数据库 本文关键字:MySQL、数据库、数据迁移、导入、导出 文章目录 数据迁移的几种方式 - MySQL数据库 一、数据迁移 1. 数据的生命周期 2. 数据迁移的发生 二、数据导出 1. ... -
Mysql数据迁移方法
2021-01-18 18:19:38MySQL迁移通常使用的有三种方法:1、数据库直接导出,拷贝文件到新服务器,在新服务器上导入。2、使用第三方迁移工具。3、数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。第一种方案的... -
mysql大数据量迁移方案
2020-11-17 12:08:29使用navicat等客户端软件功能进行同步 使用mysqldump进行导出导入同步 ...在测试中navacat同步1亿4000w数据 在整个同步过程中,mysql 配置innodb引擎,内存最大innodb_buffer_pool_size=20G ,W... -
MYSQL 到MYSQL 分表数据迁移
2022-03-28 16:52:30MYSQL 到MYSQL分表 数据迁移,不停机迁移 -
Mysql上千万数据迁移方案
2021-04-09 09:29:40Mysql上千万数据迁移方案 最近由于项目问题,单表数据过多(6000w+)导致查询变慢,所以进行数据表分表,那么分表就意味着数据分发迁移,千万级别数据如何更快迁移呢? 当然首先我是用的代码方式进行,分页方式查询... -
Mysql到Greenplum数据迁移方案
2019-07-09 13:48:31使用开源组件mysql2pgsql进行mysql到GP的数据迁移: 下载 mysql2pgsql https://github.com/aliyun/rds_dbsync/releases?spm=a2c4e.11153959.blogcont228295.39.pMczL8 配置mysql和gp连接信息配置文件,参考 ... -
【MySQL】数据平滑迁移方案思考
2022-01-17 17:19:50文章目录数据迁移方案两个方案的bug数据校验工具 数据迁移方案 这个想一下redis是怎么把数据做持久化的,思路就有了:快照 + 追加日志。 注意点: 1、在完成数据迁移之前,上游业务依然是访问旧数据库的。 2、研发一... -
Python中MySQL数据迁移到MongoDB脚本的方法
2021-01-20 05:07:02旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 MongoDB是一个文档数据库,在存储小文件方面存在... -
mysql 历史数据表迁移方案
2021-01-21 01:15:27当业务运行一段时间后,会出现有些表数据量很大,可能对系统性能产生不良的影响,常见的如订单表、登录log表等,这些数据很有时效性,比如我们一般很少去查上个月的订单,最多也就是报表统计会涉及到。在我们的... -
Oracle向mysql进行数据迁移
2022-02-19 13:37:48Oracle向mysql进行数据迁移 1、 需要进行的类型替换 序号 Oracle(o) Mysql(m) 1 VARCHAR2、NVARCHAR2 VARCHAR 2 DATE DATETIME 3 TIMESTAMP DATETIME 4 NUMBER DECIMAL 5 INTEGER DECIMAL(22,0) 6... -
MySQL的数据迁移
2020-11-27 21:19:14二、MySQL数据迁移常用的方法 1、使用第三方迁移工具。 2、数据文件和库表结构直接拷贝到新服务器,挂载到同样配置的MySQL服务下。 3、数据库直接导出,拷贝文件到新服务器上,在新服务器导入。 第一种方案的优点:... -
不停业务,做mysql数据迁移。
2021-01-19 04:10:02同事要求不停业务做迁移,讨论后方案如下:方案:1、使用xtartbackup做mysql的master-slave(无需上锁,不影响业务)。2、验证数据一致性后将业务从master切换至slave。3、将原master-slave重新部署。方案虽然繁琐,... -
【数据迁移】MySQL数据库的无缝迁移问题:binlog方案、触发器方案
2017-03-24 21:03:46mysql数据库的无缝迁移问题? 问:在平时的开始过程中,由于经常“需求理解,架构设计,需求变更”等多种原因,导致系统运行一段时间后,数据库的表结构需要变更,如何实现尽量短的停机,实现无缝的迁移? ... -
smart-migrate:基于Java的数据迁移工具
2021-05-22 22:45:15基于Java的数据迁移工具,跨平台,跨数据库 该应用程序已经过mysql和oracle的测试,理论上也支持sqlserver,db2或其他数据库,但是我没有足够的时间在所有平台/数据库中对其进行测试,因此,如果您使用此工具,请... -
Java 实现两个数据库数据的迁移
2021-01-21 05:24:08原料:mysql,sqlite3思想步骤:首先从一个数据库取出数据,每取一条就添加到另一个数据库。示例:import java.sql.*;public class SQLite_To_MySQL {private Connection getIteconn(){try {Class.forName("org.... -
SQL Server数据迁移至PostgreSQL出错的解释以及解决方案
2020-12-15 21:27:16问题重现: 1、PG客户端: postgres=# create table text_test (id int,info text);...2、SQL Server产生数据 create table test_varchar(id int,name varchar(20)); insert into test_varchar values (1, ' -
MySQL 历史数据表迁移方法
2021-04-20 00:59:08历史数据迁移分三个步骤进行:在线库与历史库把需要迁移(或转入)的表都改成分区表在线库上的历史数据迁移到历史库在线库上删除已备份的历史数据其中步骤1只执行一次,步骤2、3可以每月执行一次,即每月清理一次历史... -
MySQL数据库迁移详细步骤
2017-12-18 16:36:36由于机房搬迁,需要对后台DB服务器进行迁移,同时为了保证在数据迁移过程中,对线上业务不造成影响,并能够做到秒级切换。如果我们采用普通的逻辑备份,比如:mysqldump,会存在锁表的情况,显然不可取。因此我们...