这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

1 数据库创建

概述

Zabbix数据库必须在Zabbix server或proxy安装的时候创建。

本节提供有关创建Zabbix数据库的说明。 每个受支持的数据库都有对应的创建命令。

UTF-8是Zabbix支持的唯一编码。它可以正常工作而没有任何安全漏洞。用户应注意,如果使用其他一些编码,则存在已知的安全问题。

If installing from Zabbix Git repository, you need to run:

$ make dbschema

prior to proceeding to the next steps.

MySQL

字符集utf8和utf8_bin排序规则是Zabbix Server/Proxy与MySQL数据库一起正常工作所必需的。

shell> mysql -uroot -p<password>
       mysql> create database zabbix character set utf8 collate utf8_bin;
       mysql> create user 'zabbix'@'localhost' identified by '<password>';
       mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
       mysql> quit;

<note important>如果要从Zabbix软件包安装,请在此处停止,并继续说明RHEL/CentOSDebian/Ubuntu将数据导入数据库。 :::

如果要从源代码安装Zabbix,请继续将数据导入数据库。对于Zabbix代理数据库,应仅导入schema.sql( 不是images.sql或data.sql):

shell> cd database/mysql
       shell> mysql -uzabbix -p<您的密码> zabbix < schema.sql
       # 下面步骤当创建Zabbix proxy数据库时不需要执行
       shell> mysql -uzabbix -p<您的密码> zabbix < images.sql
       shell> mysql -uzabbix -p<您的密码> zabbix < data.sql

PostgreSQL

需要使用有权限的用户去创建数据库对象。 以下shell命令将创建zabbix用户。在提示下请输入密码并再次确认密码。(注意,可能首先要求输入sudo命令对应的用户密码 ):

shell> sudo -u postgres createuser --pwprompt zabbix

现在将以先前创建的用户作为数据库所有者(参数:-O zabbix)设置数据库zabbix(最后一个参数)并导入initial schema和数据(假设当前目录位于Zabbix sources的根目录中):

shell> sudo -u postgres createdb -O zabbix zabbix

<note important>如果要从Zabbix软件包安装,请在此处停止,并继续说明Debian/UbuntuRHEL/CentOS将初始模式和数据导入数据库。

:::

如果要从源代码安装Zabbix,请继续导入初始架构和数据(假设您位于Zabbix源代码的根目录中)。对于Zabbix代理数据库,应仅导入schema.sql(不是images.sql或data.sql)。

shell> cd database/postgresql
       shell> cat schema.sql | sudo -u zabbix psql zabbix
       # 下面步骤当创建Zabbix proxy数据库时不需要执行
       shell> cat images.sql | sudo -u zabbix psql zabbix
       shell> cat data.sql | sudo -u zabbix psql zabbix

上面的命令仅作为例子提供参考,它可以在大多数GNU / Linux安装中使用。 可以使用不同的命令,例如:"psql -U <您的账号>",这取决于系统/数据库的配置方式。如果在设置数据库时遇到麻烦,请咨询数据库管理员。

TIMESCALEDB

在单独的部分中提供了有关创建和配置TimescaleDB的说明

Oracle

假设在Oracle服务器 host 上存在有权限创建数据库对象的用户(用户名为 zabbix,密码为 password ),并且该用户 具有/tmp目录的写入权限。Zabbix数据库需要使用UTF8字符集。检查当前设置:

sqlplus> select parameter,value from v$nls_parameters where parameter='NLS_CHARACTERSET' or parameter='NLS_NCHAR_CHARACTERSET';

需要将Zabbix数据库安装介质拷贝到Oracle服务器上的/tmp/zabbix_images目录下:

shell> cd /path/to/zabbix-sources
       shell> ssh user@oracle_host "mkdir /tmp/zabbix_images"
       shell> scp -r misc/images/png_modern user@oracle_host:/tmp/zabbix_images/

现在开始创建数据库:

shell> cd /path/to/zabbix-sources/database/oracle
       shell> sqlplus zabbix/password@oracle_host/ORCL
       sqlplus> @schema.sql
       # 下面步骤当创建Zabbix proxy数据库时不需要执行
       sqlplus> @images.sql
       sqlplus> @data.sql

请设置初始化参数CURSOR_SHARING = FORCE以获得最佳性能。

然后删掉介质存放的临时目录: Now the temporary directory can be removed:

shell> ssh user@oracle_host "rm -rf /tmp/zabbix_images"

SQLite

只有为Zabbix proxy 创建数据库的时候才能使用SQLite!

如果使用SQLite作为Zabbix proxy的数据库,创建时如果数据库不存在,将自动创建。

shell> cd database/sqlite3
       shell> sqlite3 /var/lib/sqlite/zabbix.db < schema.sql

返回 安装部分

Additional patches

In some cases, Zabbix might generate non-optimized queries to the database. This may happen, for example, as a result of using an older database version.
Additional DB patches are available for resolving such issues on the specific database or, sometimes, a specific database version. See [Known issues|/manual/installation/known_issues#slow-mysql-queries] for the list of known problems and available patches.