龙空技术网

如何在 CentOS 7 上配置 MySQL 主从复制

有得看 446

前言:

此时兄弟们对“mysql57复制”可能比较着重,看官们都想要学习一些“mysql57复制”的相关内容。那么小编同时在网络上收集了一些有关“mysql57复制””的相关知识,希望朋友们能喜欢,兄弟们一起来学习一下吧!

MySQL 复制是一个允许您将数据从一个数据库服务器自动复制到一个或多个服务器的过程。

MySQL 支持多种复制拓扑,其中 Master/Slave 拓扑是最著名的拓扑之一,其中一台数据库服务器充当主服务器,而一台或多台服务器充当从服务器。默认情况下,复制是异步的,其中 master 将描述数据库修改的事件发送到它的二进制 log,slave 在它们准备好时请求这些事件。

在本教程中,我们将解释如何在 CentOS 7 上设置一主一从服务器的 MySQL 主/从复制。同样的步骤适用于 MariaDB。

这种类型的复制拓扑最适合部署用于读取扩展的只读副本、用于灾难恢复和分析作业的实时数据库备份。

先决条件

在此示例中,我们假设您有两台运行 CentOS 7 的服务器,它们可以通过专用网络相互通信。如果您的托管服务提供商不提供私有 IP 地址,您可以使用公共 IP 地址并将防火墙配置 为仅允许来自受信任来源的端口 3306 上的流量。

本示例中的服务器具有以下 IP:

Master IP: 192.168.121.59Slave IP:  192.168.121.14
安装 MySQL

默认的 CentOS 7 存储库不包含 MySQL 软件包,因此我们 将从他们的官方 Yum 存储库安装 MySQL。为避免出现任何问题,我们将 在两台服务器上安装相同的MySQL 5.7版。

在主服务器和从服务器上安装 MySQL:

sudo yum localinstall  yum install mysql-community-server

安装完成后,启动 MySQL 服务并使其在启动时自动启动:

sudo systemctl enable mysqldsudo systemctl start mysqld

MySQL服务器第一次启动时,会为MySQL root用户生成一个临时密码。要查找密码,请使用以下grep 命令 :

sudo grep 'temporary password' /var/log/mysqld.log

运行mysql_secure_installation命令设置新的root密码,提高MySQL实例的安全性:

mysql_secure_installation

输入临时 root 密码并回答Y(是)所有问题。

新密码长度至少为8个字符,且至少包含1个大写字母、1个小写字母、1个数字和1个特殊字符。

配置主服务器

首先,我们将配置主 MySQL 服务器并进行以下更改:

将MySQL 服务器设置为侦听私有 IP 。设置唯一的服务器 ID。启用二进制日志记录。

为此,请打开 MySQL 配置文件并在该[mysqld]部分添加以下行:

sudo nano /etc/my.cnf

大师:/etc/my.cnf

bind-address           = 192.168.121.59server-id              = 1log_bin                = mysql-bin

完成后,重新启动 MySQL 服务以使更改生效

sudo systemctl restart mysqld

下一步是创建一个新的复制用户。以root用户登录MySQL服务器:

mysql -uroot -p

在 MySQL 提示符中,运行以下 SQL 查询,这些查询将创建replica用户并向用户授予REPLICATION SLAVE权限:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';

确保使用您的从站 IP 地址更改 IP。您可以根据需要命名用户。

仍然在 MySQL 提示符中时,执行以下命令将打印二进制文件名和位置。

SHOW MASTER STATUS\G
*************************** 1. row ***************************             File: mysql-bin.000001         Position: 1427     Binlog_Do_DB:  Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)

记下文件名,'mysql-bin.000001'和 Position '1427'。配置从服务器时需要这些值。这些值在您的服务器上可能会有所不同。

配置从服务器

与上面的主服务器一样,我们将对从服务器进行以下更改:

设置 MySQL 服务器监听私有 IP设置唯一的服务器 ID启用二进制日志

打开 MySQL 配置文件并编辑以下几行:

sudo nano /etc/my.cnf

奴隶:/etc/my.cnf

bind-address           = 192.168.121.14server-id              = 2log_bin                = mysql-bin

重启 MySQL 服务:

sudo systemctl restart mysqld

下一步是配置从服务器将用于连接到主服务器的参数。登录到 MySQL shell:

mysql -uroot -p

首先,停止从属线程:

STOP SLAVE;

运行以下查询以设置从站以复制主站:

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;

确保使用正确的 IP 地址、用户名和密码。日志文件名和位置必须与您从主服务器获取的值相同。

完成后,启动从属线程。

START SLAVE;
测试配置

此时,您应该有一个有效的主/从复制设置。

为了验证一切是否按预期工作,我们将 在主服务器上创建一个新数据库:

mysql -uroot -p
CREATE DATABASE replicatest;

登录到从属 MySQL shell:

mysql -uroot -p

运行以下命令列出所有数据库 :

SHOW DATABASES;

你会注意到你在主服务器上创建的数据库被复制到从服务器上:

+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || replicatest        || sys                |+--------------------+5 rows in set (0.00 sec)
结论

在本教程中,我们向您展示了在 CentOS 7 上创建 MySQL 主/从复制。

如果您有任何问题,请随时发表评论。

请多多关注,作者才能有动力输出更多实用文章

标签: #mysql57复制