Configuring MySQL replication
此配方教您如何配置MySQL的主从复制,以近乎实时地维护数据库的镜像副本。
为了复制数据,主MySQL服务器将有关发生的任何更改(插入,更新等)的详细信息记录到称为二进制日志的文件中。每个从属服务器都连接到主系统,从日志文件中读取信息,然后复制更改以维护自己的数据库本地副本。每个从服务器都对自己负责,这意味着我们可以在不影响主服务器可用性的情况下关闭服务器进行维护。一旦它重新上线,从机就会从它停止的地方恢复复制。
复制在许多情况下都很有用。例如,如果在从站上维护数据库的完整副本,则可以轻松地更换主服务器以实现故障转移或灾难恢复。对于需要考虑可扩展性和性能的环境,主机可以执行写操作,而负载均衡器后面的只读从机集合可以处理密集的读操作。
准备
此配方演示了如何使用两个系统配置MySQL复制。 第一个系统是主MySQL服务器,我们假设它具有IP地址192.168.56.100。 第二个系统是从属服务器,地址为192.168.56.101。 您需要在两个系统上使用root帐户或sudo来完成配置的管理访问权限。
两个系统都应安装MySQL,如前面的设置MySQL数据库配方所述。 如果在主服务器上创建了一个或多个数据库后设置复制,请按照备份和还原MySQL数据库配方进行备份,然后在配置复制之前将其导入从服务器。 这可确保复制从所有同步数据库开始。
怎么做。。。
请按照以下步骤为MySQL配置主从复制:
- 使用文本编辑器在/etc/my.cnf打开主MySQL服务器的配置文件:
vi /etc/my.cnf
- 在[mysqld]部分中,为server-id选项添加一个新条目,并将其值设置为1:
server-id = 1
- 找到log_bin选项并取消注释:
log_bin
- 保存更改并关闭配置文件.
- 重新启动服务器以使更改生效:
systemctl restart mysqld.service
- 使用mysql连接到主服务器,并为要使用的从属服务器创建一个新帐户。 该帐户需要REPLICATION SLAVE权限:
CREATE USER "slave"@"192.168.56.101" IDENTIFIED BY "S3CR3t##";GRANT REPLICATION SLAVE ON *.* TO "slave"@"192.168.56.101";FLUSH PRIVILEGES;
- 执行SHOW MASTER STATUS以确定主机在写入二进制日志时的当前位置。 请注意为文件和位置返回的值,因为配置从站所需的信息:
SHOW MASTER STATUS;
- 使用编辑器打开slave的配置文件。 为server-idoption添加一个新条目,并将其值设置为2:
server-id = 2
- 添加只读选项的条目:
read-only
- 保存更改并关闭文件.
- 重新启动从站以使更改生效:
systemctl restart mysqld.service
- 要配置与主服务器的通信,请使用mysql连接到从服务器,然后执行CHANGE MASTER语句。 值应反映在步骤7中由SHOW MASTER STATUS返回的值:
CHANGE MASTER TO MASTER_HOST = "192.168.56.100