mysql 字 符 集 问 题 之 zabbix

MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库、表、列等四个级别指定;

zabbix没有数据存储的功能,所以需要借助第三方数据库完成数据存储,比较流行的是使用mysql,而关于她的字符集就成了一个小问题,我们来是这去解决一下;

一:zabbix监控中常碰到的字符集问题解决

1. 图形中显示中文乱码

2. 历史记录处出现乱码

二:更改mysql字符集的操作

1. 查看当前的默认字符集

2. 安装之前设定字符集

3. 安装后没有存储数据时更改

4. 有了一定的数据存储后更改

一:zabbix监控中常碰到的字符集问题

1.图形中显示中文乱码



yum 安装的zabbix 字体并不是在/usr/share/zabbix/fonts下,而在/usr/share/zabbix/fonts/dejavu下,具体配置可以通过查看配置文件:/usr/share/zabbix/include/defines.inc.php;虽然这个目录下有个 DejaVuSans.ttf  但是不管用,

我们需要搞一个喜欢的中文字体放到这里来,比如从windows上的  C:\windows\fonts\目录下拷贝文件  simfang.ttf 到 /usr/share/zabbix/fonts/dejavu 目录下,然后修改名字

mv   DejaVuSans.ttf   DejaVuSans.ttf.bak

mv    simfang.ttf  DejaVuSans.ttf

重启:/etc/init.d/zabbix-server restart

2.历史记录处出现问号乱码

这是因为zabbix数据库所使用的字符集不是中文的utf8,解决方法如下:

备份zabbix数据库

mysqldump  -uroot  -p 123456   zabbix  >  zabbix.sql

修改备份文件

sed  -i  ‘s/latin1/utf8/g‘  zabbix.sql

删除zabbix数据库

mysql>  drop database zabbix;

退出mysql数据库,设置默认字符集

vim /etc/my.cnf

[mysqld]

log-bin

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

default-character-set = utf8                                  #添加该项

启动mysql并恢复zabbix数据库

mysql -uroot -p123456 zabbix < zabbix.sql

二:更改mysql字符集的操作


1. 查看当前的默认字符集

mysql> show create database zabbix;

mysql> show variables like ‘character%‘;

2. 安装之前设定,适用于源码包安装


我们可以在在编译MySQL的时候可以通过 DEFAULT_CHARSET=utf8

DEFAULT_COLLATION=utf8_general_ci这两个参数;

编译的时候指定--with-charset=utf8    --with-collation=utf8_general_ci)来指定默认的字符集为

utf8,这也是最一劳永逸的办法

3. 安装后没有数据时

/etc/my.cnf

修改mysql的my.ini或my.cnf文件中的字符集键值

在[mysqld]下添加

default-character-set=utf8                          (mysql 5.5 版本添加character-set-server=utf8)

在[client]下添加

default-character-set=utf8

重启:service mysql restart

查看:mysql> SHOW VARIABLES LIKE ‘character%‘

但是这种更改对客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。也就是传说中的setnames命令。

服务器上执行:

set  names  utf8                                               这就可以,只不过每次开机都得执行

其实set names utf8命令对应的是服务器端以下几个命令

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = xutf8;

因为这三个参数是不能写在配置文件my.cnf里的。只能通过set命令来动态修改。但是我们可以用init_connect,这个命令意思是每个用户连接上来的时候都会触发执行,可以在[mysqld]部分增加以下一行

[mysqld]

init_connect = ‘SET NAMES utf8‘

关于这个设置,有的文档在这个基础上另加了几条命令,在那三个set上又增加了几条,你的实在还不行的话加上试试吧

时间: 2024-10-12 04:44:33

mysql 字 符 集 问 题 之 zabbix的相关文章

第 四 十 三 天:mysql 的 相 关 问 题

小Q:梦想着诗一般的日子,时而简单,时而精致:处在歌一般的生活,时而 靠谱,时而不着调. ====================================================================== mysql在指定IP上启动端口----------------------------------------- 只需在my.cnf中的[mysqld]字段中加入一行 bind-addr  = 1.1.1.1 同一台MySQL服务器启动多个端口------------

s?q?l?s?e?r?v?e?r?结?果?集?转?为?字?符?串

比如有语句select username from Employee 返回结果是: username 张三 李四 王五 怎么输出一个字符串类似: 张三,李四,王五 答: declare @s varchar(1000) select @s=isnull(@s+',','')+username from Employee select @s as username --> 生成测试数据表:Employee   IF NOT OBJECT_ID('[Employee]') IS NULL     D

mysql---字符集详解

常用的字符集包括ASCII ,GB2312 , GBK , UTF-8 ,Unicode 首先要知道 ASCII编码: 用一个字节来标识0-9的数字.大小写字母.及一些标点和不可见字符.1个字节8位,可以有256种组合.标准的ASCII编码只利用一个字节的后7位(128种组合),最高位用作奇偶校验. 范围为0000 0000 - 0111 1111 即 0-127 因为ASCII最多只有256种组合,中国汉字成千上万,所以需要更多的字节来表示一个汉字,常见中文编码的有GB2312和GBK. GB

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

G - Brain Network (easy)(并查集水题)

G - Brain Network (easy) Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u CodeForces 690C1 Description One particularly well-known fact about zombies is that they move and think terribly slowly. While we still don't know

corosync+pacemaker and drbd实现mysql高可用集群

DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的,另外的节点是不可读的,连挂载都不可能,只有一个节点是主的,其它节 点都是从的.当做为主主架构时,需要达到几个条件,1.在高可用集群中启用DRBD;  2. 启用分布式文件锁功能,即需要把磁盘格式化为集群文件系统(如GFS2,OCFS2等):3. 把DRBD做成资源. 数据的存储过程: 当某个进程存

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron 原文链接:http://www.linuxidc.com/Linux/2012-07/65547.htm 架构图 先进行优化 vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304 net.c

关?于?h?i?b?e?r?n?a?t?e?中?双?向?外?键?关?联?o?n?e?-?t?o?-?o?n?e?的?p?r?o?p?e?r?t?y?-?r?e?f?=?的?问?题(转)

大家都知道hibernate中的one-to-one映射主要有两种策略,(1)一对一主键关联(单向和双向).(2)一对一外键映射(单项和双向).本文主要讲解一下,一对一外键映射中的双向问题,在此前先通过一个实例了解. person和idCard,是一种一对一的关系,其中   t_person表 id        name       idCard(unique) 1         张三 2         王五       1 其中王五是没有idcard,这也符合现实中的,有些人是没有身份证

LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案

方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor=50 worker.tomcat.cachesize=10 worker.tomcat.cache_timeout=600 worker.tomcat.socket_keepalive=1 worker.tomcat.socket_timeout=300 Linux内核优化: vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容net.