• 关于

    mysql 函数 和 存储过程

    的搜索结果

问题

MySQL存储过程与函数,何时使用??mysql

我正在查看MySQL存储过程和函数。真正的区别是什么? 它们似乎相似,但是功能有更多限制。 我可能是错的,但是似乎存储过程可以完成所有工作,而存储函数可以完成更多工作。为什么/何时...
保持可爱mmm 2020-05-17 13:01:29 0 浏览量 回答数 1

问题

X享主机-X3(云mysql数据库存储过程

在mysql管理工具 dms-net.aliyun.com 里面能看到存储过程,触发,函数等等,写了一个存储过程但是不执行,通过查找 SHOW VARIABLES LIKE '...
fanruitian 2019-12-01 20:54:37 5272 浏览量 回答数 2

问题

HybridDB for MySQL的产品优势是什么

HTAP(“事务与分析”一体) HybridDB for MySQL (原名PetaData)是新型的HTAP(Hybrid Transaction/Analytical Processing&...
云栖大讲堂 2019-12-01 21:27:32 1175 浏览量 回答数 0

阿里云爆款特惠专场,精选爆款产品低至0.95折!

爆款ECS云服务器8.1元/月起,云数据库低至1.5折,限时抢购!

回答

目前 DRDS 不支持视图、存储过程、跨库外键和级联删除。如果需要自定义函数,请尝试通过组合 MySQL 标准函数解决。详情请参考 DRDS 产品与 MySQL 兼容性。
保持可爱mmm 2020-03-29 14:32:03 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 使用 mysqldump 工具的优点是简单易用、容易上手,缺点是停机时间较长,因此它适用于数据量不大,或者允许停机的时间较长的情况。 背景信息 由于 RDS 提供的关系型数据库服务与原生的数据库服务完全兼容,所以对用户来说,将原有数据库迁移到 RDS 实例的过程,与从一个 MySQL 服务器迁移到另外一台 MySQL 服务器的过程基本类似。 前提条件 已对RDS 实例设置白名单,申请外网地址,以及创建数据库和账号。具体可参见快速入门。 已购买云服务器 ECS。 操作步骤 在正式迁移之前,需要先在本地数据库中创建迁移账号,并将要迁移的数据库的读写权限授权给迁移账号。 在本地数据库中创建迁移账号。CREATE USER'username'@'host' IDENTIFIED BY 'password';参数说明: username:要创建的账号 host:指定该账号登录数据库的主机。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % password:该账号的登录密码 例:要创建账号为 William,密码为 Changme123 的账号从任意主机登录本地数据库,命令如下: CREATE USER'William'@'%' IDENTIFIED BY 'Changme123'; 在本地数据库中给迁移账号授权。GRANT SELECT ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;参数说明: privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL databasename:数据库名。如果要授权该账号所有的数据库权限,则使用通配符 * tablename:表名。如果要授权该账号所有的表权限,则使用通配符 * username:要授权的账号名 host:授权登录数据库的主机名。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选 例:授权账号 William 对所有数据库和表的所有权限,并可以从任意主机登录本地数据库,命令如下。 GRANT ALL ON*.* TO 'William'@'%'; 使用 mysqldump 的数据导出工具,将本地数据库数据导出为数据文件。 说明 导出期间请勿进行数据更新。本步骤仅仅导出数据,不包括存储过程、触发器及函数。 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName --skip-triggers > /tmp/dbName.sql参数说明: localIp:本地数据库服务器 IP 地址 userName:本地数据库的迁移账号 dbName:需要迁移的数据库名 /tmp/dbName.sql:备份生成的文件名 使用 mysqldump 导出存储过程、触发器和函数。 说明 若数据库中没有使用存储过程、触发器和函数,可跳过此步骤。在导出存储过程、触发器和函数时,需要将 definer 去掉,以兼容 RDS。 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/triggerProcedure.sql参数说明: localIp:本地数据库服务器 IP 地址 userName:本地数据库的迁移账号 dbName:需要迁移的数据库名 /tmp/triggerProcedure.sql:备份生成的文件名 将数据文件和存储过程文件上传到 ECS 上。 本例以文件上传到如下路径为例。/tmp/dbName.sql /tmp/triggerProcedure.sql 登录 ECS,将数据文件和存储过程文件导入到目标 RDS 中。mysql -h intranet4example.mysql.rds.aliyuncs.com –u userName -p dbName < /tmp/dbName.sql mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/triggerProcedure.sql参数说明: intranet4example.mysql.rds.aliyuncs.com:RDS 实例连接地址,本例以内网地址为例 userName:RDS 数据库的迁移账号 dbName:需要导入的数据库名 /tmp/dbName.sql:要导入的数据文件名 /tmp/triggerProcedure.sql:要导入的存储过程文件名
2019-12-01 22:57:10 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 使用 mysqldump 工具的优点是简单易用、容易上手,缺点是停机时间较长,因此它适用于数据量不大,或者允许停机的时间较长的情况。 背景信息 由于 RDS 提供的关系型数据库服务与原生的数据库服务完全兼容,所以对用户来说,将原有数据库迁移到 RDS 实例的过程,与从一个 MySQL 服务器迁移到另外一台 MySQL 服务器的过程基本类似。 前提条件 已对RDS 实例设置白名单,申请外网地址,以及创建数据库和账号。具体可参见快速入门。 已购买云服务器 ECS。 操作步骤 在正式迁移之前,需要先在本地数据库中创建迁移账号,并将要迁移的数据库的读写权限授权给迁移账号。 在本地数据库中创建迁移账号。CREATE USER'username'@'host' IDENTIFIED BY 'password';参数说明: username:要创建的账号 host:指定该账号登录数据库的主机。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % password:该账号的登录密码 例:要创建账号为 William,密码为 Changme123 的账号从任意主机登录本地数据库,命令如下: CREATE USER'William'@'%' IDENTIFIED BY 'Changme123'; 在本地数据库中给迁移账号授权。GRANT SELECT ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;参数说明: privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL databasename:数据库名。如果要授权该账号所有的数据库权限,则使用通配符 * tablename:表名。如果要授权该账号所有的表权限,则使用通配符 * username:要授权的账号名 host:授权登录数据库的主机名。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选 例:授权账号 William 对所有数据库和表的所有权限,并可以从任意主机登录本地数据库,命令如下。 GRANT ALL ON*.* TO 'William'@'%'; 使用 mysqldump 的数据导出工具,将本地数据库数据导出为数据文件。 说明 导出期间请勿进行数据更新。本步骤仅仅导出数据,不包括存储过程、触发器及函数。 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName --skip-triggers > /tmp/dbName.sql参数说明: localIp:本地数据库服务器 IP 地址 userName:本地数据库的迁移账号 dbName:需要迁移的数据库名 /tmp/dbName.sql:备份生成的文件名 使用 mysqldump 导出存储过程、触发器和函数。 说明 若数据库中没有使用存储过程、触发器和函数,可跳过此步骤。在导出存储过程、触发器和函数时,需要将 definer 去掉,以兼容 RDS。 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/triggerProcedure.sql参数说明: localIp:本地数据库服务器 IP 地址 userName:本地数据库的迁移账号 dbName:需要迁移的数据库名 /tmp/triggerProcedure.sql:备份生成的文件名 将数据文件和存储过程文件上传到 ECS 上。 本例以文件上传到如下路径为例。/tmp/dbName.sql /tmp/triggerProcedure.sql 登录 ECS,将数据文件和存储过程文件导入到目标 RDS 中。mysql -h intranet4example.mysql.rds.aliyuncs.com –u userName -p dbName < /tmp/dbName.sql mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/triggerProcedure.sql参数说明: intranet4example.mysql.rds.aliyuncs.com:RDS 实例连接地址,本例以内网地址为例 userName:RDS 数据库的迁移账号 dbName:需要导入的数据库名 /tmp/dbName.sql:要导入的数据文件名 /tmp/triggerProcedure.sql:要导入的存储过程文件名
2019-12-01 22:57:10 0 浏览量 回答数 0

问题

HybridDB for MySQL 概述

云数据库HybridDB for MySQL (原名PetaData)是同时支持在线事务(OLTP)和在线分析(OLAP)的关系型 HTAP 类数据库。 HTAP是Hybrid Tra...
云栖大讲堂 2019-12-01 21:27:32 1066 浏览量 回答数 0

回答

似乎您无法在触发器中完成所有这些操作。根据文档: 在存储的函数或触发器中,不允许修改调用该函数或触发器的语句已经在使用(用于读取或写入)的表。 根据此答案,您似乎应该: 创建一个存储过程,该过程将插入/更新目标表,然后更新事务中的所有其他行。 使用存储的proc,您将手动提交更改(插入和更新)。我还没有在MySQL中做到这一点,但是这篇文章看起来像一个很好的例子。来源:stack overflow
保持可爱mmm 2020-05-10 20:36:57 0 浏览量 回答数 0

回答

目前看也很多,还在努力弥补。首先,数据库自身对MySQL绝大部分常用用法是兼容了,但是对Oracle还只是兼容了标准SQL和一些常用函数(包括窗口函数)。当然存储过程、游标、更多的分析函数内部也实现了,还需要一段时间检验。传统Oracle数据库上的那复杂的存储过程和package目前在OceanBase里运行还可能有性能问题。内部业务正在试用过程中。其次,OceanBase的外部用户很少,了解的人很少,相关资料仅限于OceanBase官网和OceanBase论坛,还有微信公众号和群。所以不大容易得到用户信任。这个会有个很长的过程。 第三就是对机器配置要求不低。如至少32C64G(更小也可以搭建集群,但使用不当容易有问题),生产环境建议256G等。生产环境这个配置不算什么,不过个人如果要安装搭一个测试环境,可能不大好搞到机器。OceanBase的资源瘦身我们也在做了,还需要点时间。
茶什i 2019-12-02 03:18:56 0 浏览量 回答数 0

回答

使用mysqldump工具的优点是简单易用、容易上手,缺点是停机时间较长,因此它适用于数据量不大,或者允许停机的时间较长的情况。 背景信息 由于RDS提供的关系型数据库服务与原生的数据库服务完全兼容,所以对用户来说,将原有数据库迁移到RDS实例的过程,与从一台MySQL服务器迁移到另外一台MySQL服务器的过程基本类似。 注意事项 迁移后的表不区分大小写,统一变为小写。 前提条件 已对RDS实例设置白名单,申请外网地址,以及创建数据库和账号。具体可参见快速入门。 已购买云服务器 ECS。 操作步骤 在正式迁移之前,需要先在本地数据库中创建迁移账号,并将要迁移的数据库的读写权限授权给迁移账号。 在本地数据库中创建迁移账号。 CREATE USER'username'@'host' IDENTIFIED BY 'password'; 参数说明: username:要创建的账号 host:指定该账号登录数据库的主机。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % password:该账号的登录密码 例:要创建账号为 William,密码为 Changme123 的账号从任意主机登录本地数据库,命令如下: CREATE USER'William'@'%' IDENTIFIED BY 'Changme123'; 在本地数据库中给迁移账号授权。 GRANT SELECT ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; 参数说明: privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL databasename:数据库名。如果要授权该账号所有的数据库权限,则使用通配符 * tablename:表名。如果要授权该账号所有的表权限,则使用通配符 * username:要授权的账号名 host:授权登录数据库的主机名。如果是本地用户可以使用 localhost,如果想让该用户从任意主机登录,可以使用通配符 % WITH GRANT OPTION:授权该账号能使用GRANT命令,该参数为可选 例:授权账号William对所有数据库和表的所有权限,并可以从任意主机登录本地数据库,命令如下。 GRANT ALL ON*.* TO 'William'@'%'; 使用 mysqldump 的数据导出工具,将本地数据库数据导出为数据文件。 说明 导出期间请勿进行数据更新。本步骤仅仅导出数据,不包括存储过程、触发器及函数。 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName --skip-triggers --skip-lock-tables > /tmp/dbName.sql 参数说明: localIp:本地数据库服务器 IP 地址 userName:本地数据库的迁移账号 dbName:需要迁移的数据库名 /tmp/dbName.sql:备份生成的文件名 使用 mysqldump 导出存储过程、触发器和函数。 说明 若数据库中没有使用存储过程、触发器和函数,可跳过此步骤。在导出存储过程、触发器和函数时,需要将 definer 去掉,以兼容 RDS。 mysqldump -h localIp -u userName -p --opt --default-character-set=utf8 --hex-blob dbName -R | sed -e 's/DEFINER[ ]=[ ][^*]**/*/' > /tmp/triggerProcedure.sql 参数说明: localIp:本地数据库服务器 IP 地址 userName:本地数据库的迁移账号 dbName:需要迁移的数据库名 /tmp/triggerProcedure.sql:备份生成的文件名 将数据文件和存储过程文件上传到 ECS 上。 本例以文件上传到如下路径为例。 /tmp/dbName.sql /tmp/triggerProcedure.sql 登录 ECS,将数据文件和存储过程文件导入到目标 RDS 中。 mysql -h intranet4example.mysql.rds.aliyuncs.com –u userName -p dbName < /tmp/dbName.sql mysql -h intranet4example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/triggerProcedure.sql 参数说明: intranet4example.mysql.rds.aliyuncs.com:RDS实例连接地址,本例以内网地址为例 userName:RDS数据库的迁移账号 dbName:需要导入的数据库名 /tmp/dbName.sql:要导入的数据文件名 /tmp/triggerProcedure.sql:要导入的存储过程文件名 常见问题 Q:mysqldump迁移复杂,有简单的方法吗? A:您可以使用DTS从自建MySQL迁移至RDS for MySQL。
游客yl2rjx5yxwcam 2020-03-08 16:35:05 0 浏览量 回答数 0

问题

如何编写一个MySQL触发器以将行插入到另一个表中??mysql

我正在寻找在表上创建MySQL触发器。本质上,我正在创建活动流,并且需要记录用户的操作。当用户发表评论时,我希望该表上的数据库触发器触发并: 抓住最后插入的行的ID(注...
保持可爱mmm 2020-05-17 10:34:24 2 浏览量 回答数 1

问题

MYSQL使用(一)

[backcolor=url("]云服务器如何通过内网访问RDS?[backcolor=url("]RDS for MySQL 实现读写分离[backcolor=url("]RD...
云栖大讲堂 2019-12-01 21:47:16 1029 浏览量 回答数 0

问题

【每日一题】Java知识大测验 | 持续更新

每天更新一题 让大家在休息时间可以轻松学习! 下面是关于JAVA的题目,每日更新~ (PS:大家要看清题号,需要答案的同学可以看下方留言) 1-24题链接 93--题链接 92...
游客ih62co2qqq5ww 2020-03-27 23:52:17 473 浏览量 回答数 1

回答

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云 函数计算 平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 相关参考文档: https://yq.aliyun.com/articles/640912 1.1 DEMO 概述 DEMO 示例效果入口: http://hz.mofangdegisn.cn 账号: fc-test-user 密码: fc-test-pwd DEMO 示例工程地址: fc-wordpress 开通服务 免费开通函数计算, 按量付费,函数计算有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 1.2 解决方案 image 如上图所示, 当多个用户通过对外提供的 url 访问web服务的时候,每秒的请求几百上千都没有关系, 函数计算平台会自动伸缩, 提供足够的执行实例来响应用户的请求, 同时函数计算提供了完善的监控设施来监控您的函数运行情况。 1.3 Serverless 方案与传统自建 web 方案对比 ITEM 成本 稳定性 基于 VM 方案 使用 ecs.t5-lc1m1.small, 22.8元/月 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱 轻量应用服务器 60元/月(1vCPU 1GB 1Mbps 20GB[ssd]) 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱 函数计算 sqlite3 版本约为 1元/月 mysql 版本大约 26元/月 高 函数计算完整费用详情: 每月前 100 万次函数调用免费, 每月前 400000(GB*秒) 费用免费, 函数的内存可以设置为 128M 或者 256M, 因此对于一个一个月访问量低于 100 万次的网站, 该项是免费的 对于低成本的网站, 假设一个月的产生的公网流量为 1GB, 0.8元 NAS, US$0.06/GB/Month, 网站大小为 50M, 即使按 1G 计算, 0.42元 RDS mysql 最基本的单机版本, 25元/月 函数计算计费 | NAS 定价 如上所述, 在低成本网站领域, 函数计算具有十分明显的成本优势,同时还保持了弹性能力,以后业务规模做大以后并没有技术切换成本(可能需要做的只是更换一个更强的关系型数据库), 同时财务成本增长配合预付费也能保持平滑。低成本网站变成高可用高性能网站如丝般顺滑, 高性能网站详情可以参考文末 FAQ 中的 Q1 问题。 函数计算运行 PHP 框架原理 在具体操作部署之前, 先简单梳理一遍函数计算运行 PHP 框架原理 2.1 传统服务器 PHP 运行原理 原理示意图image.png A simple nginx confimage.png 从上面原理示意图我们可以看出,Web 服务器根据 conf 中 location将 PHP 脚本交给 php-fpm 去解析,然后将解析后的结果返回给 client 端 2.2 FC 驱动 PHP 工程原理 image 函数计算的执行环境实例相当于传统 web 服务的 Apache/Nginx 用户函数相当于实现 Apache/Nginx 的 conf 中 location 用户将 Web 网站部署在 NAS,然后挂载 NAS 到函数的执行环境, 比如下面代码中 /mnt/auto 目录 对于 WordPress 入口函数代码就是这么简单: index.php 其中函数计算为用户提供了一个 $GLOBALS['fcPhpCgiProxy'] 对象用来和 php-fpm 进行交互,对PHP 工程中的 php 文件进行解析,该对象提供了两个重要的接口: requestPhpCgi requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = []) $request: 跟 php http invoke 入口的参数一致 $docRoot: Web 工程的根目录 $phpFile: 用于拼接 cgi 参数中的 SCRIPT_FILENAME 的默认参数 $fastCgiParams: 函数计算内部尽量根据 $request给您构造 default cgi params, 但是如果您不是想要的,可以使用$fastCgiParams覆盖一些参数 (reference: cgi) $options: array类型,可选参数, debug_show_cgi_params 设为 true ,会打印每次请求 php 解析时候的 cgi 参数, 默认为 false ;readWriteTimeout 设置解析的时间, 默认为 5 秒 如果您有兴趣, 可以了解下函数计算 PHP Runtime: PHP 入口函数 PHP 执行环境 案例操作步骤 准备条件 免费开通函数计算, 按量付费,函数计算有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 有一个域名, 比如 abc.com, 并将域名 CNAME 解析到函数计算(FC) 对应的 region 如您想在杭州的 region 部署 wordpres 网站, 则将 abc.com CNAME 解析到 12345.cn-hangzhou.fc.aliyuncs.com, 其中 12345 是您的 accountId 3.1 安装最新的 Fun 工具 安装版本为8.x 最新版或者10.x 、12.x nodejs 安装 funcraf 3.2 Clone 工程 git clone https://github.com/awesome-fc/fc-wordpress.git 3.3 根据需要使用的数据库进入不同的目录 复制 .env_example 文件为 .env, 并且修改 .env 中的信息为自己的信息 如果使用 mysql 数据库, 参考章节 3.3.1 如果使用 sqlite3 数据库, 参考章节 3.3.2 3.3.1 使用 mysql 数据库 进入目录 fc-wp-mysql fun nas init fun nas info fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas 如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-mysql/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-mysql/wordpress 上传 wordpress 网站到 NAS fun nas sync fun nas ls nas:///mnt/auto/ fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-mysql)上传到 NAS 中的 fc-wp-mysql 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS 3.3.2 使用 sqlite3 数据库 进入目录 fc-wp-sqlite fun nas init fun nas info fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas 如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-sqlite/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 本地完成安装过程, 初始化 sqlite3 数据库 在目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 中输入命令: php -S 0.0.0.0:80 修改 host 文件,添加 127.0.0.1 hz.mofangdegisn.cn linux/mac : vim /etc/hosts windows7: C:\Windows\System32\drivers\etc 其中 hz.mofangdegisn.cn 是您预先准备的域名 通过浏览器输入 hz.mofangdegisn.cn, 这个时候没有mysql数据库设置页面,完成 wordpress 安装过程 成功安装以后, 这个时候, .fun/nas/auto-default/fc-wp-sqlite/wordpress/wp-content 下面应该有一个 database 的目录, ls -a 查看, 应该有 .ht.sqlite 这个 sqlite3 数据库文件 回退 host 文件的修改 注: 中间修改 host 的目的是初始化 sqlite3 数据库的时候, base site url 是提前准备的域名, 而不是 127.0.0.1 上传 wordpress 网站到 NAS fun nas sync fun nas ls nas:///mnt/auto/ fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-sqlite)上传到 NAS 中的 fc-wp-sqlite 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS 3.4 部署函数到FC平台 接下来将函数部署到云平台: 修改 index.php 中的 $host 中的值 修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可 修改 template.yml 自定义域名为自己提前准备好的域名 执行 fun deploy 登录控制台 https://fc.console.aliyun.com,可以看到service 和函数已经创建成功, 并且 service 也已经正确配置。 通过浏览器打开自己之前配置的域名, 比如本例中的 hz.mofangdegisn.cn mysql 版本数据库, 可以直接跟传统的 wordpress 一样,直接进入安装过程 sqlite3 版本数据库, 由于之前已经完成初始化,可以直接进入网站首页或网站后台 FAQ Q1: 函数计算能开发高性能高可用网站吗? A: 可以, 使用函数计算的单实例多并发功能和高性能数据库 单实例多并发 选择高性能关系型数据库,比如高可用的云数据库PolarDB 有必要再加上这些优化: 预留实例消除冷启动 + 预付费优化成本 极速型 NAS OSS 对象存储 + CDN 来存储和分发静态资源 目前 PHP Runtime 并不支持单实例多并发, 使用 Custom Runtime,可以将基于传统模式 nginx + php-fpm + mysql 开发的网站直接简单无缝迁移到函数计算平台,示例工程 customruntime-php 使用OSS对Wordpress进行图片动静分离 Q2: 使用低成本 sqlite3 版本的网站, 冷启动第一次打开很慢怎么办? A: 用一个 timer trigger 的函数 keep warm Q3: 使用低成本 sqlite3 版本的网站, 能支持多大的qps? A: 由 sqlite3 数据库性能决定, 这边有一些压测结果: image image 每次压力增大时候, 都有些冷启动,时间慢点,但是支持从压测结果来看支持 50 QPS 是没有疑问的, 是足够支持一些中小网站的。 Q4: 使用其他语言基于函数计算开发 serverless 网站可以吗? A: 可以, 比如 python: https://yq.aliyun.com/articles/603249 , 或者直接使用 custom runtime, 内置了 java、python 和 node, Custom Runtime 用户手册 , Custom Runtime 使用集锦
1934890530796658 2020-03-27 17:54:50 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:41 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:42 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:41 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:41 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:41 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:42 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:41 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:40 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档使用 数据传输服务 DTS 可以将本地 MySQL 实例的数据迁移到 RDS for MySQL 实例。数据传输服务 DTS (以下简称 DTS) 提供的增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成 MySQL 数据的迁移工作。 本小节简单介绍使用 DTS 进行本地 MySQL->RDS for MySQL 数据迁移的任务配置流程。 迁移步骤对于本地 MySQL->RDS for MySQL 的数据迁移,DTS 支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下: 结构迁移 数据传输会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、触发器、存储过程、存储函数。 全量数据迁移 全量迁移将本地 MySQL 实例的存量数据全部迁移到目标 RDS for MySQL 实例。 如果用户只进行全量数据迁移,那么迁移过程中本地 MySQL 实例新增的业务写入不会被同步到目标 RDS for MySQL 实例。 增量数据迁移 增量数据迁移会将全量数据迁移过程中,本地 MySQL 实例的增量变更数据同步到目标 RDS for MySQL 实例,增量数据迁移可以实现本地 MySQL 实例在迁移过程中产生的增量数据被实时同步到目标库,最终实现本地 MySQL 实例同目标 RDS for MySQL 实例进入动态数据同步的过程。 迁移限制 迁移过程中,不支持 DDL 操作结构迁移不支持 event 的迁移对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败当选择增量迁移时,源端的本地 MySQL 实例需要按照要求开启 binlog当选择增量迁移时,源库的 binlog_format 要为 row当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full当选择增量迁移时,增量迁移过程中如果源MySQL实例出现因实例跨机迁移或跨机重建等导致的binlog 文件ID乱序,可能导致增量迁移数据丢失 迁移权限要求当使用 DTS 进行本地 MySQL->RDS for MySQL迁移时,在不同迁移类型,对源端和目标端 MySQL 实例的迁移帐号权限要求如下: 迁移类型 结构迁移 全量迁移 增量迁移 本地 MySQL 实例 select select superselectreplication slavereplication client 目标端 RDS for MySQL 实例 读写权限 读写权限 读写权限 迁移流程DTS 在进行本地 MySQL->RDS for Mysql 数据迁移时,为了解决对象间的依赖关系,提高迁移成功率。结构对象及数据的迁移顺序如下: 结构对象:表、视图的迁移全量数据迁移结构对象:存储过程、函数、触发器、外键的迁移增量数据迁移 如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移 100%,全量迁移 100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3) 中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。 迁移任务配置下面详细介绍使用 DTS 将本地 MySQL 实例中的数据迁移到阿里云 RDS for MySQL 实例的任务配置流程。 RDS for MySQL 实例数据库创建在数据迁移过程中,如果待迁移的数据库在目标 RDS 实例中不存在,那么 DTS 自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。 数据库名称不符合 RDS 定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长 64 个字符)。待迁移数据库,在源端本地 MySQL 和目标端 RDS for MySQL 实例中名称不同。 对于这两种情况,用户需要在配置迁移任务之前,先在 RDS 控制台完成数据库创建。具体参考 RDS使用手册 - 创建数据库”。 迁移帐号创建迁移任务配置,需要提供本地 MySQL 数据库及目标 RDS for MySQL 实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求 部分。 如果源端 MySQL 实例迁移账号尚未创建,那么您可以参考 Grant 语法说明,创建满足权限要求的迁移账号。 如果目标端 RDS for MySQL 实例迁移账号创建,那么您可以参考 RDS 账号创建流程,创建对待迁移数据库有读写权限的迁移账号。 其他准备工作如果需要进行增量迁移,那么需要确认源库的 binlog 是否开启,格式是否满足要求。具体确认项如下。 确认源库的 binlog 是否开启。 如果这里面查询出来的 log_bin=OFF,则说明源库没有开启 binlog,这个时候如果需要使用增量迁移的话,需要修改本地 MySQL 的 binlog 配置,打开 binlog 日志。 开启二进制日志,修改 log_bin=mysql_bin。设置 binlog 模式为 row,修改 binlog_format=row。配置 server_id 大于 1,即 server_id=某一个大于 1 的整数。如果版本为 5.6,修改 binlog_row_image=full。修改完成后,重启 MySQL 进程。 确认源库的 binlog 格式为 row 模式。 使用上面的命令确认本地 MySQL 的 binlog 格式是否为 ROW,如果查询出来的结果不为 ROW 的话,那么通过如下的参数设置命令将模式修改为 ROW。 当修改完成后,建议将源库上已有的连接 KILL 掉,并且重新连接,否则可能出现其他的连接依然使用 statement 格式记录 binlog 日志。 当本地 MySQL 版本大等于 5.6.2 时,确认源库的 binlog_row_image=full。 如果查询出来的结果不为 FULL 的话,那么通过如下的参数设置命令将其修改为 FULL。 迁移任务配置当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。 进入 数据传输 DTS 控制台,点击右上角的 创建迁移任务,开始任务配置。本地 MySQL 实例及目标 RDS for MySQL 实例连接信息配置。 在这个步骤中,主要配置迁移任务名称,迁移源实例及目标实例连接信息。其中: 任务名称 默认情况下,DTS 为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。 源实例连接信息 实例类型:选择 有公网 IP 的自建数据库数据库类型:选择 MySQL主机名或 IP 地址:配置本地 MySQL 数据库实例的访问地址,这个地址必须为公网访问方式端口:MySQL 实例监听端口账号:MySQL 实例访问账号密码:上面指定的 MySQL 访问账号对应的密码 目标 RDS for MySQL 实例连接信息。 实例类型:选择 RDS 实例RDS 实例 ID: 配置迁移的目标 RDS 实例的实例 ID。 DTS 支持经典网络、VPC 网络的 RDS for MySQL 实例数据库账号:RDS for MySQL 实例的连接账号数据库密码:上面指定的数据库账号对应的数据库密码 迁移对象及迁移类型配置。 迁移类型 DTS 支持 结构迁移、全量数据迁移、增量数据迁移。 如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。 如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。 迁移对象 迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。 默认情况下,对象迁移到 RDS for MySQL 实例后,对象名跟本地 MySQL 实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用 DTS 提供的对象名映射功能,详细使用方式可以参考 库表列映射。 当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤 预检查。 在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。 如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。 启动迁移任务。 当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。 增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。 至此,完成将本地 MySQL 数据库实例到阿里云 RDS for MySQL 的数据迁移任务配置。
2019-12-01 23:09:42 0 浏览量 回答数 0

回答

Re迁移出现这个错误怎么解决grantreloadontordsperf 授权下就可以了,我也遇到这个问题了,阿里云官方文档有解决办法,执行完这些命令就好了 数据迁移至RDS-MySQL之利用RDS管理控制台 该方法是一种MySQL的在线迁移方法,可以不停服务就能够完成数据库的迁移工作,支持MySQL 5.1、5.5、5.6(5.0版本只支持全量迁移)的迁移。更多迁移信息可参考:如何快速平稳的迁入RDS>> 迁移注意事项 1)MySQL的系统库将不允许迁移至RDS,不允许迁移的数据库包括:mysql,information_schema,perfermance_schema。这些数据库将不会显示在迁移列表中; 2)不支持迁移存储过程和函数,如果待迁移的库中存在存储过程和函数,将忽略掉不迁移; 3)自建数据库必须与RDS实例中的数据库同名。否则,自建数据库为“暂不可迁移”状态; 4)自建库迁移账号密码不允许含有%¥#!等特殊字符; 5)迁移中禁止使用DDL操作例如:创建表、删除表、修改索引等操作; 6) 自建数据库的视图(view)无法迁移到RDS,需要您重新创建的。 迁移步骤 1)在自建数据库中创建迁移账号 命令格式: grant all privileges on DB.* to 'userName'@'%' identified by 'password'; MySQL数据迁移 说明:a) userName:MySQL数据库账号;b) password: MySQL数据库账号的密码。 2)设置迁移账号权限 命令格式: grant super,process,select,reload,lock tables,replication slave,replication client ON *.* TO 'userName'@'%'; MySQL数据迁移 说明:该命令对数据库账号userName赋予super、process、select、reload、lock tables、replication slave、replication client权限。 3)确认自建数据库中配置文件正确 确认MySQL配置文件my.cnf有如下设置项: MySQL数据迁移 说明: a) 开启二进制日志,log_bin=mysql-bin; b) 设置binlog格式为“ROW”模式,binlog_format=ROW; c) server_id要大于1,如server_id=2; d)修改完成后,重启MySQL进程。 4)登录自建数据库,通过命令查看是否为“ROW”模式 执行命令: show variables like ‘binlog_format%’; MySQL数据迁移 5)将数据迁移至RDS 在RDS管理控制台对应的实例页面,点击“将数据迁移至RDS”按钮,在弹出框中填写待迁移的数据库连接地址、数据库连接端口、数据库账号、数据库密码,如下图所示: 注意下:如果您的表是myisam引擎,无论下图是否选择锁表,迁移过程中都会锁表,下个版本我们会提供myisam不锁表的支持。 MySQL数据迁移
macroyan 2019-12-02 01:52:24 0 浏览量 回答数 0

问题

用户指南-数据迁移-使用 mysqldump 迁移 MySQL 数据

使用 mysqldump 工具的优点是简单易用、容易上手,缺点是停机时间较长,因此它适用于数据量不大,或者允许停机的时间较长的情况。 背景信息 由于 RDS 提供的关系型数据库服务与原生的数...
李沃晟 2019-12-01 21:39:40 513 浏览量 回答数 0

问题

OceanBase SQL尚不支持的功能以及需要注意的地方

OceanBase支持SQL 92与兼容MySQL, 原则上只要是MySQL的语法,OceanBase都能运行,本节列出一些尚不支持的功能以及需要注意的地方。 尚不支持的功能 不支持可更新视...
云栖大讲堂 2019-12-01 21:28:29 1314 浏览量 回答数 0

回答

首先,我们甚至不需要安装mysql-installer- community -5.7.3.0-m13.msi。 安装最新的mysql-visualstudio-plugin 安装最新的mysql-connector-net 新的C#.Net 4.5框架WinForms(对于4.0,它应该基于Entity Framework 6是否支持.NET 4.0?) 安装4个Nuget程序包(按照顺序,如果在EntityFramework之前安装Mysql.Data.Entities,它将解析依赖关系并安装EntityFramework 6.0.2,但我们需要的是EntityFramework 6.1.0) 实体框架 MySQL数据 Mysql.Data.Entities Mysql.Web 5.如果您在App.config中具有标签EntityFramework,请对其进行注释,并在标签启动后在App.config中插入新标签EntityFramework 6,添加ADO.NET实体数据模型(如上所述) 生成实体连接字符串(如所提到的)并在App.Config中打勾保存实体连接设置后,单击下一步 选择数据库对象和设置(表,视图,或存储过程和函数)(不要有“你想要哪个实体框架的版本使用?”因为我只有一个实体框架6.0提供商所以直接跳过了如果我唯一的提供者有效,则选择) 9,完成 恭喜^^ 顺便说一句,您可能需要添加.dll文件 MySql.Data.dll MySql.Data.Entity.EF6.dll MySql.Web.dll 在此文件夹内 C:\ Program Files \ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5(32位Windows) C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.8.3 \ Assemblies \ v4.5(64位Windows) 作为进一步E​​F6功能的项目参考。来源:stack overflow
保持可爱mmm 2020-05-17 17:09:21 0 浏览量 回答数 0

回答

本文介绍如何使用数据传输服务DTS(Data Transmission Service),将自建MySQL迁移至RDS MySQL实例。DTS支持结构迁移、全量数据迁移以及增量数据迁移,同时使用这三种迁移类型可以实现在自建应用不停服的情况下,平滑地完成自建MySQL数据库的迁移上云。 前提条件 创建RDS MySQL实例。 自建MySQL数据库版本为5.1、5.5、5.6、5.7、8.0版本。 RDS MySQL实例的存储空间须大于自建MySQL数据库占用的存储空间。 注意事项 DTS在执行全量数据迁移时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据迁移前评估源库和目标库的性能,同时建议您在业务低峰期执行数据迁移(例如源库和目标库的CPU负载在30%以下)。 如果源数据库没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。 对于数据类型为FLOAT或DOUBLE的列,DTS会通过ROUND(COLUMN,PRECISION)来读取该列的值。如果没有明确定义其精度,DTS对FLOAT的迁移精度为38位,对DOUBLE的迁移精度为308位,请确认迁移精度是否符合业务预期。 DTS自动在阿里云RDS MySQL中创建数据库,如果待迁移的数据库名称不符合阿里云RDS的定义规范,将导致创建数据库失败,所以您需要在配置迁移任务之前在阿里云RDS MySQL中创建数据库。 说明 关于阿里云RDS的定义规范和创建数据库的操作方法,请参见创建数据库。 对于迁移失败的任务,DTS会触发自动恢复。在您将业务切换至目标实例前,请务必先结束或释放该任务,避免该任务被自动恢复后,导致源端数据覆盖目标实例的数据。 费用说明 迁移类型 链路配置费用 公网流量费用 结构迁移/全量数据迁移 不收费。 通过公网将数据迁移出阿里云时将收费,详情请参见产品定价。 增量数据迁移 收费,详情请参见产品定价。 迁移类型说明 结构迁移 DTS将迁移对象的结构定义迁移到目标实例,目前DTS支持结构迁移的对象为表、视图、触发器、存储过程、存储函数,不支持event的结构迁移。 说明 在结构迁移时,DTS会将视图、存储过程和函数中的DEFINER转换为INVOKER。 由于DTS不迁移user信息,因此在调用目标库的视图、存储过程和函数时需要对调用者授予读写权限。 全量数据迁移 DTS会将自建MySQL数据库迁移对象的存量数据,全部迁移到目标RDS MySQL实例数据库中。 说明 由于全量数据迁移会并发INSERT导致目标实例的表存在碎片,全量迁移完成后目标实例的表空间会比源实例大。 为保障数据一致性,全量数据迁移期间请勿在自建MySQL数据库中写入新的数据。 增量数据迁移 在全量迁移的基础上,DTS会读取自建MySQL数据库的binlog信息,将自建MySQL数据库的增量更新数据同步到目标RDS MySQL实例中。通过增量数据迁移可以实现在自建应用不停服的情况下,平滑地完成MySQL数据库的迁移上云。 增量数据迁移支持同步的SQL操作 INSERT、UPDATE、DELETE、REPLACE CREATE TABLE、ALTER TABLE、RENAME TABLE、TRUNCATE TABLE、DROP TABLE 数据库账号的权限要求 数据库 结构迁移 全量迁移 增量迁移 自建MySQL数据库 select权限 select权限 select、replication slave和replication client权限 RDS MySQL实例 读写权限 读写权限 读写权限 数据库账号创建及授权方法: 自建MySQL数据库请参见为自建MySQL创建账号并设置binlog。 RDS MySQL实例请参见创建账号和修改账号权限。 准备工作 为自建MySQL创建账号并设置binlog 操作步骤 登录数据传输控制台。 在左侧导航栏,单击数据迁移。 在迁移任务列表页面顶部,选择迁移的目标实例所属地域。选择地域 单击页面右上角的创建迁移任务。 配置迁移任务的源库及目标库信息。 源库和目标库连接配置 类别 配置 说明 任务名称 - DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 源库信息 实例类型 您可以根据源库部署位置,选择有公网IP的自建数据库、ECS上的自建数据库或通过专线/VPN网关/智能网关接入的自建数据库。 本文以有公网IP的自建数据库为例介绍配置流程,当自建MySQL数据库为其他实例类型时,配置流程与该案例类似。 实例地区 当实例类型选择为有公网IP的自建数据库时,实例地区无需设置。 说明 如果您的自建MySQL数据库具备白名单安全设置,您需要在实例地区配置项后,单击获取DTS IP段来获取到DTS服务器的IP地址,并将获取到的IP地址加入自建MySQL数据库的白名单安全设置中。 数据库类型 选择MySQL。 主机名或IP地址 填入自建MySQL数据库的访问地址,本案例中填入公网地址。 端口 填入自建MySQL数据库的服务端口(需开放至公网),默认为3306。 数据库账号 填入自建MySQL的数据库账号,权限要求请参见数据库账号的权限要求。 数据库密码 填入该数据库账号对应的密码。 说明 源库信息填写完毕后,您可以单击数据库密码后的测试连接来验证填入的源库信息是否正确。源库信息填写正确则提示测试通过;如果提示测试失败,单击测试失败后的诊断,根据提示调整填写的源库信息。 目标库信息 实例类型 选择RDS实例。 实例地区 选择目标RDS实例所属地域。 RDS实例ID 选择目标RDS实例ID。 数据库账号 填入目标RDS实例的数据库账号,权限要求请参见数据库账号的权限要求。 数据库密码 填入该数据库账号对应的密码。 说明 目标库信息填写完毕后,您可以单击数据库密码后的测试连接来验证填入的目标库信息是否正确。目标库信息填写正确则提示测试通过;如果提示测试失败,单击测试失败后的诊断,根据提示调整填写的目标库信息。 连接方式 根据需求选择非加密连接或SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS实例的SSL加密功能,详情请参见设置SSL加密。 配置完成后,单击页面右下角的授权白名单并进入下一步。 说明 此步骤会将DTS服务器的IP地址自动添加到目标RDS实例的白名单中,用于保障DTS服务器能够正常连接目标RDS实例。 选择迁移对象及迁移类型。 选择迁移类型和迁移对象 配置 说明 迁移类型 如果只需要进行全量迁移,则同时勾选结构迁移和全量数据迁移。 说明 为保障数据一致性,全量数据迁移期间请勿在自建MySQL数据库中写入新的数据。 如果需要进行不停机迁移,则同时勾选结构迁移、全量数据迁移和增量数据迁移。 迁移对象 在迁移对象框中单击待迁移的对象,然后单击向右小箭头将其移动至已选择对象框。 说明 迁移对象选择的粒度可以为库、表、列三个粒度。 默认情况下,迁移完成后,迁移对象名跟自建MySQL数据库一致。如果您需要迁移对象在目标RDS实例上名称不同,那么需要使用DTS提供的对象名映射功能。使用方法请参见库表列映射。 如果使用了对象名映射功能,可能会导致依赖这个对象的其他对象迁移失败。 单击页面右下角的预检查并启动。 说明 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。 如果预检查失败,单击具体检查项后的提示,查看失败详情。根据提示修复问题后,重新进行预检查。 预检查通过后,单击下一步。 在购买配置确认页面,选择链路规格并勾选数据传输(按量付费)服务条款。 单击购买并启动,迁移任务正式开始。 结束迁移任务 警告 为尽可能地减少数据迁移对业务的影响,建议参考业务切换流程文档中介绍的流程执行业务切换并建立回退方案(将目标库的增量数据实时迁移回源库中)。如果无需切换业务,则可按照下述步骤结束迁移任务。 全量数据迁移 请勿手动结束迁移任务,否则可能导致数据不完整。您只需等待迁移任务完成即可,迁移任务会自动结束。 增量数据迁移 迁移任务不会自动结束,您需要手动结束迁移任务。 观察迁移任务的进度变更为增量迁移,并显示为无延迟状态时,将源库停写几分钟,此时增量迁移的状态可能会显示延迟的时间。 等待迁移任务的增量迁移再次进入无延迟状态后,手动结束迁移任务。结束增量迁移任务 后续操作 用于数据迁移的数据库账号拥有读写权限,为保障数据库安全性,请在数据迁移完成后,删除自建MySQL数据库和RDS MySQL实例中的数据库账号。 常见问题 Q:预检查失败如何处理? A:详情请参见源库连接性检查。 Q:迁移失败的任务如何处理? A:详情请参见修复迁移失败的任务。
游客yl2rjx5yxwcam 2020-03-08 14:03:52 0 浏览量 回答数 0

回答

;在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如$$,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止;。这样,当代码在mysql客户端中运行时,客户端可以知道整个过程的结束位置,并将其作为一个单元执行,而不是在其中执行各个语句。 请注意,DELIMITER关键字仅是命令行mysql客户端(和某些其他客户端)的功能,而不是常规的MySQL语言功能。如果您尝试将其通过编程语言API传递给MySQL,它将无法正常工作。其他一些客户端(如PHPMyAdmin)具有其他方法来指定非默认定界符。 例: DELIMITER $$ /* This is a complete statement, not part of the procedure, so use the custom delimiter $$ */ DROP PROCEDURE my_procedure$$ /* Now start the procedure code / CREATE PROCEDURE my_procedure () BEGIN / Inside the procedure, individual statements terminate with ; */ CREATE TABLE tablea ( col1 INT, col2 INT ); INSERT INTO tablea SELECT * FROM table1; CREATE TABLE tableb ( col1 INT, col2 INT ); INSERT INTO tableb SELECT * FROM table2; /* whole procedure ends with the custom delimiter */ END$$ /* Finally, reset the delimiter to the default ; */ DELIMITER ; 尝试DELIMITER与不支持它的客户端一起使用将导致将其发送到服务器,服务器将报告语法错误。例如,使用PHP和MySQLi: $mysqli = new mysqli('localhost', 'user', 'pass', 'test'); $result = $mysqli->query('DELIMITER $$'); echo $mysqli->error; 错误: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第1行的'DELIMITER $$'附近使用正确的语法
保持可爱mmm 2020-05-10 18:20:24 0 浏览量 回答数 0

回答

索引,索引!!!为经常查询的字段建索引!! 但也不能过多地建索引。insert和delete等改变表记录的操作会导致索引重排,增加数据库负担。优化目标1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by, group by,distinct … 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算)。当我们的 IO 优化做到一定阶段之后,降低 CPU 计算也就成为了我们 SQL 优化的重要目标优化方法改变 SQL 执行计划 明确了优化目标之后,我们需要确定达到我们目标的方法。对于 SQL 语句来说,达到上述2个目标的方法其实只有一个,那就是改变 SQL 的执行计划,让他尽量“少走弯路”,尽量通过各种“捷径”来找到我们需要的数据,以达到 “减少 IO 次数” 和 “降低 CPU 计算” 的目标分析复杂的SQL语句explain 例如: mysql> explain select from (select from ( select * from t3 where id=3952602) a) b; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY system NULL NULL NULL NULL 1 2 DERIVED system NULL NULL NULL NULL 1 3 DERIVED t3 const PRIMARY,idx_t3_id PRIMARY 4 1 很显然这条SQL是从里向外的执行,就是从id=3 向上执行.show show tables或show tables from database_name; // 显示当前数据库中所有表的名称 show databases; // 显示mysql中所有数据库的名称 show columns from table_name from database_name; 或MySQL show columns from database_name.table_name; // 显示表中列名称 show grants for user_name@localhost; // 显示一个用户的权限,显示结果类似于grant 命令 show index from table_name; // 显示表的索引 show status; // 显示一些系统特定资源的信息,例如,正在运行的线程数量 show variables; // 显示系统变量的名称和值show processlist; // 显示系统中正在运行的所有进程,也就是当前正在执行的查询。 show table status; // 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间 show privileges; // 显示服务器所支持的不同权限 show create database database_name; // 显示create database 语句是否能够创建指定的数据库 show create table table_name; // 显示create database 语句是否能够创建指定的数据库 show engies; // 显示安装以后可用的存储引擎和默认引擎。 show innodb status; // 显示innoDB存储引擎的状态 show logs; // 显示BDB存储引擎的日志 show warnings; // 显示最后一个执行的语句所产生的错误、警告和通知 show errors; // 只显示最后一个执行语句所产生的错误关于enum 存在争议。 对于取值有限且固定的字段,推荐使用enum而非varchar。但是!!其他数据库可能不支持,导致了难于迁移的问题。开启缓存查询 对于完全相同的sql,使用已经存在的执行计划,从而跳过解析和生成执行计划的过程。 应用场景:有一个不经常变更的表,且服务器收到该表的大量相同查询。对于频繁更新的表,查询缓存是不适合的 Mysql 判断是否命中缓存的办法很简单,首先会将要缓存的结果放在引用表中,然后使用查询语句,数据库名称,客户端协议的版本等因素算出一个hash值,这个hash值与引用表中的结果相关联。如果在执行查询时,根据一些相关的条件算出的hash值能与引用表中的数据相关联,则表示查询命中 查询必须是完全相同的(逐字节相同)才能够被认为是相同的。另外,同样的查询字符串由于其它原因可能认为是不同的。使用不同的数据库、不同的协议版本或者不同 默认字符集的查询被认为是不同的查询并且分别进行缓存。 下面sql查询缓存认为是不同的: SELECT * FROM tbl_name Select * from tbl_name 缓存机制失效的场景 如果查询语句中包含一些不确定因素时(例如包含 函数Current()),该查询不会被缓存,不确定因素主要包含以下情况 · 引用了一些返回值不确定的函数 · 引用自定义函数(UDFs)。 · 引用自定义变量。 · 引用mysql系统数据库中的表。 · 下面方式中的任何一种: SELECT ...IN SHARE MODE SELECT ...FOR UPDATE SELECT ...INTO OUTFILE ... SELECT ...INTO DUMPFILE ... SELECT * FROM ...WHERE autoincrement_col IS NULL · 使用TEMPORARY表。 · 不使用任何表。 · 用户有某个表的列级别权限。额外的消耗 如果使用查询缓存,在进行读写操作时会带来额外的资源消耗,消耗主要体现在以下几个方面 · 查询的时候会检查是否命中缓存,这个消耗相对较小 · 如果没有命中查询缓存,MYSQL会判断该查询是否可以被缓存,而且系统中还没有对应的缓存,则会将其结果写入查询缓存 · 如果一个表被更改了,那么使用那个表的所有缓冲查询将不再有效,并且从缓冲区中移出。这包括那些映射到改变了的表的使用MERGE表的查询。一个表可以被许多类型的语句更改,例如INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE。 对于InnoDB而言,事物的一些特性还会限制查询缓存的使用。当在事物A中修改了B表时,因为在事物提交之前,对B表的修改对其他的事物而言是不可见的。为了保证缓存结果的正确性,InnoDB采取的措施让所有涉及到该B表的查询在事物A提交之前是不可缓存的。如果A事物长时间运行,会严重影响查询缓存的命中率 查询缓存的空间不要设置的太大。 因为查询缓存是靠一个全局锁操作保护的,如果查询缓存配置的内存比较大且里面存放了大量的查询结果,当查询缓存失效的时候,会长时间的持有这个全局锁。因为查询缓存的命中检测操作以及缓存失效检测也都依赖这个全局锁,所以可能会导致系统僵死的情况静态表速度更快定长类型和变长类型 CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间,当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。 VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间,(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。varchar存储变长数据,但存储效率没有CHAR高。 如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。VARCHAR和TEXT、BlOB类型 VARCHAR,BLOB和TEXT类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸。 BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有65535字节的最大限制;TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它。 一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。 BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。 在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行,而对TEXT值是大小写不敏感的。换句话说,一个TEXT是一个大小写不敏感的BLOB。 效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char char和varchar可以有默认值,text不能指定默认值静态表和动态表 静态表字段长度固定,自动填充,读写速度很快,便于缓存和修复,但比较占硬盘,动态表是字段长度不固定,节省硬盘,但更复杂,容易产生碎片,速度慢,出问题后不容易重建。当只需要一条数据的时候,使用limit 1 表记录中的一行尽量不要超过一个IO单元 区分in和exist select * from 表A where id in (select id from 表B)这句相当于select from 表A where exists(select from 表B where 表B.id=表A.id)对于表A的每一条数据,都执行select * from 表B where 表B.id=表A.id的存在性判断,如果表B中存在表A当前行相同的id,则exists为真,该行显示,否则不显示 区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。 所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况复杂多表尽量少用join MySQL 的优势在于简单,但这在某些方面其实也是其劣势。MySQL 优化器效率高,但是由于其统计信息的量有限,优化器工作过程出现偏差的可能性也就更多。对于复杂的多表 Join,一方面由于其优化器受限,再者在 Join 这方面所下的功夫还不够,所以性能表现离 Oracle 等关系型数据库前辈还是有一定距离。但如果是简单的单表查询,这一差距就会极小甚至在有些场景下要优于这些数据库前辈。尽量用join代替子查询 虽然 Join 性能并不佳,但是和 MySQL 的子查询比起来还是有非常大的性能优势。 MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句在临时表中查询记录。查询完毕后,MySQL需要插销这些临时表。所以在MySQL中可以使用连接查询来代替子查询。连接查询不需要建立临时表,其速度比子查询要快。尽量少排序 排序操作会消耗较多的 CPU 资源,所以减少排序可以在缓存命中率高等 IO 能力足够的场景下会较大影响 SQL 的响应时间。 对于MySQL来说,减少排序有多种办法,比如: 上面误区中提到的通过利用索引来排序的方式进行优化 减少参与排序的记录条数 非必要不对数据进行排序尽量避免select * 大多数关系型数据库都是按照行(row)的方式存储,而数据存取操作都是以一个固定大小的IO单元(被称作 block 或者 page)为单位,一般为4KB,8KB… 大多数时候,每个IO单元中存储了多行,每行都是存储了该行的所有字段(lob等特殊类型字段除外)。 所以,我们是取一个字段还是多个字段,实际上数据库在表中需要访问的数据量其实是一样的。 也有例外情况,那就是我们的这个查询在索引中就可以完成,也就是说当只取 a,b两个字段的时候,不需要回表,而c这个字段不在使用的索引中,需要回表取得其数据。在这样的情况下,二者的IO量会有较大差异。尽量少or 当 where 子句中存在多个条件以“或”并存的时候,MySQL 的优化器并没有很好的解决其执行计划优化问题,再加上 MySQL 特有的 SQL 与 Storage 分层架构方式,造成了其性能比较低下,很多时候使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果。尽量用 union all 代替 union union 和 union all 的差异主要是前者需要将两个(或者多个)结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的 CPU 运算,加大资源消耗及延迟。所以当我们可以确认不可能出现重复结果集或者不在乎重复结果集的时候,尽量使用 union all 而不是 union。尽量早过滤 在 SQL 编写中同样可以使用这一原则来优化一些 Join 的 SQL。比如我们在多个表进行分页数据查询的时候,我们最好是能够在一个表上先过滤好数据分好页,然后再用分好页的结果集与另外的表 Join,这样可以尽可能多的减少不必要的 IO 操作,大大节省 IO 操作所消耗的时间。避免类型转换 这里所说的“类型转换”是指 where 子句中出现 column 字段的类型和传入的参数类型不一致的时候发生的类型转换: 人为在column_name 上通过转换函数进行转换直接导致 MySQL(实际上其他数据库也会有同样的问题)无法使用索引,如果非要转换,应该在传入的参数上进行转换,由数据库自己进行转换, 如果我们传入的数据类型和字段类型不一致,同时我们又没有做任何类型转换处理,MySQL 可能会自己对我们的数据进行类型转换操作,也可能不进行处理而交由存储引擎去处理,这样一来,就会出现索引无法使用的情况而造成执行计划问题。优先优化高并发的 SQL,而不是执行频率低某些“大”SQL 对于破坏性来说,高并发的 SQL 总是会比低频率的来得大,因为高并发的 SQL 一旦出现问题,甚至不会给我们任何喘息的机会就会将系统压跨。而对于一些虽然需要消耗大量 IO 而且响应很慢的 SQL,由于频率低,即使遇到,最多就是让整个系统响应慢一点,但至少可能撑一会儿,让我们有缓冲的机会。从全局出发优化,而不是片面调整 尤其是在通过调整索引优化 SQL 的执行计划的时候,千万不能顾此失彼,因小失大。尽可能对每一条运行在数据库中的SQL进行 explain 知道 SQL 的执行计划才能判断是否有优化余地,才能判断是否存在执行计划问题。在对数据库中运行的 SQL 进行了一段时间的优化之后,很明显的问题 SQL 可能已经很少了,大多都需要去发掘,这时候就需要进行大量的 explain 操作收集执行计划,并判断是否需要进行优化。尽量避免where子句中对字段进行null值的判断 会导致引擎放弃索引,进而进行全表扫描。 尽量不要给数据库留null值,尽可能地使用not null填充数据库。可以为每个null型的字段设置一个和null对应的实际内容表述。避免在where中使用!=, >, <操作符 否则引擎放弃使用索引,进行全表扫描。常用查询字段建索引避免在where中使用or imagein和not in关键词慎用,容易导致全表扫面 对连续的数值尽量用between通配符查询也容易导致全表扫描避免在where子句中使用局部变量 sql只有在运行时才解析局部变量。而优化程序必须在编译时访问执行计划,这时并不知道变量值,所以无法作为索引的输入项。 image避免在where子句中对字段进行表达式操作 会导致引擎放弃使用索引 image避免在where子句中对字段进行函数操作 image不要where子句的‘=’左边进行函数、算术运算或其他表达式运算 系统可能无法正确使用索引避免update全部字段 只update需要的字段。频繁调用会引起明显的性能消耗,同时带来大量日志。索引不是越多越好 一个表的索引数最好不要超过6个尽量使用数字型字段而非字符型 因为处理查询和连接时会逐个比较字符串的每个字符,而对于数字型而言只需要比较一次就够了。尽可能用varchar/nvarchar代替char/nchar 变长字段存储空间小,对于查询来说,在一个相对较小的字段内搜索效率更高。。。?避免频繁创建和删除临时表,减少系统表资源消耗select into和create table 新建临时表时,如果一次性插入数据量很大,使用select into代替create table,避免造成大量log,以提高速度。 如果数据量不大,为了缓和系统表的资源,先create table,再insert。 拆分大的DELETE和INSERT语句 因为这两个操作是会锁表的,对于高访问量的站点来说,锁表时间内积累的访问数、数据库连接、打开的文件数等等,可能不仅仅让WEB服务崩溃,还会让整台服务器马上挂了。 所以,一定要拆分,使用LIMIT条件休眠一段时间,批量处理。
wangccsy 2019-12-02 01:50:30 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT