本地Zabbix5数据库数据备份
原数据库导出mysqldump
mysqldump -uroot -p --databases zabbix --ignore-table=zabbix.history --ignore-table=zabbix.history_log --ignore-table=zabbix.history_str --ignore-table=zabbix.history_text --ignore-table=zabbix.history_uint --ignore-table=zabbix.trends --ignore-table=zabbix.trends_uint > zabbix_dump.sql
mysqldump -d zabbix -uroot -p --tables history history_log history_str history_text history_uint trends trends_uint > zabbix_tables.sql
部署docker版zabbix6容器组
部署完成后启动容器组,确保能正常运行
数据迁移至mysql8容器
删除原 zabbix 库并创建新的 zabbix 库(编码为utf8mb4)
drop database zabbix;
create database zabbix character set utf8mb4 collate utf8mb4_bin;
导入 mysqldump
#导入前,需确保mysqldump中每个表的DDL语句中参数如下(可采用 sed 批量调整)
ENGINE=InodDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
将之前的sql文件放入mysql8容器中
docker cp zabbix_dump.sql 容器id:/home
docker cp zabbix_tables.sql 容器id:/home
docker cp history_pk_prepare.sql 容器id:/home
进入容器
docker exec -it --user=root 容器ID bin/sh
cd /home
mysql -uroot -p zabbix < zabbix_dump.sql
mysql -uroot -p zabbix < zabbix_tables.sql
导入zabbix6 history表结构
##本人csdn资源内可下载
mysql -uroot -p zabbix < history_pk_prepare.sql
修改数据库参数
登录mysql
mysql -uroot -p zabbix
#确保正常登录
> set global log_bin_trust_function_creators = 1;
Zabbix用户重新赋权
>grant all privileges on zabbix.* to 'zabbix'@'%' with grant option;
> flush privileges;
Zabbix版本校准
>use zabbix;
> update dbversion set mandatory=6000000;
> set global log_bin_trust_function_creators = 1;
重启mysql容器
docker restart mysql容器