- 主服务器(master)配置,主服务器配置很简单,只需要修改my.cnf配置文件中的两个地方。
- 修改my.cnf中的server_id属性,主服务器配置为1,即server-id=1。
- 修改my.cnf中的log-bin属性,例如可以设置为log-bin=/home/china/mysql/mysql-bin
- 从服务器(slave)配置。
- 修改my.cnf中的server_id属性,修改为与主服务器不同,如server-id=2
- 登录MySQL后,在命令行输入change master to master_host='master_ip',master_port=3306,master_user='username',master_password='password' ;
- 使用命令start slave 启动slave线程。
完成以上配置以后,我们可以在主服务器上查看master状态,使用命令show master status ;
同样,我们也可以在从服务器上查看从服务器的状态,show slave status ;
(因显示内容太多,图太大,图省略)
完成以上配置以后,我们就完成了MySQL主从服务器的配置,现在我们验证一下:
我们在主服务器上切换到test库上,执行SQL,create table userInfo(id int,name varchar(20));
使用show tables 命令查看,已经建立表userInfo.
这时我们到从服务器上看,表userInfo应该也已经建立起来了。
同时我们想主服务器表userInfo中插入数据的话,从服务器也会自动插入数据的。
如果从服务器并没有同步主服务器的数据,并且查看从服务器状态时,发现有一下错误信息:
“Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'”
这是由于主从服务器数据不同步造成的,这时可以通过以下几步来处理:
- 在从服务器上使用命令stop slave停止从服务器。
- 在主服务器上使用命令flush logs 刷新主服务器日志信息。
- 在主服务器上使用命令show master status ;查看主服务器状态,主要关注日志文件名称和位置偏移量(position)。
- 在从服务器上执行命令change master to master_log_file='mysql-bin.00004',master_log_pos=397;注意文件名和position和主服务器上对应。
- 使用命令start slave;启动从服务器的slave线程。
再次在主服务器表中插入数据,就应该能够正常同步了。
貌似图片不能正常显示,有什么问题,加入郑州Java开发者QQ群52573267,大家一起讨论学习,欢迎目前在郑州或者将来打算回郑州的童鞋们加入!