日期:2014-05-16  浏览次数:20413 次

mysql主从热备配置(含innodb)终极版

转自?http://blogread.cn/it/article/361?f=wb

mysql主从热备有2种配置方式,备份某些库或者忽略备份某些库,建议选择后者

master机器

?

以下是代码片段:
vi?my.cnf,添加下面的??
log-bin??
server-id???????=?1??
#sql-bin-update-same??
binlog-do-db=mysql???//备份的数据库名,可以添加多个或者?

?

slave机器

?

以下是代码片段:
log-bin??
server-id???????=?2??
#sql-bin-update-same??
master-host=192.168.8.201??
master-user=backup??
master-password=123456??
master-port=3306??
master-connect-retry=10??
replicate-do-db=mysql??
#log-slave-updates

?

?

或者
master机器

?

以下是代码片段:
server-id???????=?1??
expire-logs-days?=?7??
binlog-ignore-db=test?

?

slave机器

?

以下是代码片段:
server-id???????=?2??
master-host=192.168.8.201??
master-user=backup??
master-password=123456??
master-port=3306??
master-connect-retry=10??
expire-logs-days?=?7??
replicate-ignore-db=test

?

?

在master机器上面授权:

?

以下是代码片段:
mysql>GRANT?all?ON?*.*?TO?backup@192.168.8.202?IDENTIFIED?BY?"123456";?

?

到此为止配置完成了(第一次配置需要重启mysql),剩下的工作就是再主从热备开始前保持主从的数据完全一致:
对于myisam的表,直接把master机器mysql/data目录下面的所有文件同步到slave机器对应的目录即可
对应innodb的表,不能直接同步文件,需要用mysqldump导出数据,然后在slave机器上面导入即可
注意在同步数据期间,master机器锁表成只读模式:

?

以下是代码片段:
mysql>flush?tables?with?read?lock;?

?

这期间主从mysql都可以不停,数据同步完毕之后,再master机器上查看mysqlbinglog和偏移量,例如:

?

以下是代码片段:
mysql>?show?master?status;??
+---------------------+----------+--------------+------------------+??
|?File????????????????|?Position?|?Binlog_Do_DB?|?Binlog_Ignore_DB?|??
+---------------------+----------+--------------+------------------+??
|?mysql-bin.000012????|??4117873?|??????????????|?test?????????????|??
+---------------------+----------+--------------+------------------+?

?

然后在slave机器上面修改成对应的日志文件和偏移量即可: