日期:2014-05-16 浏览次数:20439 次
转自?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机器上面修改成对应的日志文件和偏移量即可: