mysql双主互备设置详细记录
1.环境详细信息:
1.1 服务器A
CentOS realse 6.8 final
mysql,5.6.34
192.168.31.133;
1.2 服务器B,
CentOS realse 6.8 final
mysql,5.6.34
192.168.31.132
2.说明
2.1 对于一个mysql服务器,一般有两个线程来负责复制和被复制,当开启复制之后:
2.1.1 作为主服务器Master,会把自己的每一次改动都记录到二进制日志binarylog中。(从服务器会负责来读取这个log, 然后在自己那里再执行一遍。)
2.1.2 作为从服务器Slave,会用master上的账号登陆到master上,读取master的Binarylog,写入到自己的中继日志 relaylog,然后自己的sql线程会负责读取这个中继日志,并执行一遍。到这里主服务器上的更改就同步到从服务器上了。
3.设置详细步骤:
3.1 在服务器A上创建专门用于备份的账户,在mysql中执行:
grant replication slave on *.* to 'root_save'@'192.168.31.132' identified by 'root_save';
其中192.168.31.132为B服务器的IP地址,前面的root_save为用户名,后面的root_save为密码
3.2 开启主服务器(A服务器)的binarylog(配置my.cnf文件中的相关参数)
#about master-slave
#开启二进制日志
log-bin=mysql-bin
#设置二进制文件模式
binlog_format=mixed
#服务的ID,主从服务需要设置不同的值
server-id=1
#设置是否只读
read-only=0
#设置需要关注的数据库
#binlog-do-db=i_test
#设置需要忽略的数据库
#which should be ignored
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#how many db servers
auto-increment-increment = 10
# 设置增长的初始值
auto-increment-offset=2
#end master-slave
3.3 获取主服务器(A服务器)状态,和同步初态。
3.3.1 先锁定需要同步的数据库,比如我们测试的i_test,在mysql中执行:
use i_test;
FLUSH TABLES WITH READ LOCK;
3.3.2 导出数据库中的数据,在命令行中执行:
mysqldump --master-data -u root -p i_test > i_test.sql
3.3.3 查看A服务器的binary日志位置,在mysql中执行:
show master status\G;
执行结果如下:
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000007 #该参数在启动同步设置MASTER_LOG_FILE参数时使用
Position: 2879 #该参数在启动同步设置MASTER_LOG_POS参数时使用
Binlog_Do_DB:
Binlog_Ignore_DB: mysql,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.00 sec)
ERROR:
No query specified
3.3.4 解锁数据库,在mysql中依次执行:
use i_test;
unlock tables;
3.4 设置从服务器(B服务器)需要复制的数据库(配置my.cnf文件中的相关参数)
#about master to slave
log-bin=mysql-bin
binlog-format=mixed
#服务的ID,主从服务需要设置不同的值
server-id=2
#replicate-do-db=i_test
#可以指定需要复制的数据库
replicate-ignore-db=mysql
#复制时需要排除的数据库
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
#中继日志的名字
relay_log=mysqld-relay-bin
#中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。
log-slave-updates=ON
#about master to slave
3.5 配置my.cnf文件之后重启mysql服务
3.6 导入初态,开始同步
在从服务器(B服务器)创建数据库,i_test,在mysql中执行:
create database i_test;
把刚刚从主服务器(A服务器上)导出的i_test.sql导入到从服务器(B服务器)的i_test数据库中,在命令行执行:
mysql -u root -p i_test<i_test.sql
3.7 开启同步
在从服务器(B服务器)上执行
CHANGE MASTER TO
MASTER_HOST='192.***.***.***',#(A服务器IP)
MASTER_USER='repl_user',#(A服务器创建的B服务器访问账号)
MASTER_PASSWORD='hj3****',#(A服务器创建的B服务器访问账号的密码)
MASTER_LOG_FILE='mysql-bin.000004',#(A服务器的当前二进制日志文件的名称)
MASTER_LOG_POS=7145;#(A服务器的当前二进制日志文件的位置)
3.8 重启从服务器(B服务器)的mysql服务
3.9 查看从服务器(B服务器)的slave线程情况
show slave status\G;
只有在
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
才说明配置成功,其中任意一个为NO都表示配置不成功,应当查看错误日志,进行查看。
3.10 在主服务器(A服务器)上的i_test数据库中插入一条记录,在从服务器(B服务器)上进行查看,就能够正常的查看到了。
3.11 以上完成A-B的复制,即简单的主从配置,
现在开始配置B-A的复制,即:把B当成主服务器,A当成从服务器,从而实现双主热备.
3.12 在B中创建用于复制的账户,类似于3.1,在mysql中执行:
grant replication slave on *.* to 'root_save'@'192.168.31.133' identified by 'root_save';
3.13 开启主服务器(B服务器)的binarylog,类似于3.2
read-only=0
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
auto-increment-increment = 10
auto-increment-offset=6
3.14 查看主服务器(B服务器)的master日志状态,类似于3.3.3
show master status\G;
3.15 开启从服务器(A服务器)的中继日志,类似于3.4
#replicate-do-db=i_test
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
relay_log=mysqld-relay-bin
log-slave-updates = ON
3.16 启动同步,在从服务器(A服务器)的mysql下执行:
change master to
master_host='192.168.31.132',
master_user='root_save',
master_password='root_save',
master_log_file='mysql-bin.000006',
master_log_pos=120;
3.17 查看从服务器(A服务器)的slave状态是否正常
show slave status\G;
只有在
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
才说明配置成功,其中任意一个为NO都表示配置不成功,应当查看错误日志,进行查看。
3.18 完成以上操作之后,mysql双主热备就实现了。
4.配置过程中的注意事项:
4.1 注意参数的拼写,下划线和中划线的书写
4.2 注意查看错误日志
4.3 注意设置的账号和密码是否正确
4.4 注意对应端口是否开启以及防火墙的状态
4.5 注意在开启从服务器的同步时,应当是即时查看主服务器的master状态
4.6 注意设置mysql服务的开机启动
相关推荐
接下来是配置双主互备: 1. 在每台服务器的`/etc/my.cnf`中启用二进制日志功能(`log-bin`),设置日志格式(`binlog_format`)为混合模式。 2. 分配不同的`server-id`,用于区分两个MySQL实例。 3. 设置自增长ID的...
本文将详细介绍如何通过MySQL实现负载均衡及双主热备方案,帮助读者理解其工作原理及具体实施步骤。 #### 二、负载均衡的概念 负载均衡是指通过合理分配请求到不同的服务器上处理,以提高系统的响应速度和服务质量...
在这种架构中,两个MySQL服务器(Master M1 和 Master M2)互为主从,通过半同步复制确保数据在主备之间及时同步。Keepalived则用于监控和管理这两个MySQL节点,当一个主节点出现故障时,可以自动切换到另一个主节点...
MYSQL的高可用性解决方案包括单主多备、双主互备和集群/组复制等。单主多备是MYSQL的一种高可用性解决方案, MASTER故障恢复后需要重新搭建半同步复制。双主互备是MYSQL的一种高可用性解决方案,MASTER故障恢复不...
3. Master - Master双主互备:这种配置可能会破坏事务的隔离性和数据一致性。 4. Master - Master - Master监控三台机器互相做对方的master:存在复制延迟的天生缺陷。 5. One slave and multiple masters(一从对多...
- **双主互备(Master-Master)**:这种架构中,每台服务器既是主服务器也是从服务器,互为主从进行数据同步。但它存在事务隔离性和数据一致性的问题。 - **多主监控(Master-Master-Monitor)**:三台机器互相作为...
MySQL的主从同步是基于二进制日志实现的,主服务器执行的任何更改(DML和DDL语句)都会被记录到二进制日志中。从服务器连接到主服务器,并请求二进制日志的更新。主服务器将二进制日志发送给从服务器,从服务器执行...
- M-M(Master-Master)双主互备:每个服务器既是主服务器也是从服务器,但可能导致事务隔离性和数据一致性的问题。 - M-M-M监控:三台服务器互相监控,形成循环的主从关系。 - 一从多主(One Slave Multiple ...
总的来说,UNIX系统中设置MySQL数据同步复制涉及的主要知识点包括:配置文件的定位与修改、创建同步用户和数据库、主从模式配置、双机互备以及错误处理与恢复。正确配置这些参数,可以构建起可靠的数据库复制环境,...
4. **双机互备模式**: - 如果希望实现双向同步,即A到B和B到A的同步,只需在A和B上同时配置主从关系,但要确保不会形成循环(避免无限循环的复制)。 5. **错误处理**: - 当出现错误时,同步线程可能停止。需要...
但在双向同步或多主互备的场景下,如果多个服务器同时插入记录,可能会导致自增ID重复,从而引发冲突。 上述问题在描述中被详细阐述,例如,假设我们有两个服务器A和B,它们都有一个包含自增ID的test表。如果在A上...
系统采用的是MySQL双主模式,即两个数据库节点(node55和node56)互为主从,同时配备了Keepalived服务在各自宿主机上监控MySQL状态,以确保高可用性。 二、系统部署结构 系统由两个MySQL数据库实例和两个Keepalived...
- 双机互备(双主复制)时,每个服务器既是主也是从,配置更为复杂,需要确保冲突解决策略。 6. **相关命令**: - 主服务器:`SHOW MASTER STATUS;`,`SHOW SLAVE HOSTS;`,`SHOW LOGS;`,`SHOW BINLOG EVENTS;`...
19. **MySQL 主备同步的基本原理** - 通过复制日志(Binlog)实现从主服务器到从服务器的数据同步。 20. **如何优化数据库性能** - **索引**:合理创建索引以加速查询。 - **分库分表**:对大表进行水平拆分,...
- MySQL 的主从复制是通过记录主数据库的 Binlog(二进制日志),并将这些更新同步到从数据库的 Relay Log 中,再由从数据库重放这些日志来实现的。 - 主从复制可以实现读写分离,减轻主数据库的压力,提高系统...