mysql master slave 笔记

//dump出整个数据库包含函数定义  可用于master slave

mysqldump --master-data=2 -R test > dumpfile_with-R

 

mysql master  192.168.1.101

mysql slave  192.168.1.102

 

 

首先保证互相能访问登录

在mysql>里输入

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

% 表示所有IP地址 或者你可以指定一个

grant replication slave on *.* to "loki"@"192.168.2.24" identified by "506506"; 只给复制权限

 

记得 mysql>  flush privileges; 

但我这样做了还是访问不了

后来知道是mysql.user表里有其他账号干扰

use mysql;

select user,host from user;

看下是否有user=''的用户 存在,有就删掉,我就被这个折磨了半天

 

然后就应该可以互访问了。

 

然后 在slave上

 

mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.101', MASTER_PASSWORD='1111',  MASTER_LOG_FILE='mysql-bin.001', MASTER_LOG_POS=001;

mysql>start slave;

 

接着要检查一下是否成功

mysql>show slave status\G;

这是有可能报错:

server id重复   这个要去改my.cnf  里面有一行是serverid  确保主从的ID不一样

 

这里要注意:

不过稍后蚊子 使用/etc/init.d/mysqld restart重启了mysql服务,然后查看slave状态,发现又出现了上面的错误,然后查看server_id发现这个数值又恢复到了1。

之后蚊子 又重新查看了一下/etc/my.cnf的内容,确认应该不是这个文 件的问题,于是去google查了一下,看到mysql在启动的时候会查找/etc/my.cnf、DATADIR/my.cnf,USER_HOME /my.cnf。

 

然后再次mysql>show slave status\G;

这次告诉我有重复的内容duplicate entry

这是你可以在slave 的my.cnf 中

 

  1. slave-skip-errors=all # 於 [mysqld] 下面加入此行
  2. 再 restart mysql 即可

这时会忽略所有错误

 

mysql> show variables like "%slave%";  看下是否改动成功

 

若只要排除 Duplicate entry (Last_Errno: 1062), 可以單獨指定 Error No, 多個寫法如下:

slave-skip-errors=1062,1053

 

查看主从服务器的状态:

MySQL> SHOW PROCESSLIST\G

你可能感兴趣的:(mysql,Google)