MySQL双向同步热备设置以及同步错误的处理
环境
A: 192.168.0.1
B: 192.168.0.2
其中A上已经有数据库在服务,需要在B上搭建一个备库,并且和A实现双向同步。
设置
授权复制用户
即分别在A,B上增加一个用户让彼此访问
A:
grant replication slave,file on *.* to 'backup'@'192.168.0.2' identified by '123456';
B:
grant replication slave,file on *.* to 'backup'@'192.168.0.1' identified by '123456';
检测通过backup这个用户能够访问彼此的MySQL。
配置文件设置
B:
[mysqld]
# 省略...
# replication settings
# A 192.168.0.1
# B 192.168.0.2
server-id=2
log-bin=/home/mysql/log/mysql-bin
# 因为是双向,自动增加的id会有冲突,把步长改为2 初始设为2
auto_increment_increment=2
auto_increment_offset=2
# master设置
master-host=192.168.0.1
master-user=backup
master-pass=123456
master-port=3306
master-connect-retry=30
# 设置需要复制的库
replicate-do-db=your_db1
replicate-do-db=your_db2
# 省略...
A:
[mysqld]
# 省略...
# replication settings
# A 192.168.0.1
# B 192.168.0.2
server-id=1
log-bin=/home/mysql/log/mysql-bin
# 因为是双向,自动增加的id会有冲突,把步长改为2 初始设为1
auto_increment_increment=2
auto_increment_offset=1
# master设置
master-host=192.168.0.2
master-user=backup
master-pass=123456
master-port=3306
master-connect-retry=30
# 设置需要复制的库
replicate-do-db=your_db1
replicate-do-db=your_db2
# 省略...
同步现有数据
停止A数据库的操作,把A中的数据用mysqldump或者直接拷贝文件的方法复制到B,确保B正常。
设置并检查同步
启动A和B上的的MySQL
检查master status:
A:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 8937501 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
B:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000019 | 597 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
检查slave status:
A:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.2
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 597
Relay_Log_File: mysqld-relay-bin.000005
Relay_Log_Pos: 429
Relay_Master_Log_File: mysql-bin.000019
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: your_db1,your_db2
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 597
Relay_Log_Space: 429
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
B:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.1
Master_User: backup
Master_Port: 3306
Connect_Retry: 30
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 9914005
Relay_Log_File: mysqld-relay-bin.000008
Relay_Log_Pos: 9914142
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: your_db1,your_db2
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 9914005
Relay_Log_Space: 9914142
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
需要特别注意的是这两行:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
必须都是Yes,否则同步不成功。
分别在A和B上做操作,看同步是否生效;
复制不成功的解决方法
一开始我设置从A复制到B时出现了错误
Slave_IO_Running: No
Slave_SQL_Running: Yes
mysqld.log里面:
121217 17:43:39 [ERROR] Error reading packet from server: error reading log entry ( server_errno=1236)
121217 17:43:39 [ERROR] Got fatal error 1236: 'error reading log entry' from master when reading data from binary log
这时我用
CHANGE MASTER命令重新指定master:
停止A的MySQL操作,查看master状态:
A:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 98 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记住上面的File和Position数值
在B上用CHANGE MASTER命令重新指定master:
mysql> slave stop;
mysql> change master to master_host='192.168.0.1',master_user='backup',master_password='123456', master_log_file='mysql-bin.000003',master_log_pos=98;
mysql> slave start;
此时检查B上的slave status, 发现已经OK:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
分享到:
相关推荐
MySQL 双机热备同步是指两个 MySQL 服务器之间的实时数据同步,通过配置主从关系和双向同步机制,实现数据的实时备份和热备。下面将详细介绍 MySQL 双机热备同步的配置步骤和原理。 主从关系同步 在 MySQL 中,...
### MySQL双向主主同步终极秘籍 在当前的IT环境中,数据的一致性和可靠性变得尤为重要。MySQL作为一种广泛使用的开源关系型数据库系统,在企业级应用中扮演着重要角色。本文将详细介绍如何实现MySQL的双向主主同步...
**MySQL双机热备**是一种通过配置使得两台MySQL服务器之间能够实时同步数据的技术方案,从而实现高可用性和故障转移的能力。该技术可以确保在一台服务器发生故障时,另一台服务器能够立即接管服务,以减少数据丢失和...
MySQL 数据同步【双主热备】是指在一个MySQL集群中,两台服务器互相作为主服务器,彼此之间进行数据的实时同步,以确保数据的一致性和高可用性。这种配置常用于构建高可用性的数据库系统,避免单点故障,提高业务...
双向同步,即主从服务器之间的双向复制,是一种更复杂的情况。在这种设置中,主服务器和从服务器互相作为对方的从服务器,每个服务器都接收并应用来自另一个服务器的更改。这需要更精细的配置和管理,以防止循环复制...
MySQL 数据库的同步问题主要涉及的是双机热备(High Availability)方案,即在一个主数据库服务器(Master)和一个或多个从属服务器(Slave)之间实现数据的实时复制。这通常是为了确保数据的安全性、提高服务的可用...
在双主从结构中,两台服务器都可以作为主服务器接收写操作,互相复制数据,从而实现双向同步。 在配置MySQL热备份时,首先需要在两台服务器上安装MySQL,并开启服务。接着,创建用于复制的账户,例如在MySQL命令行...
### MySQL热备详解 #### 一、MySQL主备与热备概述 在现代数据库系统中,为了确保数据的安全性及系统的高可用性,通常会采用主备架构来部署MySQL服务。这种架构不仅可以实现数据的实时备份,还可以在主服务器发生...
- 在两个MySQL节点上分别配置`my.cnf`文件,实现数据的双向同步。 - 设置`server-id`来区分不同的服务器节点。 - 开启二进制日志(`log-bin`)并指定日志文件名(`mysql-bin`)。 - 忽略写入binlog的日志库(`binlog-...
对于主主同步,过程类似,但需要在备服务器上重复上述步骤,将主服务器的IP和设置应用到备服务器,确保数据在两台服务器间双向同步。 总结,MySQL双机配置涉及的主要知识点包括: 1. MySQL二进制日志(Binary Log...
MySQL 的 Master-Master Replication 是一种双主复制机制,即两个数据库节点相互作为对方的 Master 和 Slave,实现了数据的双向同步。这种方式可以确保在任何一台服务器发生故障时,另一台服务器能够立即接管其工作...
* 在双机热备份模式下,需要在两个服务器上都设置同步用户帐号和同步数据库,以实现双向的热备。 * 在出现错误时,需要查看 *.err 日志文件,以便诊断错误原因。 通过以上步骤,可以实现 MySQL 双机热备份,确保...
MySQL AB复制允许两个服务器互为主从,实现双向复制。具体步骤包括: - 在每个服务器上配置***f文件,设置server-id、auto-increment设置,并开启二进制日志。 - 在每个服务器上创建复制账户,并授予REPLICATION ...
同步方案是主从架构的关键,MySQL提供了master-slave双向热备功能。主服务器的所有变更都会实时地复制到从服务器,以保证数据的一致性。配置文件/etc/my.cnf用于设置同步参数,确保实时同步。 备份方案是为了防止...
MySQL 数据库热备份是...总的来说,MySQL数据库热备份是通过复制技术实现的,包括配置参数、权限设置、主从关系建立以及错误处理等多个环节,它为企业的数据库系统提供了强大的容灾能力,提高了服务的稳定性和可靠性。
2. 典型产品如 MySQL、Oracle、SQL Server,适用于需要事务处理、复杂查询的场景。 3. 非关系型数据库(NoSQL)强调灵活性、可扩展性,如 MongoDB、Redis,适用于大数据、高并发场景。 4. NoSQL 产品如 Cassandra、...
MySQL 主从复制是一种常见的数据库高可用性和数据冗余策略,它允许数据在多个服务器之间进行同步,以确保数据的一致性、提供读写分离、负载均衡以及灾难恢复能力。以下是对MySQL主从复制原理、作用、实现方式以及...
3. **实时通信技术**:网络游戏需要实时同步玩家的动作和状态,这就需要高效的实时通信技术,如TCP/IP协议、UDP协议以及WebSocket等。TCP保证数据传输的可靠性,UDP则更注重速度,WebSocket为双向通信提供了低延迟的...