主从同步图:
主服务器一般称为master服务器,从服务器称为slave服务器,本例演示一台master和一台slave进行主从同步。
从图中可以看出,master上所执行的sql语句会写入到binary log文件中,slave上开启两个线程,一个IO线程定时向master发送同步消息,master收到后会把新增的sql发送到slave,slave收到后写入到relay log中,另一个线程SQL线程会从Realy log中读取sql语句 并执行,这样就完成了主从同步。
主服务和从服务器在两台物理机上,首先配置master服务器:
查看配置文件,确保log-bin和server-id是开启的,如图
如果进行了配置文件的修改,修改后要重启mysql,
操作完成后,进入mysql,查看master状态:show master status;
这里的file是稍后slave配置时需要同步的文件名称,Position是开始同步的位置。
配置后master后,开始配置slave,此时如果master上有执行的新的语句,则Position会发生变化,配置slave时确保此数值是最新的。
slave上更改master 命令:
change master to master_host='192.168.1.1',master_port =3306,master_log_file='mysql-bin.000002',master_log_pos=502,master_user='replication',master_password='123456';
这里需要配置master服务器的ip地址,port 和使用的用户名,密码以及同步的bin-log文件和位置。
配置好之后 开启slave:start slave;
查看slave状态信息:show slave status;
显示两个线程都是出于运行状态,则证明slave开启成功。
测试:在master执行相应的语句,查看slave是否有相同操作的结果(比如在master创建新的数据库1a,slave查看也会出现新的数据库1a).