Mysql 5.6主从同步(和5.1是有不同的):


和5.1不同主要有两处(都在从部分):

1、指定master部分不能写到/etc/my.cnf里了,得在mysql命令里敲

2、启动/停止slave命令为:start/stop/reset slave  (5.1是slave在前)



主(和5.1一样):


# mkdir /var/log/mysql/logs

# chown -R mysql:mysql /var/log/mysql/logs

# mysql -u root -p123456


> grant replication slave on *.* to 'ming’@’192.168.1.3’ identified by '123456';

>flush privileges;

 

      

# vi /etc/my.cnf  (在[mysqld]下)


#bind-address = 127.0.0.1(ubuntu上一定要注释掉该句,否则从mysql会无法连接主mysql的,redhat上没有该项)


  server-id = 1  (数据库服务器都有唯一的server-id,通常主服务器制定为1)

  log-bin=/var/log/mysql/logs/log 

  relay_log=/var/log/mysql/logs/relaylog   

  read-only = 0 (主mysql读写都可以)

:wq

# service mysqld restart

# mysql -u root -p123456

> show master status;

> show master status \G;



从:

注:从mysql上要先建和主mysql上一样的数据库名,并将主mysql上的数据库导入到从mysql中,导入的数据库备份时间最好是主mysql搭建主模式时的时间,否则同步时会报错的(解决办法是删除从mysql更新的部分,可根据报错提示,也可将主mysql的log删掉,重启mysql重新生成log)


# mkdir /var/log/mysql/logs

# chown -R mysql:mysql /var/log/mysql/logs

# vi /etc/my.cnf (在[mysqld]下)

   

   server-id = 2    (原为server-id=1,当然设成非1的其它数字也可以)

   log-bin=/var/log/mysql/logs/log (指定mysql二进制日志路径)

   relay_log=/var/log/mysql/logs/relaylog   

   read-only=1   (只允许读操作)

# service mysqld restart

 

# mysql -u root -p123456


>  change master to master_host='192.168.1.2',master_user='ming',master_password='123456'; 


> slave start;

> show slave  status \G;

如果以下两项都为yes即是从机配置成功。 

     Slave_IO_Running: Yes 

     Slave_SQL_Running: Yes 


如果主从同时操作一般不会下面的问题,但如果主mysql运行了一段时间(已配好主模式),这时从同步时需从主mysql搭建主模式时的数据库备份导进从mysql,如果从mysql数据库导的较新就会出现下面报错


从mysql上如果报错:Error 'Duplicate entry '368' for key 'PRIMARY'' on query.


解决办法:

通过图像化管理删数据库报错的内容吧(即更新的部分),命令行删除太累


也可将主mysql的log删掉,重启mysql重新生成log