主需要用一台电脑,从可以有多台电脑;这里以一台主服务器,一台从服务器为例。
场景:主服务器IP地址:192.168.1.104
从服务器IP地址:192.168.1.114
操作系统Windows XP SP3
mysql版本:5.0.22(两台服务器的版本最好相同)
一、对主服务器的配置(即操作在主服务器上进行)
1. 设置一个同步账号:
命令:grant file on *.* to ‘hfut’@’192.168.1.114’ identified by ‘hzh’
//为从服务器添加用户hfut,密码为hzh。注意这句sql语句分配的是file
//操作权限,还要为其分配insert等权限,按照自己的需要进行;
命令:grant replication slave on *.* to ‘hfut’@192.168.1.114’ identifiedby ‘hzh’
2. 上述两个命令设置了一个可以从从服务器访问主服务器的账号hfut,密码是hzh,权限可以自己继续添加;
3. 创建一个用于同步的数据库和表:
命令:create database huzunhua;
usehuzunhua;
createtable mytest(username varchar(20), password varchar(20));
说明:如果同步的数据库里面已经存在其他的数据,那么需要自己手动将已有的数据复制,然后同步新的数据。
4. 打开my.ini 在[mysqld]输入下面的内容:
log-bin=c:\master.log
binlog-do-db=huzunhua
server_id=1
说明:第一行是日志记录位置,第二行是需要同步的数据库的名称,这里就用的第三步创建的用例数据库。第三行是一个master的ID,相当于标识,可以不设置。
5. 在cmd中用net stop mysql 命令终止mysql服务,然后用net start mysql命令启动mysql服务,这样就重启了mysql服务,然后使用在主服务器的mysql命令窗口中(第三步用到的窗口)使用命令:
show master status \G
得到如下输出即可:
记录File和Position两个值,在后面需要继续用到。
二、对从服务器的配置(即操作在从服务器上进行)
1. 打开my.ini 在[mysqld]输入下面的内容:
log_bin=c:/master.log
master-host=192.168.1.104
master-user=hfut
master-pass=hzh
master-port=3306
master_log_file=master.000006
master_log_pos=98
replicate-ignore-db = mysql
replicate-do-db =huzunhua
replicate-ignore-db =information_schema
master_log_file和master_log_pos参数就是上面截图中的那两个值,一定要设置正确。当然这个设置也可以用命令进行的。、
2. 重启mysql服务;
3. 使用命令:
show slave status \G
应该显示下列信息:
注意第一行的显示是:Waiting for master to sent event 才算是配置成功了,另外Slave_IO_Running和Slave_SQL_Running显示应该是yes,不然也同步不了。
三、测试
在主服务器进行insert操作,然后在从服务器中用select出在主服务器中insert的值,应该是可以实现的、