0.准备环境,需要两台服务器,一主一从。
在我的示例中,主服务器的ip是192.168.68.3;从服务器可以参照VMWare克隆服务器,我搭建了一个192.168.68.5作为从服务器。
因为我是在上一节开启慢查询后克隆过来的服务器,所以从服务器理论上也安装了mysql的服务(到时有细节会说,有个uuid是相同的)。而自己在克隆时,原来不需要安装mysql(重新装一下linux之mysql的安装和配置),安装的的话更方便,一会改下uuid的细节就可以了。
1.主服务器配置(在192.168.68.3的机器上)
1)修改my.conf文件
在[mysqld]段添加
#启用二进制日志
log-bin=mysql-bin
#服务器唯一ID,一般取IP最后一段
server-id=3
我起的名叫mysql-bin,到时会生成mysql-bin.000001这样的文件
server-id一般和机器ip尾数一样就行,我的是3
2)重启mysql服务
service mysqld restart
3)建立帐户并授权slave
mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';
#一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
我这边为了演示,用了root账号。让从机通过主机的用户名/密码 root/root登录进入
然后刷新权限
mysql> FLUSH PRIVILEGES;
4)查询master的状态
mysql> show master status;
position=602这个偏移量记住,后面会用到
之前的设置中,发现在/var/lib/mysql文件夹下,已经多出了mysql-bin开头的bin log日志文件
2.从服务器配置(在192.168.68.5的机器上)
1)修改my.conf文件
[mysqld]
server-id=5
2)删除UUID文件
第0步骤的时候,说uuid的细节。如果是克隆过来的机器,在192.168.68.5(从服务器)上的/var/lib/mysql/auto.cnf
两个auto.cnf文件的uuid是一样的,这样做主从时会有错误
解决办法就是将从服务器中的auto.cnf文件给删掉,然后重启服务
看清是从服务器的
然后他会生成一个新的auto.cnf文件
3)配置从服务器
mysql>change master to master_host='192.168.68.3',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=602;
注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“602”无单引号(此处的602就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。
4)启动从服务器复制功能
mysql>start slave;
5)检查从服务器复制功能状态
mysql> show slave status;
注:Slave_IO_Running及Slave_SQL_Running进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
我们已经看到,这两个参数状态已经是yes了
3.验证
从主服务器写了一条数据,发现从从服务器中能够查询出有数据更新了。
完毕!