mysql数据库迁移方案 如何迁移MySQL数据库
很多朋友对于mysql数据库迁移方案和如何迁移MySQL数据库不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
如何迁移MySQL数据库
caching_sha2_password认证插件提供更多的密码加密方式,并且在加密方面具有更好的表现,目前MySQL8.0选用caching_sha2_password作为默认的认证插件,MySQL5.7的认证插件是MySQL_native_password。如果客户端版本过低,会造成无法识别MySQL8.0的加密认证方式,最终导致连接问题。
MySQL存储引擎现在负责提供自己的分区处理程序,而MySQL服务器不再提供通用分区支持,InnoDB和NDB是唯一提供MySQL8.0支持的本地分区处理程序的存储引擎。如果分区表用的是别的存储引擎,存储引擎必须进行修改。要么将其转换为InnoDB或NDB,要么删除其分区。通过MySQLdump从5.7获取的备份文件,在导入到8.0环境前,需要确保创建分区表语句中指定的存储引擎必须支持分区,否则会报错。
MySQL8.0的默认字符集utf8mb4,可能会导致之前数据的字符集跟新建对象的字符集不一致,为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和校验规则。
MySQL8.0启动使用的lower_case_table_names值必须跟初始化时使用的一致。使用不同的设置重新启动服务器会引入与标识符的排序和比较方式不一致的问题。
<lower_case_table_names>
https://dev.mysql.com/doc/refman/8.0/en/server-systemvariables.html#sysvar_lower_case_table_names
要避免MySQL8.0上的启动失败,MySQL配置文件中的sql_mode系统变量不能包含NO_AUTO_CREATE_USER。
从MySQL5.7.24和MySQL8.0.13开始,MySQLdump从存储程序定义中删除了NO_AUTO_CREATE_USER。必须手动修改使用早期版本的MySQLdump创建的转储文件,以删除NO_AUTO_CREATE_USER。
在MySQL8.0.11中,删除了这些不推荐使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。从5.7到8.0的复制场景中,如果语句使用到废弃的SQL Mode会导致复制异常。
在执行到MySQL8.0.3或更高版本的in-place升级时,BACKUP_ADMIN权限自动授予具有RELOAD权限的用户。
本文对MySQL 5.7到MySQL 8.0的升级过程中出现部分易出现问题进行整理:升级对MySQL版本的要求、升级都做了哪些内容、数据库升级做了哪些步骤以及注意事项,希望对大家版本升级有帮助。
mysql数据迁移(mysql数据迁移方案)
将Mysql数据库迁移到Oracle数据库的具体过程:需要准备的工具:1
连接Mysql的jdbc驱动mysql-connector-java-5
0
4-bin
jar2
Oracle公司开发的SQLDeveloper1
2下面就是配置SQLDeveloper1
2配置环境:选择Tools-Preferences-Database-ThirdPartyJDBCDriver点击AddEntry添加Mysql的jdbc驱动
配置MySQL和Oracle的连接点击Connection右键选择NewConnection分别建立Mysql和Oracle连接
建立好连接后,你就可以查看你得数据库了
两种迁移数据的方式:1
Capturethesourcedatabaseortables2
Convertthecaptureddatabaseortables3
GenerateDDLforthenewOracleschemaobjects4
RunthegeneratedDDLscripttocreatethenewuserandobjects5
Copyanydatafromthesourcedatabasetothenewdatabase,selectMigration-
快速迁移:选择你要迁移的表或数据库,选择Migration-
OK
怎样将MySQL中两千万数据进行优化与迁移
最近有一张2000W条记录的数据表需要优化和迁移。2000W数据对于http://www.gxlcms.com/wiki/1160.html" target="_blank">MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升。不过这些数据有大量的冗余字段和错误信息,极不方便做统计和分析。所以我需要创建一张新表,把旧表中的数据一条一条取出来优化后放回新表;
一.清除冗余数据,优化字段结构2000W数据中,能作为查询条件的字段我们是预知的。所以将这部分数据单独创建新的字段,对于有规则的数据合理改变字段结构,比如身份证就是varchar(18)。对于不重要的数据我们合并后存在一个结构为text的字段。
对于一些有关联的数据我们需要计算,常见的比如身份证种能获取到准确的性别,出生地、生日、年龄。
二.数据迁移我们从数据库中取出一条旧数据,再通过计算处理后得到想要的新数据,最后将新数据插入新表。不过在获取新数据时遇到如下问题。
数据量太大,无法一次获取(2000W数据扔到内存挺可怕的);
我们可以通过MySQL的limit语法分批获取。比如每次获取50000,SQL语句如下:
select* from table_name limit 15000000,50000;通过这种方法能解决数据量太大的问题,但是随着limit的第一个参数越来越大,查询速度会慢的吓人(上面这条SQL执行会花35秒)。时间就是生命,于是我们开始优化SQL语句,优化后变成下面这样:
select* from table_name order by id desc limit 5000000,50000;可通过二分法拆分2000W数据,当执行到1000W数据时,将数据倒序。优化后SQL执行效率显著提升,从35秒降到9秒;
不过还是很慢,时间就是生命??还好我们有自增ID(创建数据表第一条定律,一定要有自增字段),优化后的SQl如下:
1. select* from table_name where id>15000000 and id<15050000; 2. select* from table_name where id>15000000 limit 50000;为了直观演示,我写了两条功能一样的SQL。相比第一条,第二条的limit会导致SQL的索引命中变差,效率同样也会下降。第一条SQL的执行时间是2毫秒,第二条执行时间5毫秒(我取的平均值)。每次数据的查询速度直接从35秒降到2毫秒??
数据量太大并且数据无法预估,某些特殊数据会导致数据导入失败;
我们有三种方案去将新数据存入新表,分别如下:
一条一条插入数据;
开始肯定会想这种方案一定不行,因为每次插入都会有一次数据库IO操作。但是该方案有个好处是能及时发现有问题的数据,修改后再继续执行;在Oracle中使用『绑定变量』能带来性能提升,正好MySQL也提供了『绑定变量』的功能。于是在不改变逻辑的情况下,尝试优化数据存储速度。代码如下:
public function actionTest(array$data)
{
$mysqli= new mysqli("192.168.1.106","username","password","test");
$sql="insert into table_name(name,identity) values(?,?)";
$stmt=$connection->prepare($sql);
$name="";
$identity="";
//使用绑定变量
$stmt->bind_param("si",$name,$identity);
foreach($data as$val)
{
$name=$val[name];
$identity=$val[card_id];
//执行
$stmt->execute();
}
$stmt->close();
}最后效果不怎么好,MySQL的『绑定变量』并没带来明显的速度提升,不过能有效的防止SQL注入;
一次插入50000条数据;
这是我最后选中的方案,一是能及时发现有问题的数据,二是导入数据非常稳定。就像支持断点续传一样,每一步都能看到效果。在执行脚本时,也能同步开始写分析逻辑;
组装成SQL文件,最后统一导入;
组装一个大的SQL文件,最后通过MySQL自带的工具导入也是极好的。但如果有一条SQL有问题,你可能需要重跑一次脚本。因为在9G大小的文本文件中修改一个符号是很痛苦的事情??
三.总结通过各种优化,最后将脚本执行时间缩短到了20分钟内。优化后数据质量得到了较高保证,下次将尝试2亿数据的优化&迁移??
搬迁MYSQL数据库的几种方法介绍
在网站搬迁的过程中,最重要也是最麻烦的就是数据库了,数据库文件一旦丢失而备份又不灵光时,网站会面临灭顶之灾。那么搬迁数据库有些什么办法呢?现在一起来探讨。通过phpmyadmin备份由于mysql数据库是通过phpmyadmin在进行管理,因此用phpmyadmin进行备份也是顺理成章。但通过phpmyadmin导出的备份文件还只能通过phpmyadmin软件还原回去,而且这个软件默认只允许还原小于2M的备份来源。因此如果网站数据少,小于2M可以直接备份还原;数据较多备份文件过大时,有两种方法解决:第一种是分段备份,在phpmyadmin的备份选项中设置为每个备份文件大小不超过2M,第二种是在还原空间的phpmyadmin中修改软件源文件进行设置,改为对还原文件没有大小限制,相应的方法可以在网上搜索。应该说此种备份方法相对麻烦,且需要自己购有服务器或vps,否则根本没有相关权限,一般情况下不建议选择。通过网站程序自带功能进行备份还原现在使用到mysql数据库的网站程序有DZ,PW,DEDE等,这些程序后台都有备份还原功能,因为是自带的功能,兼容性好,方便快捷。不过有一个问题是要先重新安装网站程序,再进入后台选择还原已经保存的备份文件进行还原,目前所有的主流程序都提倡这种方法。通过备份王等软件进行备份用备份王等软件进行备份方便快捷,只要上传备份软件到空间按提示一步步操作就可以了。但是要注意新老空间数据库用户名和密码不统一,网站文件打包过来后因没有修改连接文件,还原数据库是好了,可是前台会提示数据库连接错误,网站从而出现打不开的情况。所以要学会修改网站配置文件,大多是由config和data.php文件来控制,将这些文件中的连接信息设置为正确的连接信息,避免网站不能打开。直接在mysql文件夹中复制文件如果是独立服务器,可以直接进入服务器mysql文件夹下的DATA文件夹找到数据库文件复制后再粘贴到新空间。但这样有个很大的隐患:备份的目标数据库如果正在被使用,粘贴到新空间后会出错。不提倡这种方法。
关于mysql数据库迁移方案和如何迁移MySQL数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。