mysql主从数据库不同步的2种解决方法

mysql主从数据库不同步的2种解决方法,第1张

今天发现Mysql的主从数据库没有同步

先上Master库:

mysql>show

processlist

查看下进程是否Sleep太多。发现很正常。

show

master

status

也正常。

mysql>

show

master

status

+-------------------+----------+--------------+-------------------------------+

|

File

|

Position

|

Binlog_Do_DB

|

Binlog_Ignore_DB

|

+-------------------+----------+--------------+-------------------------------+

|

mysqld-bin.000001

|

3260

|

|

mysql,test,information_schema

|

+-------------------+----------+--------------+-------------------------------+

1

row

in

set

(0.00

sec)

再到Slave上查看

mysql>

show

slave

status\G

Slave_IO_Running:

Yes

Slave_SQL_Running:

No

可见是Slave不同步

下面介绍两种解决方法:

方法一:忽略错误后,继续同步

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

解决:

stop

slave

#表示跳过一步错误,后面的数字可变

set

global

sql_slave_skip_counter

=1

start

slave

之后再用mysql>

show

slave

status\G

查看:

Slave_IO_Running:

Yes

Slave_SQL_Running:

Yes

ok,现在主从同步状态正常了。。。

方式二:重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

解决步骤如下:

1.先进入主库,进行锁表,防止数据写入

使用命令:

mysql>

flush

tables

with

read

lock

注意:该处是锁定为只读状态,语句不区分大小写

2.进行数据备份

#把数据备份到mysql.bak.sql文件

[root@server01

mysql]#mysqldump

-uroot

-p

-hlocalhost

>

mysql.bak.sql

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失

3.查看master

状态

mysql>

show

master

status

+-------------------+----------+--------------+-------------------------------+

|

File

|

Position

|

Binlog_Do_DB

|

Binlog_Ignore_DB

|

+-------------------+----------+--------------+-------------------------------+

|

mysqld-bin.000001

|

3260

|

|

mysql,test,information_schema

|

+-------------------+----------+--------------+-------------------------------+

1

row

in

set

(0.00

sec)

4.把mysql备份文件传到从库机器,进行数据恢复

#使用scp命令

[root@server01

mysql]#

scp

mysql.bak.sql

[email protected]:/tmp/

5.停止从库的状态

mysql>

stop

slave

6.然后到从库执行mysql命令,导入数据备份

mysql>

source

/tmp/mysql.bak.sql

7.设置从库同步,注意该处的同步点,就是主库show

master

status信息里的|

File|

Position两项

change

master

to

master_host

=

'192.168.128.100',

master_user

=

'rsync',

master_port=3306,

master_password='',

master_log_file

=

'mysqld-bin.000001',

master_log_pos=3260

8.重新开启从同步

mysql>

stop

slave

9.查看同步状态

mysql>

show

slave

status\G

查看:

Slave_IO_Running:

Yes

Slave_SQL_Running:

Yes

好了,同步完成啦。

Mysql主从库不同步1236错误: could not find first log file name in binary log index file 错误是主从的一个日志问题,我们只要简单的配置一下即可解决。

最近造成Mysql主从库不同步问题,主要是因为电脑断了一下电,

从库日志中的错误:

解决办法:

(1) 首先停止从库同步:

(2) 主库中关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1.

(3) 查看主库状态,主要查看日志文件和位置:

(4) 回到从库中,执行命令,使日志文件和位置对应主库:

(5) 最后,启动从库:

状态如下,基本上是正常了,可以主库修改,测试一下从库是否同步。

1. 在有主键或者唯一键的情况下,Slave 重放 Binlog 并不会去比较检索到的记录的每一列是否和BI相同,因此如果 Slave 和 Master 存在数据不一致,会直接覆盖 Slave 的数据而不会报错。

2. 在没有主键或者唯一键的情况下,Hash Scan / Hash Scan Over Index 的执行效率 在理论上分析高于 Table Scan 和Index Scan 。

3. 在没有主键或者唯一键的情况下,Slave 选择的二级索引是第一个所有的列都在 BI 中存在的索引,不一定是 Master 执行计划所选择的索引。


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

原文地址: https://outofmemory.cn/sjk/6725273.html

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

发表评论

登录后才能评论

评论列表(0条)

保存