所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

FusionCloud 6.3.1 故障处理 06

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
常见问题

常见问题

如何查看创建实例的相关日志

在租户创建实例失败时,你可能需要查看创建该实例的相关日志,以帮助定位问题。

操作步骤
  1. 连接数据库,根据实例名称查找创建该实例的ID。

    登录各个RDSService节点所在的linux服务器,然后分别执行如下命令对RDSService的后台日志按照实例名称进行过滤。
    grep "实例ID" /opt/dbs/tomcat/mysql-instancemanager/logs/mysql/* > createRdsInstance.log 
    说明:
    • /opt/dbs/tomcat/mysql-instancemanager/logs/mysql/后面要加星号,表示对该目录下所有文件进行扫描。
    • RDSService各个节点的查询结果,均作为步骤 1的查询结果。
    • 创建实例的日志比较多,使用'> createRdsInstance.log' 把日志重定向到临时文件createRdsInstance.log中,便于对过滤后的日志进行查看、搜索等操作(使用完毕请及时清除该文件)。

    结果如下所示:

    图20-3 过滤结果
    说明:
    • 67a2a5c25c1d4451aa1112048a9e3e71in01为实例ID
    • 8532ae32-eb47-4a8d-95b4-e3e22141d1d9为workflow ID。
    • 2017-09-22 12:20:58为实例创建时RDS Service所在linux服务器的时间。
    • mysqlinstance.info.log为日志类型。

  2. 筛选出目标实例的查询结果,使用如下指导。

    1. 计算当前时刻RDSService所在linux服务器和浏览器所在机器的时差。
    2. 根据RDSService和浏览器所在机器的时差,计算出创建实例时RDSService的时间。假设创建实例的时间为20:20:58,RDSService和浏览器的时差为8小时(前者小于后者),那么创建实例时RDSService的时间为12:20:58。
    3. 步骤 1的查询结果中筛选出和2.b计算出的时间最接近的结果,即为目标实例的查询结果。

如何用SSH命令连接实例

准备工作
  1. 确定实例是在服务中。
  2. 确定GaussDB是在服务中。
  3. 获取GaussDB数据库的浮动IP(请查询工程部署文档获取IP地址)。
  4. 确定AESTool.jar工具可用。
操作步骤
  1. 登录RDSService节点,使用rds用户连接gsql,切换到对应数据库,根据节点ID查询出需要登录的实例,取出SSH_MGNT_PK、INTERNAL_VXLAN_IP、SSH_MGNT_PPH三个字段内容,并分别导出到对应文件中。导入的文件名称和位置没有特殊要求,文件名简单易懂即可。此处“67c3c5b61d97419292d1402045fe841fno01”为节点ID。

    [rds@service2 ~]$ gsql -dnewmysqltest -h172.xxx.xxx.xxx -Ugaussdba -p5432 -Wgaussdb@123 -c "select SSH_MGNT_PK from DBS_NODE where ID='67c3c5b61d97419292d1402045fe841fno01';" >67c3c5b61d97419292d1402045fe841fno01.xxx 2>/dev/null
    [rds@service2 ~]$ set -i -e '3!d' -e "s/\s*\(\w*\)\s*/\1/" 67c3c5b61d97419292d14020445fe841fno01.xxx
    [rds@service2 ~]$ gsql -dnewmysqltest -h172.xxx.xxx.xxx -Ugaussdba -p5432 -Wgaussdb@123 -c "select INTERNAL_VXLAN_IP from DBS_NIC where ID=(select TARGET_ENTITY_ID from DBS_RELATIONSHIP where SOURCE_ENTITY_ID='67c3c5b61d97419292d1402045fe841fno01' and TYPE_ID='REALTION-TYPE-002');" >67c3c5b61d97419292d1402045fe841fno01_xxxmanageIP.txt 2>/dev/null
    [rds@service2 ~]$ set -i -e '3!d' -e "s/\s*\(\w*\)\s*/\1/" 67c3c5b61d97419292d14020445fe841fno01_xxxmanageIP.txt
    [rds@service2 ~]$ gsql -dnewmysqltest -h172.xxx.xxx.xxx -Ugaussdba -p5432 -Wgaussdb@123 -c "select SSH_MGNT_PPH from DBS_NODE where ID='67c3c5b61d97419292d1402045fe841fno01';" >67c3c5b61d97419292d1402045fe841fno01_xxxmngPPh.txt 2>/dev/null
    [rds@service2 ~]$ set -i -e '3!d' -e "s/\s*\(\w*\)\s*/\1/" 67c3c5b61d97419292d14020445fe841fno01_xxxmngPPh.txt
    说明:
    • -h是数据库浮动IP,请根据实际情况修改。
    • -p是端口。
    • -U是远程连接用户名。
    • -W是远程连接密码。
    • -d是数据库名字,请根据实际情况修改。
    • -c中的内容表示查询语句。

  2. 使用AESTool.jar工具解密SSH_MGNT_PK、SSH_MGNT_PPH并将其保存,以备后续使用。

    说明:
    1. 加密的私钥SSH_MGNT_PK会保存在步骤1的导出文件中instance_key(文件名为示例),运行AESTool.jar工具解密:4 instance_key,解密结果会保存在自动生成的文件instance_key_decrypt中。密文的值SSH_MGNT_PPH解密方法同SSH_MGNT_PK,解密内容可进入对应文件中查看。
    2. AESTool.jar工具的获取与使用,请联系技术支持工程师协助解决。

  3. 用SSH命令登录实例;需要用到步骤2中SSH_MGNT_PPH解密后的内容、INTERNAL_VXLAN_IP以及SSH_MGNT_PK解密后得到的文件。

    ssh -i 67c3c5b61d97419292d1402045fe841fno01_decrypt.xxx -o StrictHostKeyChecking=no -o UserKnownHosetsFile=/dev/null Mike@100.64.1.211
    说明:
    1. 100.64.1.211为查询出来的实例的INTERNAL_VXLAN_IP。
    2. 67c3c5b61d97419292d1402045fe841fno01_decrypt.xxx为解密出来的SSH_MGNT_PK保存文件。

如何使实例上的工具udstool.jar打印日志(MySQL)

操作步骤
  1. 参照如何用SSH命令连接实例连接上实例。
  2. 更新udstool.jar的log4j.properties,按顺序执行下列命令。

    1. 切换到ruby用户,在/home/Ruby/bin目录下新建udstool目录。
      将/home/Ruby/bin目录下的udstool.jar复制一份到udstool目录下,并解压。
      [Mike@rds-oc-01 ~]$ su - Ruby
      [Ruby@rds-oc-01 ~]$ cd /home/Ruby/bin
      [Ruby@rds-oc-01 bin]$ mkdir udstool
      [Ruby@rds-oc-01 bin]$ cp udstool.jar udstool
      [Ruby@rds-oc-01 bin]$ cd udstool
      [Ruby@rds-oc-01 udstool]$ jar xvf udstool.jar
    2. 修改log4j.properties的内容,覆盖以下内容到log4j.properties文件中:
      # default properties to initialize log4j
      log4j.rootLogger=info,console
      ############################################
      #Console appender
      ############################################
      log4j.appender.console=org.apache.log4j.ConsoleAppender
      log4j.appender.console.layout=org.apache.log4j.PatternLayout
      log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%p|%c{1}|%m%n
      
      #north interface log
      log4j.logger.com.huawei.mos.services.MosService=info,iAppender
      log4j.appender.iAppender=org.apache.log4j.RollingFileAppender
      log4j.appender.iAppender.file=/home/Ruby/bin/logs/OBS-SDK.interface.log
      log4j.appender.iAppender.encoding=UTF-8
      log4j.appender.iAppender.MaxFileSize=10MB
      log4j.appender.iAppender.MaxBackupIndex=50
      log4j.appender.iAppender.layout=org.apache.log4j.PatternLayout
      log4j.appender.iAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%p|%m%n
      
      #south interface log
      log4j.logger.org.jets3t.service.impl.rest.httpclient.RestStorageService.ilog=off,iAppender2
      log4j.appender.iAppender2=org.apache.log4j.RollingFileAppender
      log4j.appender.iAppender2.file=/home/Ruby/bin/logs/OBS-SDK.interface.log
      log4j.appender.iAppender2.encoding=UTF-8
      log4j.appender.iAppender2.MaxFileSize=10MB
      log4j.appender.iAppender2.MaxBackupIndex=50
      log4j.appender.iAppender2.layout=org.apache.log4j.PatternLayout
      log4j.appender.iAppender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%p|%m%n
      
      #running log
      log4j.logger.com.huawei.mos.log.RunningLog=info,rAppender
      log4j.appender.rAppender=org.apache.log4j.RollingFileAppender
      log4j.appender.rAppender.file=/home/Ruby/bin/logs/OBS-SDK.run.log
      log4j.appender.rAppender.encoding=UTF-8
      log4j.appender.rAppender.MaxFileSize=10MB
      log4j.appender.rAppender.MaxBackupIndex=50
      log4j.appender.rAppender.layout=org.apache.log4j.PatternLayout
      log4j.appender.rAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%m%n
      
      log4j.logger.org.apache.http=WARN
      log4j.logger.org.apache.http.wire=WARN
      log4j.logger.org.apache.http.headers=WARN
      
      log4j.logger.org.jets3t=ERROR
      log4j.logger.org.jets3t.service=WARN
      log4j.logger.org.jets3t.service.Jets3tProperties=WARN
      log4j.logger.org.jets3t.service.utils=WARN
      log4j.logger.org.jets3t.service.utils.Mimetypes=WARN
      log4j.logger.org.jets3t.servlets=WARN
    3. 复制修改后的log4j.properties文件到/home/Ruby/bin/目录下。

      在/home/Ruby/bin/目录下备份原始udstool.jar文件为udstool.jar.org。

      [Ruby@rds-oc-01 udstool]$ cp log4j.properties /home/Ruby/bin/
      [Ruby@rds-oc-01 udstool]$ cd /home/Ruby/bin
      [Ruby@rds-oc-01 bin]$ cp udstool.jar udstool.jar.org
    4. 更新log4j.properties到udstool.jar中,更新udstool.jar的权限为500。
      [Ruby@rds-oc-01 bin]$ jar uf udstool.jar log4j.properties
      [Ruby@rds-oc-01 bin]$ chmod 500 udstool.jar

  3. 测试完成之后,删除临时文件,恢复到原始状态。

    [Ruby@rds-oc-01 bin]$ mv udstool.jar.org udstool.jar
    [Ruby@rds-oc-01 bin]$ rm -rf /home/Ruby/bin/udstool
    说明:

    udstool.jar的日志文件路径为:

    /home/Ruby/bin/logs/OBS-SDK.interface.log

    /home/Ruby/bin/logs/OBS-SDK.run.log

如何使实例上的工具obstool.jar打印日志(PostgreSQL)

操作步骤
  1. 参照如何用SSH命令连接实例连接上实例。
  2. 更新obstool.jar的log4j.properties,按顺序执行下列命令。

    1. 切换到ruby用户,在/home/Ruby/bin目录下新建obstool目录。
      将/home/Ruby/bin目录下的obstool.jar复制一份到obstool目录下,并解压。
      [Mike@rds-oc-01 ~]$ su - Ruby
      [Ruby@rds-oc-01 ~]$ cd /home/Ruby/bin
      [Ruby@rds-oc-01 bin]$ mkdir obstool
      [Ruby@rds-oc-01 bin]$ cp obstool.jar obstool
      [Ruby@rds-oc-01 bin]$ cd obstool
      [Ruby@rds-oc-01 obstool]$ jar xvf obstool.jar
    2. 修改log4j.properties的内容,覆盖以下内容到log4j.properties文件中:
      # default properties to initialize log4j
      log4j.rootLogger=info,console
      ############################################
      #Console appender
      ############################################
      log4j.appender.console=org.apache.log4j.ConsoleAppender
      log4j.appender.console.layout=org.apache.log4j.PatternLayout
      log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%p|%c{1}|%m%n
      
      #north interface log
      log4j.logger.com.huawei.mos.services.MosService=info,iAppender
      log4j.appender.iAppender=org.apache.log4j.RollingFileAppender
      log4j.appender.iAppender.file=/home/Ruby/bin/logs/OBS-SDK.interface.log
      log4j.appender.iAppender.encoding=UTF-8
      log4j.appender.iAppender.MaxFileSize=10MB
      log4j.appender.iAppender.MaxBackupIndex=50
      log4j.appender.iAppender.layout=org.apache.log4j.PatternLayout
      log4j.appender.iAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%p|%m%n
      
      #south interface log
      log4j.logger.org.jets3t.service.impl.rest.httpclient.RestStorageService.ilog=off,iAppender2
      log4j.appender.iAppender2=org.apache.log4j.RollingFileAppender
      log4j.appender.iAppender2.file=/home/Ruby/bin/logs/OBS-SDK.interface.log
      log4j.appender.iAppender2.encoding=UTF-8
      log4j.appender.iAppender2.MaxFileSize=10MB
      log4j.appender.iAppender2.MaxBackupIndex=50
      log4j.appender.iAppender2.layout=org.apache.log4j.PatternLayout
      log4j.appender.iAppender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%p|%m%n
      
      #running log
      log4j.logger.com.huawei.mos.log.RunningLog=info,rAppender
      log4j.appender.rAppender=org.apache.log4j.RollingFileAppender
      log4j.appender.rAppender.file=/home/Ruby/bin/logs/OBS-SDK.run.log
      log4j.appender.rAppender.encoding=UTF-8
      log4j.appender.rAppender.MaxFileSize=10MB
      log4j.appender.rAppender.MaxBackupIndex=50
      log4j.appender.rAppender.layout=org.apache.log4j.PatternLayout
      log4j.appender.rAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS}|%m%n
      
      log4j.logger.org.apache.http=WARN
      log4j.logger.org.apache.http.wire=WARN
      log4j.logger.org.apache.http.headers=WARN
      
      log4j.logger.org.jets3t=ERROR
      log4j.logger.org.jets3t.service=WARN
      log4j.logger.org.jets3t.service.Jets3tProperties=WARN
      log4j.logger.org.jets3t.service.utils=WARN
      log4j.logger.org.jets3t.service.utils.Mimetypes=WARN
      log4j.logger.org.jets3t.servlets=WARN
    3. 复制修改后的log4j.properties文件到/home/Ruby/bin/目录下。

      在/home/Ruby/bin/目录下备份原始obstool.jar文件为obstool.jar.org。

      [Ruby@rds-oc-01 obstool]$ cp log4j.properties /home/Ruby/bin/
      [Ruby@rds-oc-01 obstool]$ cd /home/Ruby/bin
      [Ruby@rds-oc-01 bin]$ cp obstool.jar obstool.jar.org
    4. 更新log4j.properties到obstool.jar中,更新obstool.jar的权限为500。
      [Ruby@rds-oc-01 bin]$ jar uf obstool.jar log4j.properties
      [Ruby@rds-oc-01 bin]$ chmod 500 obstool.jar

  3. 测试完成之后,删除临时文件,恢复到原始状态。

    [Ruby@rds-oc-01 bin]$ mv obstool.jar.org obstool.jar
    [Ruby@rds-oc-01 bin]$ rm -rf /home/Ruby/bin/obstool
    说明:

    obstool.jar的日志文件路径为:

    /home/Ruby/bin/logs/OBS-SDK.interface.log

    /home/Ruby/bin/logs/OBS-SDK.run.log

创建表DDL语句MySQL5.6报错SQLSTATE[42000]

现象描述

用户使用MySQL5.6.x版本,创建表DDL语句时报如下错误:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

用户DDL:

CREATE TABLE access_token(id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NUL L, client_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL,expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL,UNIQUE INDEX UNIQ_B6A2DD685F37A13B (token), INDEX IDX_B6A2DD68A76ED395 (user_id), INDEX IDX_B6A2DD6819EB6921 (client_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB';
可能原因

MySQL5.6允许索引字段的最大字节数是767字节。

  • 如果用户使用的是双字节字符编码,比如GBK,则索引的字段最大大小为383字符(767/2)。
  • 如果用户使用的是三字节字符编码,比如UTF8,则索引的字段最大大小为255字符(767/3)。
  • 如果用户使用的是四字节字符编码,比如UTF8mb4,则索引的字段最大大小为191字符(767/4)。

客户使用的是utf8mb4,所以最大可索引的字段大小是191字符。

处理方案一

使用前缀索引,确保只索引191个字符。

示例:

CREATE TABLE access_token
(id INT AUTO_INCREMENT NOT NULL, 
user_id INT DEFAULT NULL, 
client_id INT DEFAULT NULL, 
token VARCHAR(255) NOT NULL,
expires_at INT DEFAULT NULL, 
scope VARCHAR(255) DEFAULT NULL,
UNIQUE INDEX UNIQ_B6A2DD685F37A13B (token(191)), 
INDEX IDX_B6A2DD68A76ED395 (user_id), 
INDEX IDX_B6A2DD6819EB6921 (client_id), 
PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
处理方案二

使用小一些字节编码的字符集,比如UTF8。

示例:

CREATE TABLE access_token
(id INT AUTO_INCREMENT NOT NULL, 
user_id INT DEFAULT NULL, 
client_id INT DEFAULT NULL, 
token VARCHAR(255) NOT NULL,
expires_at INT DEFAULT NULL, 
scope VARCHAR(255) DEFAULT NULL,
UNIQUE INDEX UNIQ_B6A2DD685F37A13B (token), 
INDEX IDX_B6A2DD68A76ED395 (user_id), 
INDEX IDX_B6A2DD6819EB6921 (client_id), 
PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 ENGINE = InnoDB;

更多关于索引字段大小限制的信息:

MySQL5.6允许索引字段的最大大小为767字节。

  • 双字节字符集,比如GBK,最大为383(767/2)字符。
    mysql>create table t(name varchar(384),key idx_name(name))DEFAULT CHARACTER SET GBK;
    ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    mysql>create table t(name varchar(383),key idx_name(name))DEFAULT CHARACTER SET GBK;
    Query OK, 0 rows affected (0.02 sec)
  • 三字节字符集,比如utf8,最大为255(767/3)字符。
    mysql>create table t(name varchar(256),key idx_name(name))DEFAULT CHARACTER SET UTF8;
    ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    mysql> create table t(name varchar(255),key idx_name(name))DEFAULT CHARACTER SET UTF8;
    Query OK, 0 rows affected (0.02 sec)
  • 四字节字符集,比如utf8mb4,最大为191(767/4)字符。
    mysql> create table t(name varchar(192),key idx_name(name))DEFAULT CHARACTER SET UTF8mb4;
    ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    mysql> create table t(name varchar(191),key idx_name(name))DEFAULT CHARACTER SET UTF8mb4;
    Query OK, 0 rows affected (0.03 sec)

MySQL5.7允许索引字段最大大小为3072字节。

  • 双字节字符集,比如GBK,最大为3072/2字符。
    mysql> create table t(name varchar(1537),key idx_name(name))DEFAULT CHARACTER SET GBK;
    ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
    mysql> create table t(name varchar(1536),key idx_name(name))DEFAULT CHARACTER SET GBK;
    Query OK, 0 rows affected (0.02 sec)
  • 三字节字符集,比如utf8,最大为3072/3字符。
    mysql> create table t(name varchar(1025),key idx_name(name))DEFAULT CHARACTER SET UTF8;
    ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
    mysql> create table t(name varchar(1024),key idx_name(name))DEFAULT CHARACTER SET UTF8;
    Query OK, 0 rows affected (0.02 sec)
  • 四字节字符集,比如utf8mb4,最大为3072/4字符。
    mysql> create table t(name varchar(769),key idx_name(name))DEFAULT CHARACTER SET UTF8mb4;
    ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
    mysql> create table t(name varchar(768),key idx_name(name))DEFAULT CHARACTER SET UTF8mb4;
    Query OK, 0 rows affected (0.02 sec)
翻译
下载文档
更新时间:2019-08-19

文档编号:EDOC1100043088

浏览量:19332

下载量:447

平均得分:
本文档适用于这些产品
相关版本
相关文档
Share
上一页 下一页