<b>MySQL复制的概述、安装、弊端、本领、工具</b>[MySQL防范]
本文“<b>MySQL复制的概述、安装、弊端、本领、工具</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!
概述
首先主服务器把数据改变记录到主日记,然后从服务器通过I/O线程读取主服务器上的主日记,并且把它写入到从服务器的中继日记中,接着SQL线程读取中继日记,并且在从服务器上重放,从而实现MySQL复制.具体以下图所示:
MySQL复制
整个历程反映到从服务器上,对应三套日记信息,可在从服务器上用以下号令查看:
|
Master_Log_File & Read_Master_Log_Pos:下一个传输的主日记信息.
Relay_Master_Log_File & Exec_Master_Log_Pos:下一个履行的主日记信息.
Relay_Log_File & Relay_Log_Pos:下一个履行的中继日记信息.
理解这些日记信息的含义关于办理弊端至关重要,后文会具体阐述.
安装
先在主服务器上成立复制账号:
|
注:出于安全性和机动性的考虑,不要把root等具有SUPER权限用户作为复制账号.
然后设置主服务器配置文件(缺省:/etc/my.cnf):
|
注:一定要保证主从服务器各自的server_id唯一,避免冲突.
注:假如没有指定log_bin的话,缺省会利用主机名作为名字,如此一来一旦主机名发生改变,就会出问题,所以举荐指定log_bin(从服务器的relay_log存在一样的问题).
注:sync_binlog,innodb_flush_log_at_trx_commit,innodb_support_xa三个选项都是出于安全目的设置的,不是复制的必须选项.
接着设置从服务器配置文件(缺省:/etc/my.cnf):
|
注:假如用户有SUPER权限,则read_only无效.
注:有了skip_slave_start,除非利用START SLAVE号令,不然从服务器不会开始复制.
注:设置log_slave_updates,让从服务器记录日记,有助于在必要时把从切换成主.
下面最重要的步骤是若何克隆一份主服务器的数据:
假如数据库利用的是MyISAM表范例的话,可按以下方法操作:
|
注:master-data选项缺省会翻开lock-all-tables,并写入CHANGE MASTER TO语句.
假如数据库利用的是InnoDB表范例的话,则应当利用single-transcation:
|
有了数据文件,传输到从服务器上并导入:
|
假如数据量很大的话,mysqldump会非常慢,此时直接拷贝数据文件能节俭不少时间:
在拷贝之前要先锁定数据,然后再得到相关的日记信息(FILE & POSITION):
|
接下来拷贝数据文件时,假如是MyISAM表范例的话,直接拷贝便可;假如是InnoDB表范例的话,一定要先终止MySQL服务再拷贝,不然拷贝文件大概无法利用.把拷贝的数据文件直接复制到从服务器的数据目录.
以上是“<b>MySQL复制的概述、安装、弊端、本领、工具</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |