问题1

  • mysql gtid复制方式导出数据报错

    Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don’t want to restore GTIDs, pass –set-gtid-purged=OFF. To make a complete dump, pass –all-databases –triggers –routines –events

解释:当前数据库实例中开启了 GTID 功能, 在开启有 GTID 功能的数据库实例中, 导出其中任何一个库, 如果没有显示地指定–set-gtid-purged参数, 都会提示这一行信息. 意思是默认情况下, 导出的库中含有 GTID 信息, 如果不想导出包含有 GTID 信息的数据库, 需要显示地添加–set-gtid-purged=OFF参数.

解决

# 数据导出时
mysqldump -uroot -p --set-gtid-purged=OFF --all-databases > test.sql
正常导入即可

问题二

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

致命错误:由于master和slave具有相同的mysql服务器uuid,导致I/O线程不进行;这些uuid必须不同才能使复制工作。

解决

修改uuid并重启服务
[root@localhost ~]# vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=4f37a731-9b79-11e8-8013-000c29f0700f

问题三

  • 主从同步主键冲突问题

    Last_SQL_Error: Error ‘Duplicate entry ‘1001-164761-0’ for key ‘PRIMARY’’ on query. Default database: ‘bug’. Query: ‘insert into misdata (uid,mid,pid,state,mtime) values (164761,1001,0,-1,1262623560)’

解决

#第一种方式,跳过错误
1.跳过指定数量的事务
mysql>stop slave;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务
mysql>start slave
  
2.修改mysql的配置文件,通过slave_skip_errors参数来跳过指定类型的错误或跳过所有错误
[root@mysql-slave ~]# vim /etc/my.cnf
[mysqld]
slave-skip-errors=1062,1053,1146 #跳过1062,1053,1146类型的错误
# slave-skip-errors=all #跳过所有错误

#第二种方式,针对互为主从情况
[root@mysql-slave ~]# vim /etc/my.cnf
# auto_increment_increment=2 # 自增减步长
# auto_increment_offset=2 # 自增减开始

主从同步指定库

解释: 从一个库的层面上来设置同步某个库或表,下面的方式,选其一。

  • 主库

    binlog-do-db      二进制日志记录的数据库(多数据库用逗号,隔开)
    例: binlog-do-db=test1,test2
    表示test1、test2 同步,其他忽略,如果不填写表示同步全部
    binlog-ignore-db 二进制日志中忽略数据库 (多数据库用逗号,隔开)
  • 从库

    replicate-do-db    设定需要复制的数据库(多数据库使用逗号,隔开)
    replicate-ignore-db 设定需要忽略的复制数据库 (多数据库使用逗号,隔开)
    replicate-do-table 设定需要复制的表
    replicate-ignore-table 设定需要忽略的复制表
    replicate-wild-do-table 同replication-do-table功能一样,支持通配符
    replicate-wild-ignore-table 同replication-ignore-table功能一样,支持通配符