Centos7 Mysql 双机热备实现数据库高可用
2018-09-12 14:53
477 查看
mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。
双机热备的条件是双机mysql版本必须一致。
服务器分别为A(172.16.9.212)、B(172.16.9.213),配置步骤如下:
一、A->B主从备份
1、在主服务器A上创建从服务器备份的用户,IP地址为B的IP
grant replication slave on *.* to 'wuwei'@'172.16.9.213' identified by '123456';
2、打开主服务器A的二进制日志binarylog
vim /etc/my.cnf
新增配置如下:
要同步的数据库为smartmon
配置好保存后需重启mysql
3、如果初态不同,则要同步初态
先锁定 smartmon数据库:
FLUSH TABLES WITH READ LOCK;
然后导出smartmon数据:
mysqldump --master-data -uroot -p smartmon > /root/smartmon.sql
解除锁定:
UNLOCK TABLES;
4、查看主服务器A的binary日志位置,配置从服务器需要用到:
show master status\G
5、打开从服务器B的中继日志relay_log
新增配置如下:
设置要备份的数据库为smartmon
保存,重启mysql
6、导入主服务器A的数据库初态
拷贝A生成的smartmon.sql到B服务器,再导入
mysql -uroot -p smartmon < smartmon.sql
然后可以在mysql环境中查看到数据库的数据是一样的
7、在从服务器B上开启主从同步,host为A的IP,用户密码是在主服务器A上设置备份用户,log_file和log_pos是主服务器master的binary看到的信息。
MariaDB [smartmon]> change master to
-> master_host='172.16.9.212',
-> master_user='wuwei',
-> master_password='123456',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=2338575;
8、在从服务器B上查看slave状态
show slave status\G
图中的红框, 两个都是Yes, 说明开启成功。
从A到B的主从复制就完成了,所有在A中的修改都能自动同步到B,但是对B的修改却不能同步到A。因为是单向的,如果需要双向同步的话,需要再做一次从B到A的复制。
二、B->A主从备份
实际就是步骤一的逆向操作。将B(172.16.9.213)作为主服务器,A(172.16.9.212)作为从服务器。步骤基本和上面一样:
1、在B中创建备份用户
grant replication slave on *.* to 'wuwei'@'172.16.9.212' identified by '123456';
2、打开 /etc/my.cnf , 开启B的binarylog:
新增配置如下:
3、不需要导出B的初态同步到A上了,因为A和B的初态是一样的(步骤一实现的),查看master日志状态。
show master status\G
4、登录到A服务器开启中继relay_log
5、在A服务器上开启同步:
MariaDB [smartmon]> change master to
-> master_host='172.16.9.213',
-> master_user='wuwei',
-> master_password='123456',
-> master_log_file='mysql-bin.000003',
-> master_log_pos=2394;
host为B的IP地址,user、password是在B上创建的备份用户,log_file、log_pos是在B上看到的master状态信息。
6、在A上查看slave status.
如果IO进程和SQL进程都为YES,说明从B到A的同步成功。
如果为NO或者执行步骤5失败的,则需要查看mysql日志文件/var/lib/mysql/主机名.err文件查找错误
图中的error信息是说找不到中继日志文件。
这是因为我们在配置A的中继文件时改了中继文件名,但是mysql没有同步。解决办法:
先停掉mysql服务,然后删掉/var/lib/mysql下的relay-log.info、主机名-relay-bin.000001、主机名-relay-bin.index,再启动mysql查看slave status就变为YES了。
配置完成。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/0eed5e68456b4eadbf7774cbdcd41d1e.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/dbd414b2c986649569a4aee077b1a90f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/4b00255b60ddc7317e8d7d0084238667.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/e1339d9f6ca019d893ea296548cd924a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/c629be3412718aec72ec25997ed2f5df.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/c5e516d404c8567ba078e2eb8a976b4f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/69c17682ac520aff55b7a87befe4630c.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/c01fa41dd8c6714626099f819f29a891.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/01c345f6585ec0ee5f7bbea58fa9ac7a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/b4f66a97b14a306e5a73e0af160a6df9.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/549b193cfdaa19b278caf14622144118.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201809/12/48a8b82721b331043cbe34c011327991.jpg)
相关文章推荐
- Mysql双机热备实现数据库高可用
- MHA+MYSQL+KEEPALIVED实现数据库的高可用
- MySql读写分离,及数据库高可用负载均衡的实现
- CentOS6.5安装DRBD+MariaDB+Heartbeat实现数据库集群高可用
- CentOS下使用crontab+mysqldump实现定时自动备份数据库
- Linux下keepalived+Mysql主主同步实现数据库高可用实践
- Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)
- JDBC实现用于操作数据库Mysql的工具类JDBCTools和DAO--完整可用版
- CentOS下使用crontab+mysqldump实现定时自动备份数据库
- CentOS下Mysql实现数据库主从同步
- ubuntu 使用docker安装mysql实现高可用数据库主从(三)
- 利用keepalive+mysql replication 实现数据库的高可用
- 实战 centos6.5下mysql-5.6.19数据库安装、优化、互为主从 mysql集群 高可用
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- CentOS 6.4 Heartbeat+mysql+nfs实现高可用的mysql集群 推荐
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
- CentOS5.8 HA集群之Corosync + Pacemaker + DRBD + MySQL实现MySQL高可用
- Corosync+pacemaker+DRBD+mysql(mariadb)实现高可用(ha)的mysql集群(centos7)
- CentOS下使用crontab+mysqldump实现定时自动备份数据库
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)