奇宝库 > mysql数据库主从复制(mysql主从数据库搭建)

mysql数据库主从复制(mysql主从数据库搭建)

今天发现mysql的主从数据库不同步。

首先转到主资料库:

mysqlshow processlist检查下一个进程是否睡眠过多。发现很正常。

显示主机状态;也正常。

mysql显示主状态;

- - - -

|文件|位置| Binlog _ Do _ DB | Binlog _ Ignore _ DB |

- - - -

| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |

- - - -

集合中的1行(0.00秒)

在从机上再检查一遍。

mysql显示从属状态\G

Slave_IO_Running:是

Slave_SQL_Running:否

可见,Slave是不同步的。

这里有两种解决方案:

方法1:忽略错误,继续同步。

这种方法适用于主数据库和从数据库数据相似,或者数据要求不完全统一,数据要求不严格的情况。

解决:

停止奴隶;

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

设置全局SQL _ slave _ skip _ counter=1;

启动从机;

然后使用mysql show slave status\G查看:

Slave_IO_Running:是

Slave_SQL_Running:是

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

方法二:重新主从,完全同步。

这种方法适用于主、从数据库数据差异较大,或者要求数据完全统一的情况。

求解步骤如下:

1.首先在主库中,锁定手表以防止数据被写入。

使用命令:

带读锁的mysql刷新表;

注意:该位置以只读方式锁定,并且该语句不区分大小写。

2.做好数据备份。

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

[root @ server 01 MySQL]# MySQL dump-u root-p-hlocalhost MySQL . bak . SQL

这里注意:数据库备份必须定期进行。您可以使用shell脚本或python脚本,这两种脚本都很方便,可以确保数据万无一失。

3.检查主机的状态

mysql显示主状态;

- - - -

|文件|位置| Binlog _ Do _ DB | Binlog _ Ignore _ DB |

- - - -

| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |

- - - -

集合中的1行(0.00秒)

4.将mysql备份文件传输到从机进行数据恢复

#使用scp命令

[root @ server 01 MySQL]# scp MySQL . bak . SQL root @ 192 . 168 . 128 . 101:/tmp/

5.停止从属状态。

mysql stop slave

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

mysql source /tmp/mysql.bak.sql

7.设置从库同步,注意这里的同步点,是主库的显示主状态信息中的| File| Position。

将master改为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启动从机;

9.检查同步状态

MySQL从属状态\ g视图:

Slave_IO_Running:是

Slave_SQL_Running:是

好了,同步完成了。

本文来自网络,不代表本站立场,转载请注明出处: