mysql主从同步设置

1、两台机器安装同版本的mysql,或是slave的版本低于master的

2、主服务器设置
 mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'slavedb'@'172.16.8.2' IDENTIFIED BY 'password';
   #给与从服务器用户slavedb的同步权限
 mysql>Flush privileges;
   #刷新权限,使设置生效
   
 配置node1 的/etc/my.cnf配置文件
  修改配置文件中如下内容,如果没有添加上去:
  log-bin=mysql-bin
   启动二进制日志系统
  binlog-do-db=test
   二进制需要同步的数据库名,如需要同步多个,重复添加该行
  server-id = 1
   本机数据库ID 标示为主,该部分还应有一个server-id=Master_id选项,其中master_id必须为1到232–1之间的一个正整数值
  log-bin=/var/log/mysql/slavelog
   #设定生成log文件名,这里的路径没有mysql目录要手动创建并给于它mysql用户的权限。
  binlog-ignore-db=mysql
   # 避免同步mysql用户配置,以免不必要的麻烦

 停止数据库,并将本地需要同步数据库打包拷贝到从数据库上
  service mysqld stop                       
   #停止mysql的服务
  tar -cvf /root/db.tar /usr/local/mysql/test       
   #备份主服务器需要同步的数据库
  scp /root/db.tar root@172.16.8.2:/usr/local/mysql             
   #通过远程拷贝到从服务器上,拷贝的时候需要输入从服务器的root密码。
  Service mysqld start                                            #启动主服务器mysql服务
3、同步slave 从服务器配置
 配置slave服务器/etc/my.cnf文件
  将以下配置启用:
  server-id = 2
   从服务器ID号,不要和主ID相同 ,
   如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。
  master-host = 172.16.8.1
   指定主服务器IP地址
  master-user = slavedb
   指定在主服务器上可以进行同步的用户名
  master-password = password
   密码
  master-port = 3306
   同步所用的端口
  master-connect-retry=60
   断点重新连接时间
  replicate-ignore-db=mysql
   屏蔽对mysql库的同步,以免有麻烦
  replicate-do-db=test
   同步数据库名称,如需要同步多个,重复添加该行
 装载主服务器数据库:
  cd /var/lib/mysql               
   #进入数据库库文件主目录
  tar -xvf db.tar                
   #解压缩
  service mysqld start       

4、配置检查
 在从服务器上执行
  mysql>show slave status\G;
   当下面的参数
   Slave_IO_Running: Yes
   Slave_SQL_Running: Yes
   如果都是yes,那代表已经在同步
 同步之前如果怀疑主从数据不同步可以采取:服务器上命行同步方法
  主服务器上执行
   mysql> show master status;          #显示(不同主机结果不同)
   | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+-------------------+------------------+
   | slavelog.000018 | 3467 |db1 | mysql |
   +------------------+----------+-------------------+------------------+
   记录File 和Position的值
   
  在从服务器执行MySQL命令下:
   mysql> slave stop;             #先停止slave服务
   mysql> CHANGE MASTER TO master_host=’172.16.8.1’,master_user=’slavedb’, master_password=’password’,MASTER_LOG_FILE='slavelog.000018',MASTER_LOG_POS=3467 ;
    # MASTER_LOG_FILE='slavelog.000018',  主服务器File的值
    # MASTER_LOG_POS=3467 ;    主服务器Position的值
   mysql>slave start;                      #启动从服务器同步服务

 

参考文章1:http://hi.baidu.com/wudenggao/blog/item/8bf32be1810704ca2d2e2162.html

参考文章2:http://colderboy.blog.51cto.com/485582/107836