grafana 5.x 升级 grafana 8.x

一、升级过程

1.参阅文档

https://grafana.com/docs/grafana/latest/installation/upgrading/

2.RPM包下载地址

https://grafana.com/grafana/download

3.获取RPM至目录

[teld@T-MAA2-XXX-01 rpm]$ wget https://dl.grafana.com/oss/release/grafana-8.0.4-1.x86_64.rpm
[teld@T-MAA2-XXX-01 rpm]$ ll /usr/local/rpm
total 795856
-rw-rw-r-- 1 teld teld 54057268 Nov 27  2018 grafana-5.2.4-1.x86_64.rpm
-rw-r--r-- 1 root root 55996976 Feb 25  2019 grafana-6.0.0-1.x86_64.rpm
-rw-r--r-- 1 root root 58307414 Jun 26  2019 grafana-6.2.5-1.x86_64.rpm
-rw-r--r-- 1 root root 59492884 Nov 25  2019 grafana-6.4.5-1.x86_64.rpm
-rw-r--r-- 1 root root 60825824 Jan 15  2020 grafana-6.5.3-1.x86_64.rpm
-rw-r--r-- 1 root root 62807182 Feb 20  2020 grafana-6.6.2-1.x86_64.rpm
-rw-r--r-- 1 root root 63814375 Mar 19 00:11 grafana-6.7.6-1.x86_64.rpm
-rw-r--r-- 1 root root 49120318 Jul  9  2020 grafana-7.0.6-1.x86_64.rpm
-rw-r--r-- 1 root root 52239640 Aug  6  2020 grafana-7.1.3-1.x86_64.rpm
-rw-r--r-- 1 root root 52286726 Aug 25  2020 grafana-7.1.5-1.x86_64.rpm
-rwxrwxr-x 1 teld teld 55357041 Jun 18 17:46 grafana-8.0.3-1.x86_64.rpm
-rw-rw-r-- 1 teld teld 55424074 Jul  1 20:54 grafana-8.0.4-1.x86_64.rpm
[teld@T-MAA2-XXX-01 rpm]$

4.数据库备份

sqlite3

/var/lib/grafana/grafana.db

mysql

mysqldump grafana >grafana.sql

5.停止grafana-server

sudo systemctl stop grafana-server

6.删除插件

[teld@T-MAA2-XXX-01 rpm]$ sudo find / -name plugins
/var/lib/grafana/plugins
cd /var/lib/grafana/plugins
sudo rm -f *

自主安装的插件对升级的影响未知。

7.升级

升级之初,担心跨度太大会导致问题出现,升级中选择小版本逐个升级,在v5.x 升级至v6.x没有任何报错,都可正常运行访问。当升级v7.x之后的版本面临数据库报错,文末详细介绍。

经过验证grafana的升级可以从v5.x直接升级到v8.x,只是需要对数据库进行手动修改。

yum update grafana-8.0.4-1.x86_64.rpm

8.重启grafana-server

sudo systemctl start grafana-server

9.安装插件

sudo grafana-cli plugins install grafana-simple-json-datasource
grafana-cli plugins install natel-influx-admin-panel
grafana-cli plugins install grafana-piechart-panel

10.重启grafana-server

sudo systemctl start grafana-server

11.grafana WEB UI

在这里插入图片描述

二、升级中错误分析

1.数据库1170报错信息:

[root@T-MAA2-XXX-01 rpm]# tail -f /mnt/data/grafana/logs/grafana.log
t=2021-07-06T19:20:13+0800 lvl=info msg="Path Plugins" logger=settings path=/var/lib/grafana/plugins
t=2021-07-06T19:20:13+0800 lvl=info msg="Path Provisioning" logger=settings path=/etc/grafana/provisioning
t=2021-07-06T19:20:13+0800 lvl=info msg="App mode production" logger=settings
t=2021-07-06T19:20:13+0800 lvl=info msg="Writing PID file" logger=server path=/var/run/grafana/grafana-server.pid pid=28587
t=2021-07-06T19:20:13+0800 lvl=info msg="Connecting to DB" logger=sqlstore dbtype=mysql
t=2021-07-06T19:20:13+0800 lvl=info msg="Starting DB migration" logger=migrator
t=2021-07-06T19:20:13+0800 lvl=info msg="Executing migration" logger=migrator id="Add index user.login/user.email"
t=2021-07-06T19:20:13+0800 lvl=eror msg="Executing migration failed" logger=migrator id="Add index user.login/user.email" error="Error 1170: BLOB/TEXT column 'login' used in key specificatio
n without a key length"
t=2021-07-06T19:20:13+0800 lvl=eror msg="Exec failed" logger=migrator error="Error 1170: BLOB/TEXT column 'login' used in key specification without a key length" sql="CREATE INDEX `IDX_user_
login_email` ON `user` (`login`,`email`);"
t=2021-07-06T19:20:13+0800 lvl=eror msg="Server shutdown" logger=server reason="Service init failed: Migration failed err: Failed to roll back transaction due to error: %!s(<nil>): Error 117
0: BLOB/TEXT column 'login' used in key specification without a key length"
^C
[root@T-MAA2-XXX-01 rpm]# ^C

数据库1170错误详解

问题:

在MySQL数据库中,当MySQL创建新表或者更改已存在表,这个表存在主键,并且是unique唯一性约束和索引约束时,或者是在定义一个索引来更改数据表的text字段操作语句的时候,下面的错误信息很可能会出现,并且经过当前操作命令的完成。错误信息为BLOB或者TEXT字段使用了未指定键值长度的键,发生了这样的错误:BLOB/TEXT column ‘name’ used in key specification without a key length。

查阅资料后才知道,原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符。所以这样的数据类型不能作为主键,也不能是UNIQUE的。所以要换成VARCHAR,但是VARCHAR类型的大小也不能大于255,当VARCHAR类型的字段大小如果大于255的时候也会转换成小的TEXT来处理。所以也同样有问题。

此外,因为MySQL只能将BLOB/TEXT类型字段设置索引为BLOB/TEXT数据的钱N个字符,因此错误常常发生在字段被定义为TEXT/BLOB类型或者和TEXT/BLOB同质的数据类型,如TINYTEXT,MEDIUMTEXT,LONGTEXT ,TINYBLOB,MEDIUMBLOB 和LONGBLOB,并且当前操作是将这个字段设置成主键或者是索引的操作。在未指定TEXT/BLOB‘键长’的情况下,字段是变动的并且是动态的大小所以MySQL不能够保证字段的唯一性。因此当使用TEXT/BLOB类型字段做为索引时,N的值必须提供出来才可以让MySQL决定键长,但是MySQL不支持在TEXT/BLOB限制,TEXT(88)是不行的。

当你试图将数据表中的一个非TEXT或者非BLOB类型如VARCHAR或ENUM的字段转换成TEXT/BLOB,同时这个字段已经被定义了unique限制或者是索引,这个错误也会弹出,并且更改数据表的命令会执行失败。

原因:

出问题的原因是DataFrame对象索引的数据类型是TEXT/BLOB或其从属的类型,当将其作为mysql中的主键的时候,如果这些数据类型缺少明确的长度值,mysql无法保证主键的唯一性,因为这个主键是一个变量,其长度是动态的。所以当使用 TEXT/BLOB类型的数据作为索引的时候,数据的长度必须提供给mysql,使其能够明确键的长度。但是mysql不支持对TEXT/BLOB长度的限制。

同样的错误也会出现在试图将非TEXT/BLOB类型的数据列转换成TEXT/BLOB类型,这些列被定义成独立的索引。AlterTable命令会失效。

解决方案:

解决方案是将unique限制和索引从TEXT/BLOB字段中移除,或者是设置另一个字段为主键。如果不得不设置成主键,而想限制TEXT/BLOB的长度,可以尝试使用VARCHAR并设置其长度。VARCHAR默认长度是255个字符,并且其长度必须在其声明之后的右边括号中设置,例如,VARCHAR(200)将其设置成200个字符长度。

有时候,即使你在数据表中不使用TEXT/BLOB类型或者同质类型,error1170 也会出现,这个问题出现在当你设置一个VARCHAR字段为主键,但是却错误的设置了长度或者字符数,事实上,VARCHAR只能接受最大为256个字符串,但是你错误的设置成VARCHAR(512)等一些错误的设置,这些错误的设置会强制MySQL自动将VARCHAR(512)等转换成SMALLINT类型,同时这个字段被设置成primary key ,unique限制或者index索引等,然后执行操作就出现error 1170错误,解决问题的方法,为VARCHAR域指定小于256的长度。

修改报错表的数据类型

alter table user modify column login varchar(190);
alter table user modify column email varchar(190);
alter table dashboard modify column title varchar(189);

修改后表结构

desc user;

Field         |Type        |Null|Key|Default|Extra         |
--------------+------------+----+---+-------+--------------+
id            |bigint      |NO  |PRI|       |auto_increment|
version       |bigint      |YES |   |       |              |
login         |varchar(190)|YES |MUL|       |              |
email         |varchar(190)|YES |   |       |              |
name          |longtext    |YES |   |       |              |
password      |longtext    |YES |   |       |              |
salt          |longtext    |YES |   |       |              |
rands         |longtext    |YES |   |       |              |
company       |longtext    |YES |   |       |              |
org_id        |bigint      |YES |   |       |              |
is_admin      |bigint      |YES |   |       |              |
email_verified|bigint      |YES |   |       |              |
theme         |longtext    |YES |   |       |              |
created       |datetime    |YES |   |       |              |
updated       |datetime    |YES |   |       |              |
help_flags1   |bigint      |YES |   |0      |              |
last_seen_at  |datetime    |YES |   |       |              |
is_disabled   |tinyint(1)  |NO  |   |0      |              |
desc dashboard;

Field     |Type        |Null|Key|Default|Extra         |
----------+------------+----+---+-------+--------------+
id        |bigint      |NO  |PRI|       |auto_increment|
version   |bigint      |YES |   |       |              |
slug      |longtext    |YES |   |       |              |
title     |varchar(189)|YES |MUL|       |              |
data      |longtext    |YES |   |       |              |
org_id    |bigint      |YES |   |       |              |
created   |datetime    |YES |   |       |              |
updated   |datetime    |YES |   |       |              |
updated_by|bigint      |YES |   |       |              |
created_by|bigint      |YES |   |       |              |
gnet_id   |bigint      |YES |   |       |              |
plugin_id |longtext    |YES |   |       |              |
folder_id |bigint      |YES |   |0      |              |
is_folder |bigint      |YES |   |0      |              |
has_acl   |bigint      |YES |   |0      |              |
uid       |longtext    |YES |   |       |              |

重启grafana-server

sudo systemctl start grafana-server
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Energet!c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值