测试环境:
操作系统 | 数据库版本 | IP地址 | 端口号 | |
主数据库 | Windows 7 | MySQL 5.1.69 | 192.168.0.119 | 4000 |
从数据库 | Windows 7 | MySQL 5.1.69 | 192.168.0.118 | 3000 |
配置主数据库:
1):修改主数据库配置文件my.ini,在[mysqld]区间下添加以下内容
server-id = 1
binlog-do-db=mydatabase1
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=test
注释:1:以上键值对已经存在则修改,没有则添加
2:server-id的值必须大于零,范围介于1到2^32-1
3:binlog-do-db表示需要同步的数据库,有多个数据库可以写多行,或者使用逗号分隔
4:binlog-ignore-db表示需要忽略的数据库,有多个可以写多行,或者使用逗号分隔
2):添加一个可以远程访问的账户用于从数据库登陆
eg:grant replication slave on *.* to 'Admin'@'192.168.0.118' identified by 'sa';
3):重启MySQL服务
4):使用命令行登陆MySQL,使用show master status\G;查看日志情况
从数据库配置:
1):修改主数据库配置文件my.ini,在[mysqld]区间下添加以下内容
server-id=2
master-host=192.168.0.119
master-user= Admin
master-password= sa
master-port=4000
master-connect-retry=60
replicate-do-db=mydatabase1
replicate-ignore-db=mysql,information_schema,test
slave-skip-errors=all
注释:a)这里server-id的值不能和主数据库一样
b)master-host:主数据库主机地址
c)master-user:主数据库用户名
d)master-password:主数据库密码
e)master-port:主数据库端口号
f)master-connect-retry:从数据库与主数据库断开连接后,重新连接时间差(秒)
g)replicate-do-db:需要从主数据库同步的数据库
h)replicate-ignore-db:忽略的数据库
j)slave-skip-errors=all跳过主数据库错误
2):重启MySQL服务
3):命令行登陆MySQL,使用show slave status\G;查看slave状态
如果Slave_IO_Running、Slave_SQL_Running状态都为Yes则表明设置成功。
这时候查看数据库可以看到数据库已经自动同步了。
验证方法:
修改主数据库,从数据库自动跟着改变
如果配置完从数据库之后,通过my.ini文件里master配置,重启服务之后发现无效,可以到数据库data文件夹找到
mater.info文件删除,这是一个缓存文件
网上很多博客做主从同步时候,在从数据库配置完重启MySQL服务之后,都需要手动打开slave进程(start slave),
我试下来发现不需要,也许是MySQL数据库版本的差异,我理解的是在重启mysql服务的时候,会检测配置文件,如果配置
了slave服务,则会自动启动slave进程