SEO门户
ASP教程PHP教程
返回首页

讲解MySQL复制功能使用技巧分析

时间:2011-04-07 08:26来源:http://www.china-zhifuwang.com 作者:┈spiders┈ 点击:


MySQL复制,MySQL复制功能,MySQL工具,ySQL故障-MySQL复制的概述、安装、故障、技巧、工具.

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

  概述

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

讲解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命令,否则从服务器不会开始复制。

------分隔线----------------------------
推荐内容