今天发现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
好了,同步完成。