搭建Ubuntu上的MySQL主从复制

在数据库领域,主从复制是一种常见的架构模式,用于提高数据库的性能和可用性。在MySQL中,可以通过配置主从复制来实现数据同步,从而实现读写分离和容灾备份。

准备工作

在开始配置MySQL主从复制之前,我们需要确保以下几点:

  • 两台Ubuntu服务器,一台作为主服务器,一台作为从服务器
  • 在两台服务器上安装MySQL数据库
  • 确保主从服务器之间可以互相通信

配置主服务器

首先,我们需要在主服务器上进行一些配置。假设我们已经安装了MySQL,现在我们需要在/etc/mysql/mysql.conf.d/mysqld.cnf文件中添加以下配置:

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase

然后重启MySQL服务:

sudo systemctl restart mysql

配置从服务器

接下来,我们需要在从服务器上进行配置。假设我们已经安装了MySQL,现在我们需要在/etc/mysql/mysql.conf.d/mysqld.cnf文件中添加以下配置:

server-id = 2

然后重启MySQL服务:

sudo systemctl restart mysql

创建复制用户

在主服务器上,我们需要创建一个专门用于复制的用户。登录MySQL,执行以下SQL语句:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

启动主从复制

现在我们可以开始配置主从复制了。在从服务器上,登录MySQL,执行以下SQL语句:

CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
START SLAVE;

检查主从复制状态

在主服务器上,执行以下SQL语句可以查看主从复制状态:

SHOW MASTER STATUS;

在从服务器上,执行以下SQL语句可以查看主从复制状态:

SHOW SLAVE STATUS\G

序列图

下面是配置主从复制的过程的序列图:

sequenceDiagram
    participant 主服务器
    participant 从服务器
    主服务器->>主服务器: 配置server-id, log_bin
    主服务器->>主服务器: 重启MySQL服务
    从服务器->>从服务器: 配置server-id
    从服务器->>从服务器: 重启MySQL服务
    主服务器->>主服务器: 创建复制用户
    从服务器->>从服务器: 启动主从复制

总结

通过上述步骤,我们成功地在Ubuntu服务器上配置了MySQL主从复制。这种架构模式可以提高数据库的性能和可用性,是实现读写分离和容灾备份的重要手段。希望本文对您有所帮助!