Windows系统下MySQL主-从单向同步测试报告一、测试环境主数据库服务器(Master):IP:192.168.0.20,操作系统:WindowsXPSP3从数据库服务器(Slave):IP:192.168.0.252,操作系统:WindowsXPSP3注意事项:1)同步配置之前,主从服务器的MySQL数据库的结构必须一致,包括所有数据库、数据表、存储过程、函数、触发器、数据表字段等。并且,主服务器所包含的数据库必须在从服务器中存在,且主服务器可以包含在从服务器中不存在的数据库。2)主从服务器的MySQL数据库版本强烈建议采用相同版本的,且版本号最好高于V5.0。二、测试步骤一)主数据库服务器配置1)启动MySQL服务通过Windows自带服务管理程序,启动MySQL数据库服务。启动服务之前,请检查安装目录下my.inf配置文件中[mysqld]配置块中是否配置了如下信息:log-bin=mysql-bin#记录同步二进制文件server-id=1#主服务器的ID,一般为1如果配置块中没有上述信息,请务必添加。2)登录MySQL数据库启动控制台程序CMD.EXE,输入“mysql–uadmin–h192.168.0.20-p”,单击回车键,输入密码即可登录MySQL数据库,如图1所示。图1登录MySQL数据库注意:执行该控制台命令之前,请将MySQL数据库执行文件所在路径添加至Windows系统环境变量PATH中。3)授权同步复制权限给从服务器:192.168.0.252输入授权SQL指令,如图2所示。GRANTREPLICATIONSLAVEON*.*TO‘SlaveRep’@’192.168.0.252’IDENTIFIEDBY‘123456’图2从服务器同步复制授权4)测试同步账户在从数据库服务器192.168.0.252上,启动控制台CMD.EXE,输入登录命令:mysql–uSlaveRep–h192.168.0.20–p图3测试同步账户注意:测试之前,请确保从数据库服务器中,系统环境变量PATH已经添加MySQL可执行文件路径。5)查询主数据库状态输入SQL指令,如图3所示。SHOWMASTERSTATUS;图4查询主数据库状态记录下File和Position的值,以便从服务器配置使用。File:mysql-bin.000006;Position:107;注意:如果主数据库服务器已经存在应用数据,则必须执行如下步骤,获取主数据库状态:A)主数据库进行锁表操作,避免数据再写入操作。FLUSHTABLESWITHREADLOCK;B)查询主数据库状态。SHOWMASTERSTATUS;C)记录下File和Postion的数值。D)取消主数据库锁。UNLOCKTABLES;二)从数据库服务器配置1)停止MySQL数据库服务通过Windows自带服务管理程序,将当前正在运行的MySQL服务停止。2)修改数据库配置文件my.inf在[mysqld]下检查是否有配置项server-id,如果没有则新增一个配置项server-id=2;如果存在该配置项,则将该配置项的值修改为2或者其他非1的值。1预留给主数据库服务器使用。注意:修改之前,请将原先的my.inf进行备份。3)启动MySQL数据库服务器4)在从数据库服务器192.168.0.252上,启动控制台CMD.EXE,输入登录命令:mysql–uadmin–h192.168.0.252–p图5登录从数据库服务器5)执行同步SQL指令在登录后的控制台输入如下SQL同步指令CHANGEMASTERTOmaster_host=‘192.168.0.20’,master_user=‘SlaveRep’,master_password=‘123456’,master_log_file=‘mysql-bin.000006’,master_log_pos=107;图6同步SQL指令修改主服务器参数之前,应当停止所有Slave进程,使用SQL指令:STOPSLAVE即可停止Slave进程。6)启动Slave同步进程在控制台输入SQL指令STARTSLAVE;图7启动Slave同步进程7)主从同步检查从数据库服务器,输入同步检查SQL指令:SHOWPROCESSLIST\G;检查从数据库服务器运行的同步线程图8从数据库服务器运行线程如果红色框的信息出现,则表示从数据库服务器配置匹配成功。如果红色框内的信息未出现,请检查my.inf配置参数已经通过CHANGEMASTERTO……设置主服务器信息是否正确。一个可能的解决办法是:通过STOPSLAVE停止Slave进程,从主服务器查询最新的File和Position参数,再通过CHANGEMASTERTO……设置主服务器信息,最后通过STARTSLAVE启动Slave进程。图9从数据库服务器运行状态如图示,Slave_IO_Running和Slave_SQL-Running同时为YES,表示从数据库匹配成功。8)验证主数据库服务器匹配是否成功在主数据库服务器:192.168.0.20,登录后的控制台输入SHOWPROCESSLIST\G;图10主服务器同步验证如图示,如果红色框内的信息出现,则表示主服务器同步匹配成功。三)数据同步验证所有的同步测试均在数据表test中进行。1)创建数据表主服务器:图11主服务器创建数据表从服务器:图12从服务器查询数据表2)修改数据表:添加字段主服务器:图13主服务器添加数据表字段从服务器:图14从服务器查询数据表字段3)修改数据表:删除字段主服务器:图15主服务器删除字段从服务器:图16从服务器查询字段4)修改数据表:修改字段主服务器:图17主服务器修改字段属性从服务器:图18从服务器查询字段属性5)创建数据库主服务器:图19主服务器创建数据库从服务器:图20从服务器查询数据库信息6)删除数据库主服务器:图21主服务器删除数据库从服务器:图22从服务器查询数据库信息7)添加记录主服务器:图23主服务器添加记录从服务器:图24从服务器查询记录8)更新记录主服务器:图25主服务器更新记录从服务器:图26从服务器查询记录9)删除记录主服务器:图27主服务器删除记录从服务器:图28从服务器删除记录10)数据库同步在主数据库服务器上用数据库创建工具创建一个新的数据库pxdb_client(包括创建数据表、存储过程、函数、触发器、初始化数据等),在从服务器上可以同步创建相同名称的数据库pxdb_client(包括数据表、存储过程、函数、触发器、初始化数据等)。四)主-从数据库服务器切换1)主、从服务器配置按照二)中所述,调换调整配置参数即可。2)同步测试按照三)中所述方法进行测试。五)一些注意事项:1)默认地,要一个CREATEPROCEDURE或CREATEFUNCTION语句被接受,DETERMINISTIC或NOSQL与READSSQLDATA中的一个必须明白地指定,否则会产生如下错误:ERROR1418(HY000):ThisroutinehasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_bin_trust_routine_creatorsvariable)如果设置log_bin_trust_routine_creators为1,移除对子程序必须是确定的或不修改数据的要求。(mysqlSETGLOBALlog_bin_trust_routine_creators=1;)2)主从服务器配置生效起,对主服务器的更新(创建、修改、删除)操作,均能如实地在从服务器上得以同步。假如从服务器没有启动,一旦启动(包括启动MySQL数据库服务和Slave进程),从服务器将主动同步主服务器上的更新操作。