前言
本文实现的双机热备是利用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上也可以查看。
经过上述简单的配置和测试,主主备份已完成,这里只选取了两台服务器,也可以根据情况进行多台服务器的配置,多主多从,一主多从等。