mysql主从同步不一致后的解决方法
2016-05-07 16:21
573 查看
查看master的运行情况:
[root@master] mysql -uroot -p************ [root@master] mysql> show master status \G; *************************** 1. row *************************** File: mysql-bin.000014 //这个信息点要记住,下面用 Position: 170017372 //这个信息点要记住,下面用 Binlog_Do_DB: ipharmacare_admin Binlog_Ignore_DB: mysql,information_schema,performance_schema Executed_Gtid_Set: 1 row in set (0.00 sec)
查看slave的运行情况:
[root@slave] mysql -uroot -p************ [root@slave] mysql> show slave status \G; *************************** 1. row *************************** Slave_IO_State: Master_Host: master.mysql.ipharmacare.org Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000013 Read_Master_Log_Pos: 1003623481 Relay_Log_File: mysql-bin.000022 Relay_Log_Pos: 36726417 Relay_Master_Log_File: mysql-bin.000013 Slave_IO_Running: No Slave_SQL_Running: No Replicate_Do_DB: ipharmacare_admin Replicate_Ignore_DB: mysql,information_schema,performance_schema Replicate_Do_Table: Replicate_Ignore_Table: ipharmacare_admin.tb_hospital,ipharmacare_admin.t_customer,ipharmacare_admin.t_license,ipharmacare_admin.tb_hospital_zone_license,ipharmacare_admin.tb_hospital_license Replicate_Wild_Do_Table: ipharmacare_admin.% Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1003623481 Relay_Log_Space: 1003624042 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: a8ddc479-8862-11e2-b6df-2761731e3dd6 Master_Info_File: /mnt/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)
结论:由上可知数据同步延迟很多,且希望重新做主从,使得主从在数据上保持完全同步.
先进入主库,进行锁表,防止数据写入
[root@master] mysql> flush tables with read lock;进行master数据备份
[root@master] cd /mnt/mysql/bakdata [root@master] mkdir baksql [root@master] cd baksql [root@master] mysqldump ipharmacare_admin -uroot -p****** --opt> ipharmacare_admin.sql 或者: mysqldump -uroot -p***** --default-character-set=utf8 ipharmacare_admin > ipharmacare_admin.sql
打包数据(可选)
[root@master] 7za a ipharmacare_admin_20160505.7z ipharmacare_admin.sql把mysql备份文件传到从库机器,进行数据恢复
[root@slave] cd /usr/downloads/ [root@slave] scp root@master:/mnt/mysql/bakdata/ipharmacare_admin_20160505.7z ./ [root@slave] 7az x ipharmacare_admin_20160505.7z [root@slave] mysql -uroot -p*****; [root@slave] mysql> drop database ipharmacare_admin; [root@slave] mysql> CREATE DATABASE ipharmacare_admin DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; [root@slave] msyql> source baksql.sql;
更新/设置同步进度点
[root@slave] change master to master_host='master.mysql.ipharmacare.org', master_user='slave', master_port=3306, master_password='************', master_log_file='mysql-bin.000014', master_log_pos=170017372;
注意:
1) 做了MySQL主从复制以后,使用mysqldump对数据备份时,一定要注意按照如下方式: [root@master] mysqldump –master-data –single-transaction –user=username –password=password dbname> dumpfilename 这样就可以保留file和position的信息,在新搭建一个slave的时候,还原完数据库,file和position的信息也随之更新,接着再start slave 就可以很迅速的完成增量同步。 2) 忘记主从复制时,对从库用户密码时,可以这样去重置: [root@master] GRANT REPLICATION SLAVE ON *.* TO 'slave'@'slave.mysql.ipharmacare.org' IDENTIFIED BY 'slave';
相关文章推荐
- MYSQL常见错误
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- mysql查询结果添加序列号
- MySQL的存储引擎与表的创建,键的定义,等等
- mysql explain type 和extra 列的含义
- Mysql时间函数
- win10下 64位mysql5.7及workbench的安装
- mysqlbinlog 增量备份和恢复
- MySQL EXPLAIN 语句的 SELECT TYPE有哪些值
- MySQL数据库分区功能的使用教程
- MySQL数据库服务器的架设
- Mac os下安装mysql
- Mysql 排序实现
- MySQL-----sql_mode
- mysql undo日志 redo日志
- mysql在线ddl操作
- MySql 安装出错
- mysql编译安装
- MySQL函数大全及用法示例
- Mysql 基于 Amoeba 的 读写分离