mysql主主复制(双机热备)

文章目录

  • 前言
  • 一、环境准备
  • 二、配置步骤
    • 1.serverA 为主,serverB为从,配置主从备份
      • 1.1 在serverA创建同步账户
      • 1.2 配置serverA的my.ini
      • 1.3 配置serverB的my.cnf
      • 1.4 开启主从复制
        • 1.4.1 查看serverA主节点状态
        • 1.4.2 登陆serverB,并开启从节点
    • 2.serverB为主,serverA为从,配置主从备份
      • 2.1 在serverB创建同步账户
      • 1.2 配置serverB的my.cnf
      • 1.3配置serverA的my.ini
      • 1.4 开启主从复制
        • 1.4.1 查看serverB主节点状态
        • 1.4.2 登陆serverA,并开启从节点
    • 3.测试验证
      • 3.1 登录A,创建数据库测试A
      • 3.2 登录B,查看数据库
      • 3.3 登录B,创建数据库测试B
      • 3.4 登录A,查看数据库


前言

本文实现的双机热备是利用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线程

mysql主主复制(双机热备)_第1张图片
都为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主节点状态

mysql主主复制(双机热备)_第2张图片

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线程

mysql主主复制(双机热备)_第3张图片

3.测试验证

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

mysql主主复制(双机热备)_第4张图片

3.2 登录B,查看数据库

mysql主主复制(双机热备)_第5张图片
可以看到在A上创建的数据库,在B上可以查看到。

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

mysql主主复制(双机热备)_第6张图片

3.4 登录A,查看数据库

mysql主主复制(双机热备)_第7张图片
可以看到在B上创建的数据库,在A上也可以查看。

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

你可能感兴趣的:(mysql主从复制,mysql主主复制,mysql双机热备,mysql)