MySQL的主从复制Replication之MyIsam和InnoDB数据复制发布 |
发布时间: 2012/9/20 16:56:53 |
MyIsam发布相对简单,把库下面所有文件拷过去就好了。复制Innodb的做法和MyIsam类似,只不过Innodb引擎下的表的数据内容不再是存在同一的数据库目录下(MyIsam就是这么做的),Innodb引擎下,数据文件存放在ibdata1这样的文件里,而操作的log默认存放在ib_logfile0、ib_logfile1、ib_logfile2这样的文件中。 1、主库上,执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句:(当然也可以把数据库stop掉) 2、得到主库当前记录点
4、主库:确认文件已经生成拷贝了。
2.启动从服务器 3.在从服务器上设置主服务器信息 4.启动复制 5.查看复制状态 在Innodb的情况下: 再重新启动从库的slave。 mysql> show slave status\G; Master_Log_File: mysql-netprws_test-bin.000010 …… 二者有为NO的,一般都是由于Master_Log_File或者Read_Master_Log_Pos的设置问题,还有就是网络问题了。通常到这里应该就OK了,如果还有问题,需要根据show slave status\G中看到的错误代码和错误提示再进行定位了。 另外从库的my.cnf中有一个设置建议用上。 这个属性打开很有必要,可以防止很多人为修改从库导致从库同步失败的问题。 采用 binlog 的方法相对来说更灵活,省心省力,而且还可以支持增量备份。 启用 binlog 时必须要重启 mysqld。首先,关闭 mysqld,打开 my.cnf,加入以下几行: server-id = 1 需要备份时,可以先执行一下 SQL 语句,让 mysqld 终止对当前 binlog的写入,就可以把文件直接备份,这样的话就能达到增量备份的目的了: FLUSH LOGS;如果是备份复制系统中的从服务器,还应该备份master.info 和 relay-log.info 文件。备份出来的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 来查看,如:/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001该工具允许你显示指定的数据库下的所有SQL 语句,并且还可以限定时间范围,相当的方便,详细的请查看手册。 恢复时,可以采用类似以下语句来做到: /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name把 mysqlbinlog 输出的 SQL 语句直接作为输入来执行它。
本文出自:亿恩科技【www.enkj.com】 |