十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
专业从事成都网站设计、网站制作、外贸营销网站建设,高端网站制作设计,微信小程序定制开发,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用H5开发+CSS3前端渲染技术,响应式网站,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。
本文主要给大家简单讲讲如何通过XtraBackup和MySQL主从复制转移Zabbix数据库,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望如何通过XtraBackup和MySQL主从复制转移Zabbix数据库这篇文章可以给大家带来一些实际帮助。
一 应用场景描述
目前Zabbix监控系统的Server端和Web端以及MySQL运行在同一台虚拟机上,最近这台虚拟机运行不是很稳定,MySQL频繁被OOM杀掉。故需要及时迁移Zabbix数据库到另外一台大内存的物理机。
二 迁移步骤
迁移的思路是搭建MySQL主从复制,把现有的MySQL实例作为Master,把新的MySQL实例作为Slave,现DUMP一份现有的数据迁移到新的MySQL实例,然后设置主从同步,最后再关闭主从同步。
这里我们使用XtraBackup来备份Master的数据,而不使用mysqldump来备份数据,因为mysqldump备份的时候会锁表,并且备份时间较长。
1.更改Master的my.cnf
log-bin=mysql-bin log-bin-index=mysql-bin.index server-id=1 binlog_format=mixed
2.更改Slave的my.cnf
server-id = 2 relay-log-index = slave-relay-bin.index relay-log = slave-relay-bin replicate-ignore-db=mysql
3.使用xtrabackup开始备份
./innobackupex --user=xxxxx --password=xxxxx /backup/
根据数据量的多少备份的时间不同,但是比mysqldump快很多
可以使用./xtrabackup --help查看详细参数
如果估计备份时间比较长,可以开一个screen窗口
数据备份完了之后还需要拷贝一份snapshot
./innobackupex --user=xxxxx --password=xxxxx --apply-log /backup/2016-06-08_00-59-31/
4.复制备份数据到新的MySQL云服务器
rsync -avz /backup/2016-06-08_00-59-31 172.28.2.xx:~
确保新的MySQL实例处于关闭状态
mv /opt/data/mysql/* /backup/ mv 2016-06-08_00-59-31/* /opt/data/mysql/ chown mysql:mysql /opt/data/mysql
5.添加复制账号
CREATE USER repl_user; GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'xyzzy'; flush privileges;
6.在Slave服务端检测是否可用复制账号登录
# mysql -h 172.28.2.xxx -urepl_user -p mysql> show grants; +-----------------------------------------------------------------------------------+ | Grants for repl_user@% | +-----------------------------------------------------------------------------------+ | GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY PASSWORD| +-----------------------------------------------------------------------------------+ 1 row in set (0.03 sec)
7.配置主从复制
# cat /opt/data/mysql/xtrabackup_binlog_info mysql-bin.000053 120
mysql> CHANGE MASTER TO -> MASTER_USER='repl_user', -> MASTER_PASSWORD='xyzzy', -> MASTER_HOST='172.28.2.XXXX', -> MASTER_LOG_FILE='mysql-bin.000053', -> MASTER_LOG_POS=120; Query OK, 0 rows affected, 2 warnings (0.61 sec) mysql> START SLAVE; Query OK, 0 rows affected (0.02 sec)
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
主要查看这三个指标
8.停掉Zabbix server,并观察MySQL Slave的同步延迟时间,Seconds_Behind_Master为0时就可以执行以下的步骤了。
9.停掉并重置MySQL Slave
mysql> STOP SLAVE; Query OK, 0 rows affected (0.04 sec) mysql> RESET SLAVE; Query OK, 0 rows affected (0.13 sec) mysql> SHOW SLAVE STATUS\G *************************** 1. row ***************************
更改Slave的配置文件
将原来的主从复制相关配置项删除
server-id = 2 relay-log-index = slave-relay-bin.index relay-log = slave-relay-bin replicate-ignore-db=mysql
添加
log-bin=mysql-bin log-bin-index=mysql-bin.index server-id=1 binlog_format=mixed
重新启动MySQL
10.更改Zabbix server的MySQL配置并启动
除了更改Zabbix server的配置文件,还需要更改zabbix web的配置文件,将mysql配置更改为新的mysql
如何通过XtraBackup和MySQL主从复制转移Zabbix数据库就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。