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数据库

  1. 查看数据库各表的存储大小

    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;
    
  2. 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;
    ​```
    
  3. 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