今天做了一个测试,用两台电脑进行了mysql数据同步测试
A服务器: 192.168.1.2 主服务器master
B服务器: 192.168.1.3 副服务器slave
A服务器设置
1)建立一个可以用来同步的帐号
#mysql –u root –p
mysql>GRANT FILE ON *.* TO backup@192.168.1.3 IDENTIFIED BY ‘1234’;
mysql>\exit
上面是Master开放一个账号backup密码1234给IP:192.168.1.3有档案处理的权限
如果想要在Slave上有权限执行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER" 语句的话,必须授予全局的 FILE 和 SELECT 权限:
mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO backup@192.168.1.3 IDENTIFIED BY '1234';
在A机器上修改/etc/my.cnf
在[mysqld]区段内加入参数
server-id=1
log-bin
binlog-do-db=backup
#以下部分是把A机器配置为Slave
master-host=192.168.1.3
master-user=backup
master-password=1234
master-port=3306
a)server-id=1表示是本机的序号为1,一般来讲就是master的意思,server-id是同步数据库的唯一编号
b)log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提;
c)binlog-do-db=backup 表示需要备份的数据库是backup这个数据库
重启A服务器mysql
B服务器设置
server-id=2
master-host=192.168.1.2
master-user=username
master-password=password
master-port=3306 #主服务器端口
master-connect-retry=60 #同步时间间隔为60秒
replicate-do-db=backup
log-bin
binlog-do-db=backup
解释一下上面的内容
a)server-id=2表示本机器的序号;
b)master-host=192.168.37.188 表示本机做slave时的master为192.168.37.188;
c)master-user=username 这里表示master上开放的一个有权限的用户,使其可以从slave连接到master并进行复制;
d)master-password=password 表示授权用户的密码;
e)master-port=3306 master上MySQL服务Listen3306端口;
f)master-connect-retry=60 同步间隔时间;
g)replicate-do-db=backup 表示同步backup数据库;
h)log-bin 打开logbin选项以能写到slave的 I/O线程;
i)binlog-do-db=backup 表示别的机器可以同步本机的backup数据库.
最后重启两台服务器