app教程网 学习教程 mysql主从复制原理(mysql查看主从状态)

mysql主从复制原理(mysql查看主从状态)

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

首先转到主资料库:

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

Display the host status; Normal, too.

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)

在从机上再检查一遍

mysql show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: No

可以看出,从机不同步

这里有两种解决方案:

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

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

求解:

stop slave;

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

set global sql_slave_skip_counter=1;

start slave;

Then use mysql to display the subordinate status \G View:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

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

方法二:重新掌握,完全同步。

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

求解步骤如下:

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

使用命令:

mysql flush tables with read lock;

注意:锁是只读的,语句不区分大小写。

2.进行数据备份

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

[root@server01 mysql]#mysqldump -uroot -p -hlocalhost mysql.bak.sql

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

3.检查主机状态

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 root@192.168.128.101:/tmp/

5.停止奴隶状态

mysql stop slave;

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

mysql source /tmp/mysql.bak.sql

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

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 start slave;

9.检查同步状态

Mysql shows subordinate status \G View:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

好了,同步完成。

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