常见问题

如何访问MySQL实例?

  • 命令行操作

通过MySQL Client访问,登录云主机,在命令行中输入:

mysql -h$IP -P$Port -u$User -p$Password

$IP指定MySQL实例的内网IP地址。

$Port指定MySQL实例的端口。

$User指定MySQL实例的管理员名称。

$Password指定MySQL实例的管理员密码。

MySQL实例仅支持通过云主机进行内网登陆。

MySQL实例的安全性如何?

  • 访问安全性

MySQL实例仅支持通过云主机进行内网登陆且按账户进行隔离,因此仅有同一账户的云主机能够对MySQL实例进行登录。

MySQL实例是强制鉴权的,只能通过认证的管理员账户才能访问。

  • 数据安全性

所有的MySQL实例的数据文件所存放的硬盘都进行了RAID1保护。

MySQL实例每天都会进行数据备份,同时也提供了手工备份功能,以便用户能够在特定时间点主动对数据进行备份。

MySQL实例(Master)支持创建从库(搭建在与主库不同的物理机上),从库与主库自动进行数据同步,提供数据灾备的能力。

如何向MySQL实例中导入数据?

  • phpMyAdmin操作

登录phpMyAdmin,切换到“导入”页面,选择本地的数据文件进行导入。

  • 命令行操作

将需要导入的数据文件上传至云主机,在云主机中执行如下命令:

mysql –h$IP -P$Port –u$User -p$Password < data.sql

data.sql是指用户备份文件。

由于通过控制台导入数据有文件大小的限制,因此对于大文件,建议用户使用命令行导入数据。

注意:

Dump源数据库时,仅导出业务相关的库表,请过滤掉mysql/information_schema/performance_schema基础库。

若全库导入,会覆盖MySQL实例原有基础库,影响后续使用。

如果需要导入的数据中存在View或存储过程,需替换掉sql文件里的user@host为拥有正确权限的用户,如’root’@’%’,否则可能无法导入和正常使用。

如何从MySQL实例中导出数据?

以下操作不会锁库:

mysql –h$IP -P$Port –u$User -p$Password --quick --routines --single-transaction --databases db1 db2 db3 > data.sql

single-transaction可以保证InnoDB表的一致性,但MyISAM表无法保证一致性。如果有MyISAM表,可在业务低估时,进行锁库导出:

mysql –h$IP -P$Port –u$User -p$Password --master-data=2 -l –-databases db1 db2 db3 > data.sql

注意:dump导出时仅导出业务相关的库表。

如何创建新用户并授予权限?

  • phpMyAdmin操作

登录phpMyAdmin,点击添加用户,输入用户名、域和密码;如果域为’%’,在主机一栏选择“任意主机”; 如果指定某网段,选择“使用文本域”,然后输入对应的值,再勾选所需权限,完成后,点击“添加用户”即可。

  • 命令行操作

命令行操作请使用grant命令。

例:增加与root同样权限的用户”test@%”,密码123456。

用户使用root账号登陆云数据库,执行show grants,得到root权限语句:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,PROCESS,REFERENCES,INDEX,ALTER,SHOW DATABASES,CREATE TEMPORARY 
TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER 
ROUTINE,CREATE USER,EVENT,TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*xxxxxx' WITH GRANT OPTION

将该语句复制下来,然后替换语句中的用户名、域和密码串,执行修改后的授权语句:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,PROCESS,REFERENCES,INDEX,ALTER,SHOW DATABASES,CREATE TEMPORARY
TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER
ROUTINE,CREATE USER,EVENT,TRIGGER ON *.* TO 'test'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

刷新权限表

flush privileges;

QPS是如何统计的?

每分钟都进行一次QPS采样计算,右侧详情页性能监控所展示的曲线为5分钟粒度,若计算所得值小于1,则显示为0。

什么是内存溢出?

内存溢出,Out Of Memory,简称OOM,是指程序在申请内存时,没有足够的内存空间供其使用,出现OOM。

OOM原因:当内存使用超过数据库申请内存时,会按OS的一个规则评分,分数高的进行会Kill掉。

现象:通过控制台监控视图可以看到内存使用陡然下降,异常重启的监控项会出现数据。

可采取措施:确认内存使用参数配置合理,确认是否慢查询过多,确认这些内存是否能满足当前业务。

默认的最大连接数是多少?

综合考虑云岳数据库 InDB for MySQL服务的性能和稳定性,默认的最大连接数为2000,如果用户有特殊需求,可以上调至5000(5000为mysql云数据库服务提供最大上限)。

如何查看数据库运行状态?

  • 控制台操作

在MySQL实例管理页的列表中选择需查看的MySQL实例,右侧详情页中”性能监控”会展示CPU使用率、磁盘使用率、内存大小、内存使用率、连接数、QPS等监控数据。

  • 命令行操作

查看云数据库运行状况:

show status

查看InnoDB引擎运行状况:

show engine innodb status\G
  • phpMyAdmin操作

登录phpMyAdmin,选择“状态”>”查询统计”,查看数据库的请求频率以及分布情况。

如何查看MySQL实例的SlowLog?

  • 命令行操作

为了便于用户查看SlowLog,MySQL实例设置了log_output=table,会将SlowLog写入mysql.slow_log表中。如果需要查看SlowLog,可以执行:

select * from mysql.slow_log where start_time >= 'xxxx-xx-xx';

如何修改MySQL实例的配置参数?

MySQL实例允许用户导入自定义配置文件对云数据库的相关参数进行修改。具体操作参考操作指南的配置文件章节。

如何安装和卸载插件?

MySQL实例支持安装插件和卸载插件的功能,目前仅开放handlersocket。

  • 命令行操作

执行以下语句安装插件:

install plugin handlersocket soname 'handlersocket.so';

查看当前已安装的插件列表:

show plugins;

卸载插件:

uninstall plugin handlersocket;

如何查看MySQL实例的各项监控指标?

MySQL实例详情页的“监控”中可以查询。

Alternate text

MySQL实例详情页的“监控”中可以查询更多的QPS信息。

Alternate text

是否可以查看云数据库运行状态?

可以。以下以部分语句作为举例:

查看当前连接状态:

show full processlist

查看从库同步状态:

show slave status \G

查看InnoDB状态:

show engine innodb status\G

查看当前参数设置,如wait_timeout:

show global variables like '%wait_timeout%';

默认的配置是针对哪种存储引擎优化的?

针对INNODB优化的,由于MYISAM的并发性能比较差了,建议使用INNODB。

如何在云主机上搭建云数据库从库并进行主从同步呢?

可以在云主机搭建从库,与云数据库进行主从同步。

具体步骤如下:

1、云数据库导出数据:

mysqldump -hxxx -uxxx --quick --routines --master-data=2 --single-transaction --databases db1 db2 db3 > data.sql

对于使用MyISAM存储引擎库表使用:

mysqldump –hxxx –uxxx --master-data=2 -l –-databases db1 db2 db3 > data.sql

2、导入数据:

mysql –hxxx –uxxx –p < data.sql

3、设置同步。

第一步:从库配置文件修改(my.cnf)在[mysqld]下增加参数server-id=1(值与主库不一样即可)

执行service mysqld reload,使修改生效。

第二步:

登陆到主库中授权,执行:

grant replication slave on *.* to username@”x.x.x.x” identified by “xxxx”;
flush privileges;

第三步:

在data.sql中找到change master to,如:

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026',MASTER_LOG_POS=33268716;

将此语句复制后,登录从库,并补齐为如下命令

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx,MASTER_HOST='X.X.X.X',
MASTER_PORT=XXX,MASTER_USER='XXX',MASTER_PASSWORD='xxx';

PORT默认3306时可以不要指定,然后执行slave start。

查看主从是否建立成功,可以使用:

show slave status\G;

如何正确设置字符集?

浪潮云服务建议用户将所有的字符集都设置为utf8mb4,MySQL在5.5.3版本以后增加了utf8mb4编码,其中mb4是most bytes 4的含义,用来兼容四个字节的Unicode(万国码)。utf8mb4是utf8的一个扩展、超集,除了将编码改为utf8mb4外不需要做其他转换,统一的字符集设置是避免出现乱码最有效的方式。

另外,云岳数据库 InDB for MySQL不支持设置字符集的校验规则,采用的是对应字符集的默认校验规则,除非您自行在MySQL终端设置(我们非常不建议您这么做)。

出现乱码的原因大概有两个,一是存入的字符集(character_set_client)和取出的字符集(character_set_results)不一致,那么必然会导致乱码;二是虽然存入和取出的字符集一致,但期间有字符集转换,但是这个转换过程并非无损的,那么也有可能导致乱码。所以我们建议您通过浪潮云控制台去创建数据库并指定对应的字符集来杜绝乱码问题。不建议通过set命令设置字符集,会导致主从数据库参数配置不一致。

如何查询MySQL实例的客户端和服务器端版本?

登陆MySQL,执行命令s,首行显示客户端版本,Server version显示服务器端版本。

mysql> s
./mysql Ver 14.14 Distrib 5.6.20-ucloudrel1, for Linux (x86_64) using EditLine wrapper
Connection id: 40491
Current database:
Current user: ucloudbackup@115.239.196.104
SSL: Not in use
Current pager: stdout
Using outfile: ‘’
Using delimiter: ;
Server version: 5.5.24-ucloudrel1-log Source distribution
Protocol version: 10
Connection: 114.119.41.82 via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3370
Uptime: 3 days 8 hours 42 min 18 sec

常见的问题及解决方案