平台:windows/linux(ubuntu14.04)
版本:mysql5.5.XX
注:在mysql主从复制中,分为:主mysql(master),从mysql(slaver);本次例子,将是一个Master和一个slaver(实际工作中,常常会有多个master,多个slaver);
*本次实例,在ubuntu14.04系统上mysql作为master;windows下的mysql作为slaver;
1)master端配置
例子中使用两台虚拟机,IP分别为192.168.233.135(MASTER),192.168.233.131(SLAVE)。
(注:先关闭mysql服务,因为我们需要修改mysql配置文件;
Service mysql top
)
修改master端my.cnfi中[mysqld]选项(ubuntu路径为/etc/mysql/my.cnf),添加如下内容:
Server_id = 1 //作为master的id
Log_bin = /var/log/mysql/mysql-bin.log //Log二进制日志
Bind-address = 192.168.233.135 //绑定的地址
(binlog-do-db:指定同步的数据库
Binlog-ignore-db:指定忽略的数据库,同上者只需存在一个类型即可。
)
保存后退出;
重启mysql:
Sudo service mysql restart;
进入mysql;
Sudo mysql -u root -p
查看master状态:
Show master status\G
将显示的信息中的File和Position值给记住,稍后的slaver端我们需要;(这里为)
远程登录账户添加和授权(这一步的目的是可以在192.168.233.131上登录192.168.233.135的mysql数据库):
语句:
Grant all on . to test@192.168.233.131 identified by “test”;
这里授权的是all,mysql手册说明仅用peplication slave权限就足够。
2)slave端的配置
由于slave端是windows这里的配置文件为my.ini
同样进行编辑修改:
在【mysqld】选项
Server-id = 2
Relay-log = win-relay-bin
(server-id:服务器slave的标志号
Relay-log:缓冲日志,存储从master转过来的bin-log
)
进入mysql:
Mysql -u root -p
Slave stop;
Change master to
master_host = “192.168.233.132”,
Master_user=”test”,
Master_password=”test”,
Master_log_file=”(刚才记录的File值)”,
Master_log_pos=(刚才记录的position值);
然后slave start;
在master端:
同时,在slave端:
Ok,在这里slave端已经同步数据库过来了;
不过在slave端,数据库版本不一致,出现了错误;
(所以,大家要记住,mysql主从复制过程,需要数据库版本都一致)