《mysql主从复制--备份参数验证-2014-6-22.docx》由会员分享,可在线阅读,更多相关《mysql主从复制--备份参数验证-2014-6-22.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.1 mysql数据库核查确保主服务器和从服务器分别安装mysql,并且版本一致,slave至少要和master的版本前两个号相同,可高于master。1.2 主服务器配置,然后重启log-bin=mysql-bin server-id=1sync_binlog=1binlog-do-db=test binlog-ignore-db=mysql 1.3 主库创建用户 1) 在master上为slave添加同步帐号并授权mysqlgrant replication slave on *.* to sxw192.168.1.205 identified by sxw100; 2)mysqlflu
2、sh privileges;(使授权命令生效)3) 授权之后在slave用授权用户登录验证 mysql -u sxw -h 192.168.1.203 psxw100复制数据到从库:两种方式A 停主库,复制数据到从库。(不推荐)B 使用mysqldump的方式mysqldump -uroot -p -lock-all-tables -triggers -routines -flush-logs -master-data=2 -databases test db.sql注意几个参数的使用:-lock-tables它和 -lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下
3、子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 -single-transaction 选项。-E, -events默认情况下备份事件,需要指定该参数。-triggers同时导出触发器。该选项默认启用,用 -skip-triggers 禁用它。-routines,-R导出存储过程以及自定义函数。-flush-logs,-F开始转储前刷新MySQL服务器日志文件。该选项要求RELOAD权限。请注意如果结合-all-database(或-A)选项使用该选项,根据每个转储的数据库刷新日志。例外情况是当使用-lock-all-tables或-master-data
4、的时候:在这种情况下,日志只刷新一次,在所有表被锁定后刷新。如果你想要同时转储和刷新日志,应使用-flush-logs连同-lock-all-tables或-master-data=value该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。如果该选项值等于1,位置和文件名被写入CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。如果选项值等于2,CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。-master-data选项启用
5、-lock-all-tables,除非还指定-single-transaction(在这种情况下,只在刚开始转储时短时间获得全局读锁定。又见-single-transaction。在任何一种情况下,日志相关动作发生在转储时。该选项自动关闭-lock-tables。-databases后面跟除mysql以后的其他所有数据库的库名-opt这只是一个快捷选项,等同于同时添加 -add-drop-tables -add-locking -create-option -disable-keys -extended-insert -lock-tables -quick -set-charset 选项。本选
6、项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 -skip-opt 禁用。注意,如果运行 mysqldump 没有指定 -quick 或 -opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。-quick,-q该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。验证1:-B参数 后的恢复问题 (验证) 直接导入,不加参数。#mysql -uroot /home/test1.sql2. 然后再从库导入 mysql -uroot create databa
7、se testtest; Query OK, 1 row affected (0.00 sec)并且 rootlocalhost home# mysql -uroot -padmin -h 192.168.1.11 testtest show master statusG* 1. row * File: mysql-bin.000009 Position: 127932701 Binlog_Do_DB: Binlog_Ignore_DB: bugfree,cms,cr_debug,db_adviser,debug,ec,exam_question,exam_question_v1,greenp
8、ad,ihukao,info,jeecms,jl_sxw100,jpetstore,monitor,my_test,mysql,phpcms,plusoft_test,redmine,senate,spider,sxw,t_test,temp_itempool,temp_uniwis_user,temp_uniwis_user_senate,test,test_itempool,test_jiajiao,test_zhiyuan,ucenter,ultrax,uniwis_jiajiao,uniwis_user,uniwis_user_operation,v3click,yy_haosheng
9、xue,zhiyuan,zhiyuan_uniwis_user_operation,zhiyuan_v3,zkphpcms,zxjj1 row in set (0.00 sec)6. 从库开始操作CHANGE MASTER TO MASTER_HOST=192.168.1.11,MASTER_USER=ssp,MASTER_PASSWORD=ssp123,MASTER_LOG_FILE=mysql-bin.000009, MASTER_LOG_POS=98;然后 start slave;然后 show slave statusG看到数据正在同步! 验证总结:深入理解mysql主从复制的原理,本
10、质!主从复制的时候,两端的数据不一致,不要担心,在夜里的时候在做一次同步,然后记录下来 二进制文件 就可以了。也就是说 在我备份的那一刻开始备份完成的时候,数据是一致的,那么 后期的 数据的增长或者修改都会同步更新到 二进制文件里面去。这样在直接自用 change master 的时候,就能从容的进行,而不用担心数据的不一致了。补充:通过主从复制的原理得知,从库读取主库的二进制文件,所以,再做复制文件的时候,先锁表,保证数据的一致性,然后记录下 偏移点 (show master status ),确保在记录偏移点到复制完数据库到从库的过程中,数据没有变化,这个时候可以 unlock tables;然后 从库的操作为停止主从, 把 主库的数据导入到从库, change master to 操作 ,开启从库。