MYSQL一主二从复制配置备忘

mysql

192.168.31.7

192.168.31.8

这两台是从服务器


192.168.31.107

这一台是主服务器

修改主服务器中的my.cnf


首先一定要开启bin-log日志

设置 binlog_format=mixed

server-id 要设置好,有唯一性(重要)


从服务器照上面一样设置


在主服务器中创建从服务器的授权账号登陆

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO nosay@'192.168.31.7' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO max@'192.168.31.8' IDENTIFIED BY '123456';

主服务器为从服务器开启防火墙端口

sudo iptables -I INPUT -s 192.168.31.7 -p tcp --dport 3306 -j ACCEPT

sudo iptables -I INPUT -s 192.168.31.8 -p tcp --dport 3306 -j ACCEPT



登录主服务器的mysql,查询master的状态


mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+



   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化


配置从服务器Slave

192.168.31.7:

change master to master_host="192.168.31.107",master_user='nosay',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=308;


192.168.31.8:

master_host="192.168.31.107",master_user='max',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=308;




启动从服务器复制功能   start slave;


检查从服务器复制功能状态

mysql> show slave status\G




测试的时候发现当一台从服务器同步的时候,另一台会报错:

Got fatal error 1236 from master when reading data from binary log: 'A slave with the same server_uuid as this slave has connected to the master; the first event 'mysql-bin.000046' at 578, the last event read from './mysql-bin.000050' at 515, the last byte read from './mysql-bin.000050' at 515.'


错的大概意思是说,Slave的server_uuid 有冲突,导致一主多从的主从复制有问题,随后登录主库检查,发现只有一个slave server_uuid 


登录分别登录两个从库检查auto.cnf,发现两个slave节点的server_uuid一致,到此问题大概已经确认了,由于第二个slave节点是虚拟机复制过来的,因此mysql目录下的auto.cnf也一起复制过来,导致两个slave节点auto.cnf内容相同 


  1. 在对auto.cnf进行备份后,尝试对其进行删除,然后重新启动mysql,  

  2.  MYSQL>start slave; 


解决




今天启动的时候, 发现有一个从服务器无法启动,报这个错误


ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository


原因:检查my.cnf,原来没指定relay_log,MySQL默认产生的relay_log名被该server上的另一个mysql slave占用了。



解决方法:
1.在my.cnf中添加
relay_log=/db/mysql56/logs/relay_98_3326


然后重启mysql 并start slave即可



slave_skip_errors选项有四个可用值,分别为:off,all,ErorCode,ddl_exist_errors
     默认情况下该参数值是off,我们可以列出具体的error code,也可以选择all,mysql5.6及MySQL Cluster NDB 7.3以及后续版本增加了参数ddl_exist_errors,该参数包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
    一些error code代表的错误如下:
    1007:数据库已存在,创建数据库失败
    1008:数据库不存在,删除数据库失败
    1050:数据表已存在,创建数据表失败
    1051:数据表不存在,删除数据表失败
    1054:字段不存在,或程序文件跟数据库有冲突
    1060:字段重复,导致无法插入
    1061:重复键名
    1068:定义了多个主键
    1094:位置线程ID
    1146:数据表缺失,请恢复数据库
    1053:复制过程中主服务器宕机
    1062:主键冲突 Duplicate entry '%s' for key %d



2017-03-03 19:41:03

数据库
数据库

这是介绍的地方

数据库的标签

本文相关标签

推荐应用

友情链接


皖ICP备14007051号-2 关于穆子龙