云服务器内容精选

  • 处理建议 在使用DRS进行迁移或同步时,连接源数据库的账号需要满足一定的权限要求,才能启动任务。不同引擎、不同模式的任务,需要的账号权限也不同。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 以MySQL的迁移为例,源数据用户权限要求如下: 全量迁移权限要求: SELECT、SHOW VIEW、EVENT。 参考语句:GRANT SELECT, SHOW VIEW, EVENT ON *.* TO 'user1'; 全量+增量迁移权限要求: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 其中,REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; SELECT、SHOW VIEW、EVENT、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待迁移数据库].* TO 'user1';
  • MySQL迁移场景 表1 Definer迁移权限检查 预检查项 Definer迁移权限检查。 描述 入云场景Definer迁移需要源库账号具有all privileges权限,出云场景的Definer迁移需要目标库账号具有all privileges权限。 不通过提示及处理建议 不通过原因:目标库的指定账号当前权限不足。 处理建议:选择Definer指定为目标数据库连接用户账号,或者赋予目标数据库用户all privileges权限。 可参考如下语句: grant all privileges on *.* to ‘user’@’host’ 不通过原因:源库的指定账号当前权限不足。 处理建议: 将所有Definer迁移到指定目标库用户下:在配置目标库时选择“所有Definer迁移到该用户下”,使得所有对象Definer均在该指定用户下。 保留原Definer设置,但需要赋予源数据库用户all privileges权限。 可参考如下语句: grant all privileges on *.* to ‘user’@’host’
  • 目标库为 GaussDB 同步场景 表10 源数据库用户权限是否足够 预检查项 源数据库用户权限是否足够。 描述 检查用户提供的源数据库账号权限是否符合迁移要求。 不通过提示及处理建议 不通过原因:连接源数据库的用户权限不足,用户需要具备schema的select权限。 处理建议:请使用对象的Owner用户或者系统管理员用户授予缺少的权限。 不通过原因:使用COPY接口同步数据时,用户缺少相关系统表 public.gs_copy_summary,public.pgxc_copy_error_log的权限。 处理建议:请使用对象的Owner用户或者系统管理员用户授权。赋权参考命令: grant all privileges on table public.os copy summary.public.pgxc copy error_log to user1;
  • PostgreSQL同步场景 表2 目标数据库用户权限是否足够 预检查项 目标数据库用户权限是否足够。 描述 按照需要同步对象的范围,授予不同的权限,有不同的要求。 库级同步: 如果目标库不是postgres,需要具有CREATEDB权限。 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。 表级同步: 如果需要同步库,需要具有CREATEDB权限。 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。 同步用户:需要具有CREATEROLE权限。 同步用户权限:同步用户的default privilege需要为系统默认值,否则可能导致目标库与源库的对象权限不一致。 不通过提示及处理建议 不通过原因:填写的目标数据库用户权限不足,需要具备CREATEDB权限。 处理建议:在目标数据库执行如下语句,赋予迁移账号CREATEDB权限。 alter role username with createdb; 不通过原因:用户没有SCHEMA的USAGE权限。 处理建议:在目标数据库执行如下语句,赋予迁移账号CREATEDB权限。 grant usage on schema schemaname to username; 不通过原因:用户没有创建TABLE的权限。 处理建议:在目标数据库执行如下语句,赋予迁移账号创建TABLE权限。 grant create on schema schemaname to username; 不通过原因:用户没有创建SCHEMA的权限。 处理建议:在目标数据库执行如下语句,赋予迁移账号创建SCHEMA的权限。 grant create on database to username; 不通过原因:库级同步,目标库为PostgreSQL 15时,全量或增量同步的过程中,可能会因为目标库默认schema:public权限不足导致任务同步失败。 处理建议:如果是表级同步,可以在目标库创建数据库;如果是库级同步,可以在任务进入全量同步后,在目标库下授予目标库schema:public的USAGE和CREATE权限,参考SQL如下: grant usage,create on schema public to username;
  • MongoDB迁移、同步场景 表3 目标数据库用户权限是否足够 预检查项 目标数据库用户权限是否足够。 描述 检查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致迁移失败。 不通过提示及处理建议 不通过原因:目标数据库连接失败,导致该项检查无法进行。 处理建议:查看目标数据库连接是否成功。 不通过原因:连接目标数据库的用户需要有admin的dbAdminAnyDatabase权限,有config的read权限,有目标数据库的readWrite权限。 处理建议:为连接目标数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"dbAdminAnyDatabase",db:"admin"}, {role:"read",db:"config"}, {role:"readWriteAnyDatabase",db:"admin"}]) 不通过原因:连接目标数据库的用户权限需要有待迁移库的readWrite权限。 处理建议:为连接目标数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"readWriteAnyDatabase",db:"admin"}]) 不通过原因:连接目标数据库的用户权限需要有config的read权限。 处理建议:为连接目标数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"read",db:"config"}]) 不通过原因:连接目标数据库的用户权限需要有admin的dbAdminAnyDatabase权限。 处理建议:为连接目标数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"dbAdminAnyDatabase",db:"admin"}]) 不通过原因:连接目标数据库的用户权限需要有admin的clusterManager权限。 处理建议:为连接目标数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"clusterManager",db:"admin"}])
  • MySQL灾备场景 表8 目标数据库用户权限是否足够 预检查项 目标数据库用户权限是否足够。 描述 查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致灾备失败。 不通过提示及处理建议 不通过原因:目标数据库权用户限不足,需要具备GRANT权限。 处理建议:在目标库执行如下语句,为用户赋予相应权限后重试。 GRANT SELECT, CREATE, DROP, DELETE, INSERT, UPDATE, SHOW VIEW, EVENT, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'u1' WITH GRANT OPTION;
  • Oracle迁移场景 表5 源数据库用户权限是否足够 预检查项 源数据库用户权限是否足够。 描述 检查用户提供的源数据库帐号权限是否符合迁移要求,若权限不够,会导致迁移失败。 不通过提示及处理建议 不通过原因:源数据库用户权限不足。 处理建议:建议将迁移用户赋予CREATE SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE、SELECT ANY DICTIONARY权限后重新校验。 说明: 当目标库为PostgreSQL时,还需要SELECT ANY SEQUENCE权限。
  • MongoDB迁移、同步场景 表4 源数据库用户权限是否足够 预检查项 源数据库用户权限是否足够。 描述 检查用户提供的源数据库帐号权限是否符合迁移要求,若权限不够,会导致迁移失败。 不通过提示及处理建议 不通过原因:源数据库连接失败,导致该项检查无法进行。 处理建议:查看源数据库连接是否成功。 不通过原因:连接源数据库的用户权限需要有admin库的readAnyDatabase权限和local库的read权限。 处理建议:为连接源数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}]) 不通过原因:连接源数据库的用户权限需要有admin库的readAnyDatabase权限和config库的read权限。 处理建议:为连接源数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}]) 不通过原因:连接源数据库的用户权限不足,需要连接源数据库mongos节点的用户需要有admin数据库的readAnyDatabase权限,有config数据库的read权限,连接源数据库shard节点的用户需要有admin数据库的readAnyDatabase权限,有local数据库的read权限。 处理建议:为连接源数据库的用户赋权。 mongos参考: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}]) shard参考: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}]) 不通过原因:连接源数据库的用户权限需要有admin库的readAnyDatabase权限。 处理建议:为连接源数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}]) 不通过原因:连接源数据库的用户权限需要有local库的read权限。 处理建议:为连接源数据库的用户赋权,参考: db.grantRolesToUser("用户名",[{role:"read",db:"local"}]) 不通过原因:连接源数据库的用户权限需要有config库的read权限 处理建议:为连接源数据库的用户赋权,参考 db.grantRolesToUser("用户名",[{role:"read",db:"config"}])
  • PostgreSQL同步场景 表3 源数据库用户权限是否足够 预检查项 源数据库用户权限是否足够。 描述 不同类型的同步任务,需授予同步账户不同权限。 全量同步:数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码)。 全量+增量同步:数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码),无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。 若权限不够,会导致迁移失败。 不通过提示及处理建议 不通过原因:源数据库连接失败,导致该项检查无法进行。 处理建议:查看源数据库连接是否成功。 不通过原因:用户基本权限不足。 处理建议:查看对应的数据库帐号权限是否符合迁移要求。 不通过原因:连接源数据库的用户权限不足,全量迁移时需要具备SELECT、REFEREN CES 、TRIGGER、EXECUTE和USAGE权限。 处理建议:更换迁移帐号或者对迁移帐号进行授权。 不通过原因:没有复制权限,需要在配置文件pg_hba.conf配置允许迁移实例和迁移帐号进行复制连接的权限。 处理建议: 配置该帐号的复制连接权限。 打开配置文件pg_hba.conf,配置如下参数,重启数据库生效。 host replication XXX(dbuser) 0.0.0.0/0 method 完成迁移之后删除这条记录,重启数据库生效。 不通过原因:源数据库参数max_wal_senders取值太小。 处理建议:建议将配置文件postgresql.conf中的max_wal_senders参数值增大,如+5,+10等等。 不通过原因:数据库不可用。 处理建议:请联系华为技术支持人员处理。 待确认提示及处理建议 待确认原因:源数据库中存在只有SUPERUSER用户才能创建的对象,而目标库连接用户不是SUPERUSER用户,这些对象将被忽略。 处理建议:使用SUPERUSER用户连接目标库,或确认这些对象可以被忽略。
  • Microsoft SQL Server为源场景 表2 源数据库用户权限是否足够 预检查项 源数据库用户权限是否足够。 描述 检查用户提供的源数据库帐号权限是否符合迁移要求。若权限不够,会导致迁移失败。 不通过提示及处理建议 不通过原因:源数据库连接失败,导致该项检查无法进行。 处理建议:查看源数据库连接是否成功。 不通过提示及处理建议 不通过原因:连接源数据库的用户权限不足,需要具备db_owner权限或者sysadmin权限。 处理建议:建议授予源库帐号db_owner或者sysadmin权限。 授予db_owner权限语句参考: exec sp_addrolemember 'db_owner', 'user_name'; 添加用户到sysadmin语句参考: EXECUTE sys.sp_addsrvrolemember @loginame = N'user_name', @rolename = N'sysadmin';