双向镜像需要吗

双向镜像需要吗,第1张

是需要的。

在MySQL数据库镜像的贴子中,主数据库A 的数据镜像到从数据库B,是单向的,Zen Cart网店的数据读写都必须在数据库A进行,结果会自动镜像到数据库B中。但是对数据库B的直接 *** 作,不会影响数据库A。

对于双向数据库镜像,就是数据库A的数据变化要镜像到数据库B中,同时数据库B里的修改也要同时复制到数据库A里

Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程.

下面写一下,这两个要是有no了,怎么恢复.

如果是slave_io_running no了,那么就我个人看有三种情况,一个是网络有问题,连接不上,像有一次我用虚拟机搭建replication,使用了nat的网络结构,就是死都连不上,第二个是有可能my.cnf有问题,配置文件怎么写就不说了,网上太多了,最后一个是授权的问题,replication slave和file权限是必须的.如果不怕死就all咯.

一旦io为no了先看err日志,看看爆什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数.

如果是slave_sql_running no了,那么也有两种可能,一种是slave机器上这个表中出现了其他的写 *** 作,就是程序写了,这个是会有问题的,今天我想重现,但是有时候会有问题,有时候就没有问题,现在还不是太明了,后面再更新,还有一种占绝大多数可能的是slave进程重启,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样.

这个时候想恢复的话,只要停掉slave,set GLOBAL SQL_SLAVE_SKIP_COUNTER=1再开一下slave就可以了,这个全局变量赋值为N的意思是:

This statement skips the next N events from the master. This is useful for recovering from replication stops caused by a statement.

This statement is valid only when the slave thread is not running. Otherwise, it produces an error.

呵呵,讲的比我清楚.

MYSQL镜像服务器因错误停止的恢复

下午主服务器,由于一些原因,导致死机,重启后,发现从服务器的数据没有跟上.

配好MYSQL主从也才前几天的事,没多少经验,第一次碰上这问题,有点焦急.不过,自己试了下,还算解决了:)

从服务器上

Master_Log_File: mysqlhxmaster.000007

Read_Master_Log_Pos: 84285377

看一下主服务器:mysqlhxmaster.000007 | 84450528 |

已经过后很多了,确实没跟上.

show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: No

有问题了,Slave_SQL_Running应该是Yes才对.

再往下看,有错误的提示:

Last_Errno: 1053

Last_Error: Query partially completed on the master (error on master: 1053) and was aborted. There is a chance that your master is inconsistent at this point. If you are sure that your master is ok, run this query manually on the slave and then restart the slave with SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1START SLAVE. Query: 'INSERT INTO hx_stat_record .(一句SQL语句)'

这里有说明要怎么 *** 作了:)

先stop slave,然后执行了一下提示的语句,再SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1START SLAVE

show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

OK了,从服务器也在几分钟内把堆积的log处理完了,两边又同步了:)

从MYSQL服务器Slave_IO_Running: No的解决2

早晨机房意外断电,导致了发现mysql从服务器同步异常.使用以前碰到的Slave_SQL_Running为No的解决办法无效,仍然无法同步.

查看一下状态show slave status

Master_Log_File: mysqlmaster.000079

Read_Master_Log_Pos: 183913228

Relay_Log_File: hx-relay-bin.002934

Relay_Log_Pos: 183913371

Relay_Master_Log_File: mysqlmaster.000079

Slave_IO_Running: No

Slave_SQL_Running: Yes

主服务器show master status\G

File: mysqlmaster.000080

Position: 13818288

Binlog_Do_DB:

Binlog_Ignore_DB: mysql,test

mysql错误日志:

100512 9:13:17 [Note] Slave SQL thread initialized, starting replication in log 'mysqlmaster.000079' at position 183913228, relay log './hx-relay-bin.002934' position: 183913371

100512 9:13:17 [Note] Slave I/O thread: connected to master 'replicuser@192.168.1.21:3306', replication started in log 'mysqlmaster.000079' at position 183913228

100512 9:13:17 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236)

100512 9:13:17 [ERROR] Got fatal error 1236: 'Client requested master to start replication from impossible position' from master when reading data from binary log

100512 9:13:17 [Note] Slave I/O thread exiting, read up to log 'mysqlmaster.000079', position 183913228

这次是Slave_IO_Running为No,从日志上来看,服务器读mysqlmaster.000079这个Log的183913228这个位置时发生错误,这个位置不存在,于是无法同步.

查看一下这个Log的最后几行:

/*!40019 SET @@session.max_insert_delayed_threads=0*/

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/

# at 4

#100511 9:35:15 server id 1 end_log_pos 98 Start: binlog v 4, server v 5.0.27-standard-log created 100511 9:35:15

# Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.

尝试从损坏之前的位置开始

SLAVE STOP

CHANGE MASTER TO MASTER_LOG_FILE='mysqlcncnmaster.000079', MASTER_LOG_POS=183913220

SLAVE START

无效!

只好从新的日志开始

SLAVE STOP

CHANGE MASTER TO MASTER_LOG_FILE='mysqlcncnmaster.000080', MASTER_LOG_POS=0

SLAVE START

此时Slave_IO_Running恢复为Yes,同步进行了!观察了会儿,没有任何出错迹象,问题解决.

另外,出现Slave_IO_Running:NO还有一个原因是slave上没有权限读master上的数据. 您可能感兴趣的文章:

mysql主从同步复制错误解决一例

win2003 安装2个mysql实例做主从同步服务配置

Mysql主从同步备份策略分享

windows环境下mysql数据库的主从同步备份步骤(单向同步)

mysql主从同步快速设置方法

MySQL 数据库双向镜像、循环镜像(复制)

Mysql 主从数据库同步(centos篇)

解读mysql主从配置及其原理分析(Master-Slave)

mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限

mysql 有关“InnoDB Error ib_logfile0 of different size”错误

MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解决方法[已测]

Windows mysql 双向同步设置方法 详细篇

win2003 mysql单向同步配置步骤[已测]

数据库镜像?没搞懂,备份吧是。

很多工具都支持数据库相互同步的,例如navicat mysql ,工具菜单里就有数据同步。

还有一种很傻瓜的办法,如果都是xp,而且mysql版本也一样的话,你可以直接把其中一个的Data文件夹(mysql安装目录下找,或者你安装mysql的时候设置的数据文件位置下找)复制,然后替换掉另外一机器的mysql data文件夹就可以了(注意备份数据)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7387779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存