您当前位置:优侠库 > 资讯攻略 >
来源:未知
2021-10-24 17:15:57 浏览: 分类:资讯攻略

MySQL复制的概述、安装、故障、技巧、工具

相比MongoDB、redis等NoSQL数据库的复制,mysql的复制相当复杂!

摘要

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

MySQL复制

MySQL复制

整个过程反映在从属服务器上,对应于三组日志信息,可以使用以下命令在从属服务器上查看这些信息:

mysql & gt显示从属状态;

主日志文件& ampRead_Master_Log_Pos:下一次传输的主日志信息。

中继_主_日志_文件& ampExec_Master_Log_Pos:下一次执行的主日志信息。

中继日志文件& ampRelay_Log_Pos:下一次执行的中继日志信息。

理解这些日志信息的含义对于故障排除非常重要,这将在后面详细解释。

固定

首先在主服务器上创建一个复制帐户:

mysql & gt在*上授予复制从属服务器。*
TO ' & lt;' SLAVE _ USER & gt'@ ' & lt' SLAVE _ HOST & gt'
由' & lt' SLAVE _ PASSword & gt';

注意:出于安全性和灵活性的考虑,不要使用root等拥有超级权限的用户作为复制帐户。

然后设置主服务器配置文件(默认:/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

注意:如果用户有超级权限,read_only无效。

注意:使用skip_slave_start,除非使用START SLAVE命令,否则复制不会从服务器启动。

注意:设置log_slave_updates让从服务器记录日志有助于在必要时将从服务器切换到主服务器。

下面最重要的步骤是如何克隆主服务器数据的副本:

如果数据库使用MyISAM表类型,可以如下操作:

shell & gtmysqldump-all-databases-master-data = 1 & gt;data.sql

注意:默认情况下,master-data选项打开lock-all-tables并写入CHANGE MASTER TO语句。

如果数据库使用InnoDB表类型,您应该使用single-transit:

shell & gtmysqldump-all-databases-single-transaction-master-data = 1 & gt;data.sql

使用数据文件,将其传输到从属服务器并导入:

关键词:MySQL

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227170.html

上一篇:SQL基础语句总结
攻略资讯
安卓软件
安卓游戏