1. 安装MySQL 5.6
操作系统为CentOS7 X64
MySQL文件下载地址 http://dev.mysql.com/downloads/repo/yum/
卸载已存在文件
rpm -qa|grep mariadb|xargs rpm -e --nodeps # 卸载CentOS 7自带的mariadb
rpm -qa|grep -i mariadb #查看是否卸载完毕
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装yum仓库文件
/etc/yum.repos.d/ 目录下新增 mysql-community.repo 、mysql-community-source.repo
yum localinstall mysql-community-release-el7-5.noarch.rpm
安装MySQL软件包
yum install mysql-community-server
2. 安装完成后无需启动
确保/var/lib/mysql/目录为空,因为会重新初始化
3. 创建目录
mkdir -p /var/lib/mysql/innodb_file/
mkdir -p /var/lib/mysql/data/
mkdir -p /var/lib/mysql/log/error_log
mkdir -p /var/lib/mysql/log/relay_log
mkdir -p /var/lib/mysql/log/general_log/
mkdir -p /var/lib/mysql/log/binary_log
mkdir -p /var/lib/mysql/log/slow_query_log/
chown -R mysql:mysql /var/lib/mysql
mysql_install_db --datadir=/var/lib/mysql/data/ --user=mysql
4. 初始化数据库
mysql_install_db --datadir=/var/lib/mysql/data/ --user=mysql
5.配置mysql参数
git clone https://github.com/zabbix-book/MySQL_conf.git
拷贝my.cnf至server端/etc/my.cnf中 编辑参数/etc/my.cnf中的内存参数 innodb_buffer_pool_size=20G
cp my.cnf-5.6.md /etc/my.cnf
6. 启动 mysql 服务
systemctl start mysqld.service #启动 mysql
systemctl enable mysqld.service #设置 mysql 开机启动
zabbix数据库
-
查看数据库各表的存储大小
mysql> SELECT table_name AS "Tables", -> round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB" -> FROM information_schema.TABLES -> WHERE table_schema = 'zabbix' -> ORDER BY (data_length + index_length) DESC;
-
zabbix数据库表分区脚本
# 下载分区脚本 git clone https://github.com/zabbix-book/partitiontables_zabbix.git # configration Before run this scripts,maybe you should modify it 修改脚本中的账号信息,如下所示 ``` # MySQL connect information ZABBIX_USER="zabbix" ZABBIX_PWD="zabbix" ZABBIX_DB="zabbix" ZABBIX_PORT="3306" ZABBIX_HOST="127.0.0.1" MYSQL_BIN="mysql" # How days you will keep history days,default is 30 历史数据存储保留时间 HISTORY_DAYS=30 # How months you will keep trend days,default is 12 趋势数据存储保留时间 TREND_MONTHS=12 # 脚本添加执行权限 chmod +x partitiontables_zabbix.sh # 运行脚本 sh partitiontables_zabbix.sh & # 为防止网络中断引起脚本运行中断而造成数据库故障,添加“&”去后台执行 # 验证脚本是否执行成功 mysql -uzabbix -pzabbix zabbix show create table history\G; # 当看到PARTITION的时候,说明分区已创建成功。 # 设置定时任务每天创建新分区 crontab -e 1 0 * * * /usr/sbin/partitiontables_zabbix.sh # 运行此脚本的时候,Zabbix库有存量数据,此时,建议清空想表的数据,然后再执行此脚本 ``` mysql> use zabbix; mysql> truncate table history; mysql> optimize table history; mysql> truncate table history_str; mysql> optimize table history_str; mysql> truncate table history_uint; mysql> optimize table history_uint; mysql> truncate table trends; mysql> optimize table trends; mysql> truncate table trends_uint; mysql> optimize table trends_uint; ```
-
zabbix数据库备份
```
备份zabbix数据库防止数据库因意外损坏导致所有配置丢失,这里对单表进行备份,而非全部备份。排除以下表(原因是这几张表的数据为监控的历史数据,非配置类数据)
```
# history* 、trends*、Acknowledges、Alters、Auditlog、Events、service_alarms
# 获取备份脚本
git clone https://github.com/zabbix-book/zabbix-mysql-backup.git
# 添加执行权限
chmod 700 /usr/sbin/zabbix_mysqldump.sh
# 脚本使用
1)备份数据
/usr/sbin/zabbix_mysqldump.sh mysqldump
2)恢复数据
/usr/sbin/zabbix_mysqldump.sh mysqlimport
# 设置定时任务每天备份
0 3 * * * /usr/sbin/zabbix_mysqldump.sh mysqldump