网站搜索

如何在 Ubuntu 18.04 上设置 MySQL 主从复制


MySQL 主从复制是一种允许在网络中的一个或多个节点之间复制或复制数据库文件的过程。此设置提供冗余和容错功能,以便在主节点发生故障时,仍可以在从节点中恢复数据库。这让用户高枕无忧,因为数据库的副本仍然可以从不同的服务器检索,因此在任何情况下都不会丢失。

在本指南中,您将学习如何在 Ubuntu 18.04 系统上执行 MySQL 数据库主从复制。

先决条件

在设置中,我们将有两台运行 Ubuntu 18.04 的服务器,其 IP 地址如下。

Master server: 10.128.0.28
Slave server: 10.128.0.29

现在让我们深入了解如何在 Ubuntu 上配置主从复制设置。

第一步:在主从节点上安装MySQL

Ubuntu 存储库包含MySQL 版本5.7。要利用任何新功能并避免潜在问题,您应该安装最新的 MySQL 版本。但首先,让我们使用以下 apt 命令更新两个节点。

sudo apt update

要在两个节点上安装MySQL,请执行命令。

sudo apt install mysql-server mysql-client

接下来,打开 mysql 配置文件。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

主节点上,滚动并找到bind-address属性,如下所示。

bind-address 	 =127.0.0.1

更改环回地址以匹配主节点的IP地址。

bind-address  	=10.128.0.28

接下来,在 [mysqld] 部分中指定 server-id 属性的值。您选择的号码不应与任何其他服务器 ID 号码匹配。让我们分配值1

server-id	 =1

在配置文件的最后,复制并粘贴以下行。

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

退出配置文件并重新启动MySQL服务以使更改在Master节点上生效。

sudo systemctl restart mysql

要验证 MySQL 服务器是否按预期运行,请发出命令。

sudo systemctl status mysql

完美的! MySQL 服务器正在按预期运行!

步骤2:在主节点上创建用于复制的新用户

在本节中,我们将在主节点中创建一个复制用户。为此,请登录 MySQL 服务器,如图所示。

sudo mysql -u root -p

接下来,继续并执行以下查询以创建副本用户并授予对复制从属的访问权限。请记住使用您的 IP 地址。

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

接下来,运行以下命令。

mysql> SHOW MASTER STATUS\G

输出应该类似于您在下面看到的内容。

请注意并记下 mysql-bin.000002 值和位置 ID 1643。设置从服务器时,这些值至关重要。

第三步:配置MySQL从服务器

前往从服务器,就像我们对主服务器所做的那样,打开 MySQL 配置文件。

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

就像主服务器一样,继续编辑以下行。

bind-address           = 10.128.0.29

与之前一样,在 [mysqld] 部分中为 server-id 属性指定一个值。这次选择不同的值。让我们选择2

server-id		=2 

再次将以下行粘贴到配置文件的最末尾。

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

接下来在从节点上重新启动 MySQL 服务器。

sudo systemctl restart mysql

完成后,保存并退出文本编辑器

接下来,登录到 MySQL shell,如图所示。

sudo mysql -u root -p

在此步骤中,您需要进行一些配置,以允许从服务器连接到主服务器。但首先,停止从属线程,如图所示。

mysql> STOP SLAVE; 

要允许从服务器复制主服务器,请运行以下命令。

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

如果您足够敏锐,您会发现我们使用了创建从复制用户后先前显示的 mysql-bin.00002 值和位置 ID 1643

此外,主服务器的 IP 地址、复制用户和密码已被使用。

稍后,启动您之前停止的线程。

mysql> START SLAVE;

第四步:验证MySQL主从复制

为了检查设置是否确实按预期工作,我们将在主服务器上创建一个新数据库,并检查它是否已复制到 MySQL 从服务器上。

登录主服务器中的MySQL。

sudo mysql -u root -p

让我们创建一个测试数据库。在本例中,我们将创建一个名为 replication_db 的数据库。

mysql> CREATE DATABASE replication_db;

现在,登录到从服务器中的 MySQL 实例。

sudo mysql -u root -p

现在使用查询列出数据库。

mysql> SHOW DATABASES;

您会注意到您在上创建的数据库已被复制到从属上。惊人的 !您的 MySQL 主从复制正在按预期工作!您现在可以放心,如果发生任何故障,数据库文件的副本将被复制到从服务器。

结论

在本指南中,您学习了如何在 Ubuntu 18.04 上设置 MySQL 主从复制设置。