准备工作:


在两台服务器上安装同版本mysql数据库;


确保mysql主从服务器之间的数据库端口防火墙互相打开;
确保主从数据库账户一致性(主从切换使用),否则将操作失败;
确保mysql账户对my sql数据库 目录有“可读写”权限非“可写”权限 chown -R mysql:mysql /path, 确保不出意外,最好删除 mysql 之前陈旧的mysql-bin、mysql日志,然后重启mysql;
查看版本:mysql> status \G; 




一、在主库创建用户


mysql>create user backup; //创建新用户

mysql> GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.76.%' IDENTIFIED BY 'mysql'; //repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。




二、修改主数据库的配置文件/etc/my.cnf (其他参数保持,以下为新增)


[mysqld]
     
     server-id=1                     //[必须]默认是1,一般取IP最后一段
     
     log-bin=mysql-bin.log    // [主从必须]启用二进制日志,默认在mysql路径下
     
     sync_binlog=1               //为了保证事务InnoDB复制设置的最大可能的耐受性和一致性,应在主服务器使用
     
     innodb_flush_log_at_trx_commit=1   // 同上



三、修改从数据库的配置文件/etc/my.cnf  


[mysqld]
     
     port=3306
     
     server-id=2 //从库配置编号
     
     bing-address=0.0.0.0 //[可选]意思是允许所有 机器 服务器安全起见可设置为指定的服务器IP地址 如 116.128.1.10等
     
     log-bin=mysql-bin.log // [主从必须]启用二进制日志,默认在mysql路径下
     
      
     
     binlog-do-db =new_test (要记录的数据库,多个可换行多次设置)
     
     replicate-do-db =new_test (要复制的数据库,多个可换行过个设置)
     
      
     
     binlog-ignore-db=mysql //不对mysql库进行日志记录操作 如下意思雷同
     
     binlog-ignore-db=test
     
     replicate-ignore-db=test //不对test进行复制操作 如下意思雷同
     
     replicate-ignore-db=mysql
     
      
     
     binlog-ignore-db=mysql //不对mysql库进行日志记录操作 如下意思雷同
     
     binlog-ignore-db=test
     
     replicate-ignore-db=test //不对test进行复制操作 如下意思雷同
     
     replicate-ignore-db=mysql






四、重启两台服务器的mysql


service mysql restart


五、登录主服务器的mysql,查询master的状态(可在phpmyadmin 中执行次操作)


mysql>show master status; 
  
+------------------+----------+--------------+------------------+ 
  
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
  
+------------------+----------+--------------+------------------+ 
  
| mysql-bin.000001 | 120 | | | 
  
+------------------+----------+--------------+------------------+ 
  
1 row in set (0.00 sec)


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




六、配置从服务器Slave(5.1以后的版本不支持在my.cnf中配置主库信息了,如下用命令配置):


mysql>change  master to master_host='xx.xx.xx.xx', master_port=3306, master_user='backup', master_password='yourpasswd', master_log_file='mysql-bin.000001',master_log_pos=120 //注意不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。(此处可在从服务器phpmyadmin中用sql语句操作)

Mysql>start slave; //启动从服务器复制功能(可在phpmyadmin中执行该SQL语句) 


如果需要修改:



1.Slave:  
   stop slave; 
   
2.Master:  
   flush logs 
   
3.Master:  
   show master status; — take note of the master log file and master log position 
   
4.Slave:  
   CHANGE MASTER TO MASTER_LOG_FILE=’log-bin.00000X′, MASTER_LOG_POS=106; 
   
5.Slave:  
   start slave 
   ;



修改完了一定记得要启动start slave,否则用show的时候看到的是旧的配置






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


mysql> show slave status\G (可在从服务器phpmyadmin中执行“show slave status” SQL语句)

*************************** 1. row ***************************


……………………(省略部分)


Slave_IO_Running: Yes //此状态必须YES


Slave_SQL_Running: Yes //此状态必须YES

……………………(省略部分)


注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。


以上操作过程,主从服务器配置完成。





八、测试是否正常复制,在主库创建文件,从库更新



Refs:



http://www.2cto.com/database/201404/295950.html  主要参考



http://www.linuxidc.com/Linux/2014-06/103752.htm 5.6版本


http://www.jb51.net/article/50053.htm 复制原理详细