当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-04-07 15:58:00  来源:本站整理

<b>MySQL复制的概述、安装、弊端、本领、工具</b>[MySQL防范]

赞助商链接



  本文“<b>MySQL复制的概述、安装、弊端、本领、工具</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!

概述

首先主服务器把数据改变记录到主日记,然后从服务器通过I/O线程读取主服务器上的主日记,并且把它写入到从服务器的中继日记中,接着SQL线程读取中继日记,并且在从服务器上重放,从而实现MySQL复制.具体以下图所示:

MySQL复制

整个历程反映到从服务器上,对应三套日记信息,可在从服务器上用以下号令查看:

mysql> SHOW SLAVE STATUS;

Master_Log_File & Read_Master_Log_Pos:下一个传输的主日记信息.

Relay_Master_Log_File & Exec_Master_Log_Pos:下一个履行的主日记信息.

Relay_Log_File & Relay_Log_Pos:下一个履行的中继日记信息.

理解这些日记信息的含义关于办理弊端至关重要,后文会具体阐述.

安装

先在主服务器上成立复制账号:

mysql> GRANT REPLICATION SLAVE ON *.*
       TO '<SLAVE_USER>'@'<SLAVE_HOST>'
       IDENTIFIED BY '<SLAVE_PASSWORD>';

注:出于安全性和机动性的考虑,不要把root等具有SUPER权限用户作为复制账号.

然后设置主服务器配置文件(缺省:/etc/my.cnf):

[mysqld]

server_id = 100
log_bin = mysql-bin
log_bin_index = mysql-bin.index
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_support_xa = 1

注:一定要保证主从服务器各自的server_id唯一,避免冲突.

注:假如没有指定log_bin的话,缺省会利用主机名作为名字,如此一来一旦主机名发生改变,就会出问题,所以举荐指定log_bin(从服务器的relay_log存在一样的问题).

注:sync_binlog,innodb_flush_log_at_trx_commit,innodb_support_xa三个选项都是出于安全目的设置的,不是复制的必须选项.

接着设置从服务器配置文件(缺省:/etc/my.cnf):

[mysqld]

server_id = 200
log_bin = mysql-bin
log_bin_index = mysql-bin.index
relay_log = mysql-relay-bin
relay_log_index = mysql-relay-bin.index
read_only = 1
skip_slave_start = 1
log_slave_updates = 1

注:假如用户有SUPER权限,则read_only无效.

注:有了skip_slave_start,除非利用START SLAVE号令,不然从服务器不会开始复制.

注:设置log_slave_updates,让从服务器记录日记,有助于在必要时把从切换成主.

下面最重要的步骤是若何克隆一份主服务器的数据:

假如数据库利用的是MyISAM表范例的话,可按以下方法操作:

shell> mysqldump --all-databases --master-data=1 > data.sql

注:master-data选项缺省会翻开lock-all-tables,并写入CHANGE MASTER TO语句.

假如数据库利用的是InnoDB表范例的话,则应当利用single-transcation:

shell> mysqldump --all-databases --single-transaction --master-data=1 > data.sql

有了数据文件,传输到从服务器上并导入:

shell> mysql < data.sql

假如数据量很大的话,mysqldump会非常慢,此时直接拷贝数据文件能节俭不少时间:

在拷贝之前要先锁定数据,然后再得到相关的日记信息(FILE & POSITION):

mysql> FLUSH TABLES WITH READ LOCK;

mysql> SHOW MASTER STATUS;

接下来拷贝数据文件时,假如是MyISAM表范例的话,直接拷贝便可;假如是InnoDB表范例的话,一定要先终止MySQL服务再拷贝,不然拷贝文件大概无法利用.把拷贝的数据文件直接复制到从服务器的数据目录.   以上是“<b>MySQL复制的概述、安装、弊端、本领、工具</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .