原环境:centos7.2 mysql5.7
目的环境:腾讯云 mysql5.7
工具:navicat premium
1.1.远程云数据库——使用工具navicat premium
使用navicat premium连接mysql时只有云数据库内网连接方式
首先在ssh标签页输入一个和云数据库可达的IP
再在常规下输入云主机的内网IP以及用户名密码即可
root登录后在navicat premium中执行sql语句,创建zabbix数据库以及zabbix用户并赋权
语句如下:
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'10.%' identified by 'your passwd';
flush privileges;
1.2 远程云数据库——使用工具腾讯云自带工具
创建账户
点击云数据库——管理——数据库管理——账号管理,如下:
点击创建账号——填写完毕后确定即可
创建数据库
数据库登陆后点击“前往PMA”,输入sql语句执行即可
可参考
参考:https://cloud.tencent.com/document/product/236/8465
1.3 远程云数据库——使用linux远程连接
需要登录到和内网服务器同一网段的机器上(此云数据库没有外网IP)
登录
[root@VM_20_3_centos scripts]# mysql -h 10.50.xx.xx -u zabbix -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1749
Server version: 5.7.18-txsql_57_0918-log 20180918
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
导出
因为腾讯云的mysql开启GTID,所以导出的时候需要添加 --set-gtid-purged=OFF,如下
mysqldump -h 10.50.xx.xx -u zabbix -p --set-gtid-purged=OFF zabbix >test.sql
导入
将从原数据库导出的ZABBIX20190527.sql导入到云数据中(可参考3的导出方法)
mysql -h 10.50.xx.xx -uzabbix -p zabbix < ZABBIX20190527.sql
可参考:
2 修改zabbix的数据库连接
修改 /etc/zabbix/web/zabbix.conf.php文件
[root@VM_20_3_centos ~]# cat /etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '10.50.xx.xx';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'your passwd';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'wupao';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
修改/etc/zabbix/zabbix_server.conf中的数据库配置
[root@VM_20_3_centos ~]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=10.50.xx.xx
DBName=zabbix
DBUser=zabbix
DBPassword=your passwd
DBPort=3306
StartTrappers=20
StartDiscoverers=90
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=30
重启zabbix_server服务,重启httpd服务
systemctl restart zabbix-server
systemctl restart httpd
3 将原数据库中数据通过mysqldump导出
原有数据库操作,执行mysqldump,将源数据库数据备份
#!/usr/bin/env bash
#author:chy
#date:20190416
Date=`date +"%Y%m%d"`
LogFile=zabbix_sql.log
ZABBIXBegin=`date +"%Y-%m-%d %H:%M:%S"`
ZABBIXDumpFile=ZABBIX$Date.sql
ZABBIXGZDumpFile=ZABBIX$Date.sql.tar.gz
BakDir_ZABBIX=/data/backup/mysql/
PASSWD=your passwd
mysqldump -uzabbix -p$PASSWD -l zabbix >$BakDir_ZABBIX$ZABBIXDumpFile
cd $BakDir_ZABBIX
/usr/bin/tar czPvf $ZABBIXGZDumpFile $ZABBIXDumpFile
/usr/bin/rm -f $BakDir_ZABBIX$ZABBIXDumpFile
ZABBIXEnd=`date +"$%Y-%m-%d %H:%M:%S"`
echo zabbixbackup_start:$ZABBIXBegin end:$ZABBIXEnd $ZABBIXGZDumpFile >> $LogFile
##delete 300天之前的数据
find /data/backup/mysql/* -type f -mtime +300 |xargs rm -rf
4 zabbix 数据库分表
之前有对本地zabbix数据库做了分表操作,请参考之前的文章
https://www.jianshu.com/p/b6b5b5377c9b
将数据库迁移到云数据库后,需要修改相应的脚本
修改为远程连接到云数据库即可
cat /data/scripts/zabbix_partitions.sh
#!/usr/bin/env bash
#author:chy
#date:20190527
DIR=/data/scripts
PARTBegin=`date +"%Y-%m-%d %H:%M:%S"`
mysql -h 10.50.xx.xx -uzabbix -pyour_paaswd zabbix -e"CALL partition_maintenance_all('zabbix')" &>>$DIR/partition.log&
PARTEnd=`date +"$%Y-%m-%d %H:%M:%S"`
echo zabbixMYSQL_part_start:$PARTBegin end:$PARTEnd >> $DIR/partitiona.log
crontab
#zabbix partition_maintenance
01 03 * * * /bin/bash /data/scripts/zabbix_partitions.sh