mysql迁移数据库
为什么uber工程师把数据库从postgres迁移到了mysql
Uber工程师在官方博客上描述了他们为什么要从Postgres切换到MySQL数据库。Uber的早期架构是由Python编写的后端应用构成,使用了Postgres数据库。但此后,Uber的架构发生了显著的改变,转变到了微服务模型和新的数据平台。以前他们使用Postgres,现在则改用了基于MySQL的数据库分片层。Uber工程师称他们之所以切换到Schemaless和其它基于MySQL的后端服务,最主要的原因是Postgres数据复制效率低下,Postgres更新已有行的效率低于MySQL,Postgres需要重写每一个行索引,而MySQL只更新改变的索引。
本回答由提问者推荐
如何导入数据到postgresql
方法/步骤
安装postgresql
yuminstallpostgresqlpostgresql-server
mysql占用端口3306pgsql是5432
导入整个数据库
psql-Upostgres(用户名)数据库名(缺省时同用户名)
导出整个数据库
pg_dump-hlocalhost-Upostgres(用户名)数据库名(缺省时同用户名)>/data/dum.sql
导出某个表
pg_dump-hlocalhost-Upostgres(用户名)数据库名(缺省时同用户名)-ttable(表名)>/data/dum.sql
一般用dump导出数据会比较大,推荐使用xz压缩
压缩方法xzdum.sql会生成dum.sql.xz的文件
xz压缩数据倒数数据库方法
xzcat/data/dum.sql.xz|psql-hlocalhost-Upostgres(用户名)数据库名(缺省时同用户名)
黎族为什么要迁移到海?黎族为什么要迁移到海南
不是的。根据黎苗族文化所说的。海南人的本地人。因该是从越南那一带迁徙过来的。
怎样将MySQL迁移到Oracle?怎样将MySQL迁移到Ora
最后,你的技术将获得提高,无论是通过书籍和刊物、论坛、培训或是认证。
2。 评估移植计划
在你做任何事情之前,你将需要制定出一个要做什么的计划或提纲。我知道,我知道,大家都不喜欢写文档。但是这是很重要的一步,因为在技术方面,它将使你决定需要做些什么,而在管理方面,它将按部就班地描述这个过程,所以他们可以看到这个复杂性,考虑业务影响、必备系统的成本、进行这个移植所需要的资源和整个时间进度表。
如何迁移MySQL数据库
这个还是MYSQL的官方介绍比较权威,而且不容易出问题,下面我把MYSQL中文帮助文档相对应的部分发给你吧.
MySQL中文参考手册
翻译:晏子(yanzi)主页:
-———————————————————————————————————————-
第一章, 前一章, 下一章, 最后一章,目录.
-———————————————————————————————————————-
19 用MySQL解决一些常见问题
19.1 数据库复制
一方面复制可以用来增加健壮性和速度。对健壮性,你有2个系统,而如果你出了问题,切换到备份即可。额外的速度通过把非更新查询的一部分送到复制服务器来达到。当然,这只在非更新查询为主时有用,但是这正是一般的情形。
一方面复制计划在不久的未来实现。这将被实现,使得从服务器将以较低优先级的更新和延迟插入被同步到最新数据(这将给读者以比写者更高的优先级)。
MySQL(至今)没有数据库复制,但是有一些如何实现的信息。
复制一个数据库最一般的方法是使用更新日志。见9.2 更新日志。这要求充当一个主数据库(进行数据改变的)并且另一个或多个充当从数据库。要更新一个从数据库,只要运行mysql < update_log。提供对于从数据库适当的主机、用户和口令选项,并且将主数据库的更新日志作为输入。
如果你从未从一张表中删除任何东西,你可以使用一个TIMESTAMP列找出自上一次复制以来(通过比较作你上次做复制的时间)表中哪个行被插入和被改变,且仅拷贝这些行到镜像中。
有可能使用更新日志(对删除)和时间戳记(在两端)做成一个双向更新系统统,但是在这种情况下,当同一数据在两端被改变时,你必须能处理冲突。你可能想保持旧版本以帮助决定什么被更新了。
因为在这种情况中复制用SQL语句进行,你不应该在更新数据库的语句中使用下列函数;他们不能返回与原数据库相同的值:
DATABASE()
GET_LOCK()和RELEASE_LOCK()
RAND()
USER(), SYSTEM_USER()或SESSION_USER()
VERSION()
所有的时间函数可安全地使用,比如如果需要,时间戳记被送到镜像。LAST_INSERT_ID()也可安全地使用。
19.2 数据库备份
因为MySQL表作为文件存储,做一个备份是容易的。为了得到一个一致的备份,在相关的表上做一个LOCK TABLES。见7.24 LOCK TABLES/UNLOCK TABLES句法。你只需一个读锁定;当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表。如果你想要做一个SQL级的备份,你可以SELECT INTO OUTFILE。
备份一个数据库的另一个方法是使用mysqldump程序:
为你的数据库做一个完整的备份:
shell> mysqldump —tab=/path/to/some/dir —opt —full
你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服务器不在更新任何东西。
停止mysqld如果它正在运行,然后以—log-update选项启动它。你将得到一个名为“hostname.n”形式的日志文件, 这里n是随着你每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行mysqldump处后面进行的复制数据库改变的所需信息。
如果你必须恢复一些东西,尝试首先用myisamchk -r恢复你的表。这应该处理所有情况的99.9%。如果myisamchk失败,尝试下列过程:
恢复原来的mysqldump备份。
执行下列命令以再次运行更新日志中的更改:
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql
ls被用来以正确的顺序得到所有的日志文件。
你也可以与SELECT * INTO OUTFILE ‘file_name’ FROM tbl_name做有选择的备份并且用LOAD DATA INFILE ‘file_name’ REPLACE …恢复。为了避免重复记录,在表中你需要一个PRIMARY KEY或UNIQUE键。当在唯一键值上一个新记录与一个老记录重复时,REPLACE关键词使得老记录用一个新记录替代。MySQL数据库迁移
MySQL数据库迁移(数据文件直接迁移)
在今年10月下旬的时候,公司的服务器需要迁移,其中涉及到了MySQL数据库迁移。查看了一下MySQL数据文件的大小,接近60G的大小(实际数据并没用那么多)。由于服务器上业务需要,要尽量减少服务器迁移时的损失。所以迁移时间选在了晚上零点开始,而且要尽量减少迁移所用的时间。
在迁移之前有三种方案:
数据库直接导出,拷贝文件到新服务器,在新服务器上导入。
使用【MySQL GUI Tools】中的 MySQLMigrationTool。
数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。
我在我的电脑上用虚拟机测试后,选中了占用时间最少的第三种方案。下面是三种方案的对比:
第一种方案的优点:会重建数据文件,减少数据文件的占用空间。
第一种方案的缺点:时间占用长。(导入导出都需要很长的时间,并且导出后的文件还要经过网络传输,也要占用一定的时间。)
第二种方案的优点:设置完成后传输无人值守
第二种方案的缺点:
设置繁琐。
传输中网络出现异常,不能及时的被发现,并且会一直停留在数据传输的状态不能被停止,如不仔细观察不会被发现异常。
传输相对其他fang时间长。
异常后很难从异常的位置继续传输。
第三种方案的优点:时间占用短,文件可断点传输。操作步骤少。(绝大部分时间都是在文件的网络传输)
第三种方案的缺点:可能引起未知问题,暂时未发现。
下面介绍一下第三种方案d迁移步骤:
保证Mysql版本一致,安装配置基本一致(注意:这里的数据文件和库表结构文件都指定在同一目录data下)
停止两边的Mysql服务(A服务器—迁移—>B服务器)
删除B服务器Mysql的data目录下所有文件
拷贝A服务器Mysql的data目录下除了ib_logfile和.err之外的文件到B服务器data下
启动B服务器的Mysql服务,检测是否发生异常
迁移完成后,服务启动正常,未发现其他异常问题。
备注:经测试,源mysql的安装目录及数据文件目录 可以与 目标Mysql的安装目录及数据文件目录 不一致。
此时,只需要拷贝您所需移动的dbname(如上:pa、testdb)及’mysql’和’ibdata1’,即可。数据库的数据加载进去,正在使用是不能够移出来的..
你把数据整理好之后要把数据库进行分离出来,然后才可以拷贝到其他移动磁盘上
不然,它会提示出磁盘受保护或者文件正在使用…先要把数据库分离在备份。
分离操作:
1.找到你需要备份的数据库
2.单击右键的所有任务
3.分离数据库
如何从SQLServer 迁移数据 到PostgreSQL
一. 如果B数据库是新建的,为了移植数据库,那就直接附加,分下列步骤:
打开配置管理器
停止SQL Server服务
在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目录下找到数据库文件,复制到B电脑上,B电脑打开数据库附加A数据库就好了。
二. 如果B数据库已经曾在,可以使用导出任务
打开数据库,右键点在数据库上,找到导出任务
按照向导选择该到处的数据表和视图。填写两个数据库的验证信息这个不同的数据库不是很好迁移如果oracle的sql能在postgresql上执行的话可以吧oracle数据库导出成sql
还没有评论,来说两句吧...