我的环境:
OS:CentOS-6.5-64bit
DBMS:MySQL 5.5.28
my.cnf位置是 /home/USERNAME/.my.cnf
(我的mysql安装方法是http://blog.itpub.net/29773961/viewspace-1364808/
其中有一个步骤为cp support-files/my-medium.cnf ~/.my.cnf
故配置文件在此,为避免使用root用户,故不放置在/etc/my.cnf)
用的是两个服务器(建立在ESXi上的逻辑主机)
master ip:192.168.1.214
slave ip:192.168.1.215
步骤很简单,过程也很简单,所以搭建这个环境也是很简单的。
步骤可以分解为:
1.配置一个服务器作为master
2.配置一个服务器作为slave
3.将slave连接到master
首先为了避免防火墙和SELinux可能造成的不便,首先我将其关闭或置为不可用状态。
【1.配置一个服务器作为master】
在我的第一个master服务器上作出如下配置。
修改~/.my.cnf
在[mysqld]下添加
# master
log-bin = master-bin
log-bin-index = master-bin.index
server-id = 1
其中log-bin选项给出了binlog产生的所有文件的基本名,如果你创建了一个以log-bin为扩展名的文件,该扩展名将被忽略,而只使用文件的基本名。
log-bin-index选项给出了二进制索引文件的文件名,这个索引文件保存了所有binlog文件的列表。
实际上,不需要为log-bin选项提供值,其默认值为hostname-bin,hostname的值来自于pid-file,默认值是主机名。
如果管理员后来修改了主机名,binlog文件名也会随之改变,但是索引文件仍可以获取正确的值,最好为服务器创建一个与机器无关且唯一的服务器名,因为一系列的binlog文件中途改名可能会很混乱。
如果没有为log-bin-index赋予任何值,其默认值与binlog文件的基本名相同(如果没有为log-bin提供值,则默认为hostname-bin)。
同样,如果你不给log-bin-index赋值,索引文件名会随主机名的改变而改变,所以如果你改变主机名然后重启服务器,将找不到索引文件,从而认为索引文件不存在,导致二进制日志为空。
每一个服务器都有唯一的服务器ID,所以如果一个slave连接了master,而且其server-id的参数值与master相同,则会产生master和slave服务器id相同的错误。
将log-bin和server-id选项添加到配置文件后重启服务器,然后添加一个复制用户,这样便完成了配置。
将my.cnf修改之后,重新启动mysql服务,让其加载新的my.cnf文件。
进入root用户:
-
GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'YOURPASSWORD';
REPLICATION SLAVE权限并没有其他特殊的地方,这个权限可以使用户能够从master上取得二进制日志的转储数据。
虽然完全可以给一个常规用户赋予REPLICATION SLAVE的权限,但是最好还是将复制slave用户与其他用户区别开来,这样的话,如果想禁止某些slave连接,只要删除该用户即可。
【2.配置一个服务器作为slave】
在我的第二个slave服务器上作出如下配置。
修改~/.my.cnf
在[mysqld]下添加
# slave
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
server-id = 2
与master配置文件中的log-bin和log-bin-index一样,relay-log和relay-log-index选项默认取值决定于hostname。
relay-log默认取值为hostname-relay-bin。
relay-log-index默认取值为hostname-relay-bin.index。
修改my.cnf文件之后,重启mysql服务,让配置生效即可。
【3.将slave连接到master】
做连接,你只需要知道以下几个部分即可:
主机名
端口号
master上拥有REPLICATION SLAVE权限的用户账号
该用户的密码
在slave机上进行如下操作
首先将slave指向master,当然master_host需要填你目标master机的ip地址。
-
CHANGE MASTER TO
-
MASTER_HOST = '192.168.1.214',
-
MASTER_PORT = 3306,
-
MASTER_USER = 'repl_user',
-
MASTER_PASSWORD = 'YOURPASSWORD';
然后再开启slave
至此,master和slave之间的第一个复制已经完成。
你可以在master机上开启一个terminal,然后对其进行一些数据操作,比如创建表,插入数据,再到对应的slave机上查看这些变化。
【一些问题】:
如果出现一些warning,可以通过show warnings这个指令来检查警告或者错误。
当然也可以使用show slave status\G来查看一些关于slave的信息。
我在配置中出现的问题:
查看status发现:
Slave_IO_Running: Yes
Slave_SQL_Running: No
解决办法:
再
-
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
可能出现的另外一个问题:
slave的server-id与master冲突。
可以通过
-
SET GLOBAL SERVER_ID = 2;
来解决此问题。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29773961/viewspace-1384091/
,如需转载,请注明出处,否则将追究法律责任。