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

在本指南中,您将学习如何在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上配置主从复制设置。

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

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

$ sudo apt update
更新Ubuntu软件

更新Ubuntu软件

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

$ sudo apt install mysql-server mysql-client

在Ubuntu中安装MySQL服务器

接下来,打开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
设置MySQL主IP地址

设置MySQL主IP地址

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

server-id	 =1
在Master上设置MySQL服务器ID

在Master上设置MySQL服务器ID

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

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服务器是否按预期运行,请发出命令。

$ sudo systemctl status mysql
重启并检查MySQL状态

重启并检查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复制用户

创建MySQL复制用户

接下来,运行以下命令。

mysql> SHOW MASTER STATUS\G

输出应类似于下面的内容。

检查MySQL主状态

检查MySQL主状态

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

第3步:配置MySQL从服务器

前往从属服务器,就像我们使用主服务器一样 ,打开MySQL配置文件。

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

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

bind-address           = 10.128.0.29
在Slave上绑定MySQL IP地址

在Slave上绑定MySQL IP地址

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

server-id		=2 
在Slave上设置MySQL服务器ID

在Slave上设置MySQL服务器ID

再次,将下面的行粘贴到配置文件的最后。

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 ='[email?protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;
允许从属服务器上的MySQL复制

允许从属服务器上的MySQL复制

如果你足够了,你会发现我们已经使用了创建slave复制用户之后显示的mysql-bin.00002值和位置ID 1643

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

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

mysql> START SLAVE;

第4步:验证MySQL主从复制

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

主服务器中登录MySQL。

$ sudo mysql -u root -p

让我们创建一个测试数据库。 在这种情况下,我们将创建一个名为replication_db的数据库。

mysql> CREATE DATABASE replication_db;

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

$ sudo mysql -u root -p

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

mysql> SHOW DATABASES;
验证MySQL主从复制

验证MySQL主从复制

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

结论

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