mysql主主复制(双机热备)


前言

本文实现的双机热备是利用mysql数据库提供的主从备份机制,进行双向主从备份,不讲原理,直接上手弄它。


一、环境准备

1.serverA windows 10
2.serverB linux centos 7
3.mysql 5.3.74

二、配置步骤

1.serverA 为主,serverB为从,配置主从备份

因测试使用建立的是空库,配置主从之前,本文没有做数据库同步,如果有需要,你们自己做,哈哈,同步数据,把某个库的数据复制,同步A B数据,使AB数据保持一致。

1.1 在serverA创建同步账户

在serverA上创建只能在serverB上远程登录A的账户
serverA(192.168.254.17):

grant replication slave on *.* to 'repl_A'@'192.168.254.39' identified by '123456';
flush privileges;

1.2 配置serverA的my.ini

这里只展示出二进制的配置文件内容,注意,serverA为windows 10 serverB为linux centos

#开启二进制日志
server-id=1
log-bin=mysql-bin
binlog_format=row
binlog_row_image=minimal 
expire_logs_days=10            		#保留10天的bin_log日志,防止日志太多占用磁盘空间
max_binlog_size=1024M          		#binlog每个日志文件大小
#binlog_do_db=database_name        	#表示只记录指定数据库的二进制日志,默认全部记录
binlog-ignore-db=information_schema #表示不记录指定的数据库的二进制日志。
binlog-ignore-db=mysql  			#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=performance_schema #表示不记录指定的数据库的二进制日志。
binlog-ignore-db=sys 				#表示不记录指定的数据库的二进制日志。
auto-increment-increment=10         #每次增长10
auto-increment-offset=1             #设置自动增长的字段的偏移量,即初始值为1
log_bin_trust_function_creators=1   #函数创建限制

重新serverA的mysql服务

1.3 配置serverB的my.cnf

#开启二进制日志
#replicate-do-db=ceshi       					 	 #指定复制哪一个库
replicate-ignore-db=information_schema 				 #复制时需要排除的数据库
replicate-ignore-db=mysql 				 			 #复制时需要排除的数据库
replicate-ignore-db=performance_schema 				 #复制时需要排除的数据库
replicate-ignore-db=sys 				 			 #复制时需要排除的数据库
relay_log=mysql-relay-bin

重新serverB的mysql服务

1.4 开启主从复制

1.4.1 查看serverA主节点状态
SHOW MASTER STATUS

在这里插入图片描述

1.4.2 登陆serverB,并开启从节点
CHANGE MASTER TO 
       MASTER_HOST='192.168.254.17', 
       MASTER_USER='repl_A', 
       MASTER_PASSWORD='123456', 
       MASTER_LOG_FILE='mysql-bin.000011', 
       MASTER_LOG_POS=154;

MASTER_HOST 为serverA ip
MASTER_LOG_FILE 为主节点状态查询的file
MASTER_LOG_POS为主节点状态查询的Position

start slave #开启slave线程
stop slave #关闭slave线程

在这里插入图片描述
都为yes,即为配置主从成功;
此时主从已配置成功,serverA为主,serverB为从,之后再反过来做一次,即serverB为主,serverA为从,双向配置完成后,即为主主复制。

2.serverB为主,serverA为从,配置主从备份

2.1 在serverB创建同步账户

在serverB上创建只能在serverA上远程登录B的账户
serverB(192.168.254.39):

grant replication slave on *.* to 'repl_B'@'192.168.254.17' identified by '123456';
flush privileges;

1.2 配置serverB的my.cnf

#开启二进制日志
server-id = 2
log-bin=mysql-bin
binlog_format=row
binlog_row_image=minimal 
expire_logs_days=10            			#保留10天的bin_log日志,防止日志太多占用磁盘空间
max_binlog_size=1024M          			#binlog每个日志文件大小
#binlog_do_db=database_name        		#表示只记录指定数据库的二进制日志,默认全部记录
binlog-ignore-db=information_schema 	#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=mysql  			  	#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=performance_schema 	#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=sys 				  	#表示不记录指定的数据库的二进制日志。
auto-increment-increment=10         	#每次增长10
auto-increment-offset=1              	#设置自动增长的字段的偏移量,即初始值为1
log_bin_trust_function_creators=1       #函数创建限制

#replicate-do-db=ceshi       					 	 #指定复制哪一个库
replicate-ignore-db=information_schema 				 #复制时需要排除的数据库
replicate-ignore-db=mysql 				 			 #复制时需要排除的数据库
replicate-ignore-db=performance_schema 				 #复制时需要排除的数据库
replicate-ignore-db=sys 				 			 #复制时需要排除的数据库
relay_log=mysql-relay-bin

重新serverB的mysql服务

1.3配置serverA的my.ini

#开启二进制日志
server-id = 1
log-bin=mysql-bin
binlog_format=row
binlog_row_image=minimal 
expire_logs_days=10            			#保留10天的bin_log日志,防止日志太多占用磁盘空间
max_binlog_size=1024M          			#binlog每个日志文件大小
#binlog_do_db=database_name        		#表示只记录指定数据库的二进制日志,默认全部记录
binlog-ignore-db=information_schema 	#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=mysql  			  	#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=performance_schema 	#表示不记录指定的数据库的二进制日志。
binlog-ignore-db=sys 				  	#表示不记录指定的数据库的二进制日志。
auto-increment-increment=10         	#每次增长10
auto-increment-offset=1              	#设置自动增长的字段的偏移量,即初始值为1
log_bin_trust_function_creators=1       #函数创建限制

#replicate-do-db=ceshi       					 	 #指定复制哪一个库
replicate-ignore-db=information_schema 				 #复制时需要排除的数据库
replicate-ignore-db=mysql 				 			 #复制时需要排除的数据库
replicate-ignore-db=performance_schema 				 #复制时需要排除的数据库
replicate-ignore-db=sys 				 			 #复制时需要排除的数据库
relay_log=mysql-relay-bin

重新serverA的mysql服务

1.4 开启主从复制

1.4.1 查看serverB主节点状态

在这里插入图片描述

1.4.2 登陆serverA,并开启从节点
CHANGE MASTER TO 
       MASTER_HOST='192.168.254.39', 
       MASTER_USER='repl_B', 
       MASTER_PASSWORD='123456', 
       MASTER_LOG_FILE='mysql-bin.000004', 
       MASTER_LOG_POS=154;

MASTER_HOST 为serverA ip
MASTER_LOG_FILE 为主节点状态查询的file
MASTER_LOG_POS为主节点状态查询的Position

start slave #开启slave线程
stop slave #关闭slave线程

在这里插入图片描述

3.测试验证

3.1 登录A,创建数据库测试A

在这里插入图片描述

3.2 登录B,查看数据库

在这里插入图片描述
可以看到在A上创建的数据库,在B上可以查看到。

3.3 登录B,创建数据库测试B

在这里插入图片描述

3.4 登录A,查看数据库

在这里插入图片描述
可以看到在B上创建的数据库,在A上也可以查看。

经过上述简单的配置和测试,主主备份已完成,这里只选取了两台服务器,也可以根据情况进行多台服务器的配置,多主多从,一主多从等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值