-
配置从服务器:
首先,我们需要为从服务器配置一个唯一的 server_id
并启用中继日志。中继日志用于从服务器在将从主服务器接收到的二进制日志事件应用到自己的数据库之前进行存储。
编辑从服务器上的 MySQL 配置文件(通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf
):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld]
部分添加或修改以下行:
server_id = 2
relay_log = mysql-relay-bin
server_id = 2
:这为从服务器设置了一个唯一的 ID。它必须与主服务器的 server_id
不同。
relay_log = mysql-relay-bin
:这启用了中继日志,并设置了中继日志文件的基本名称。
配置文件的 mysqld
部分现在应该类似于以下内容:
[mysqld]
#
## * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
server_id = 2
relay_log = mysql-relay-bin
## ... 其他配置 ...
按 Ctrl+X
,然后按 Y
,再按 Enter
保存更改并退出 nano
。
-
重启从服务器上的 MySQL 服务器:
重启 MySQL 服务器以应用更改:
sudo /etc/init.d/mysql restart
你应该会看到类似以下的输出:
[ ok ] Restarting mysql (via systemctl): mysql.service.
-
在主服务器上创建复制用户:
在 主 服务器上,以 root 用户身份登录到 MySQL 服务器:
sudo mysql -u root
创建一个专门用于复制的用户。将 'slave_user'
替换为你想要的用户名,将 'password'
替换为强密码。为了提高安全性,将 '%'
替换为从服务器的 IP 地址。如果你不确定从服务器的 IP 地址,可以使用 '%'
允许从任何主机进行连接(不建议在生产环境中使用)。
CREATE USER 'slave_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%';
FLUSH PRIVILEGES;
CREATE USER 'slave_user'@'%' IDENTIFIED BY 'password'
:创建一个名为 slave_user
的新 MySQL 用户,该用户可以从任何主机('%'
)连接。
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%'
:授予 slave_user
在所有数据库和表上的 REPLICATION SLAVE
权限。从服务器需要此权限才能向主服务器请求二进制日志更新。
FLUSH PRIVILEGES
:重新加载授权表以应用新权限。
退出主服务器上的 MySQL 监视器:
exit
-
配置从服务器连接到主服务器:
在 从 服务器上,以 root 用户身份登录到 MySQL 服务器:
sudo mysql -u root
告诉从服务器如何连接到主服务器。将 'master_host'
替换为主服务器的 IP 地址或主机名,将 'slave_user'
替换为你创建的复制用户名,将 'password'
替换为复制密码。
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='slave_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
MASTER_HOST
:主服务器的主机名或 IP 地址。
MASTER_USER
:从服务器用于连接主服务器的用户名。
MASTER_PASSWORD
:复制用户的密码。
MASTER_LOG_FILE
:开始复制的主服务器二进制日志文件的名称。你可以通过在主服务器上运行 SHOW MASTER STATUS;
来找到这个名称。对于全新的设置,通常是 mysql-bin.000001
。
MASTER_LOG_POS
:开始复制的二进制日志文件中的位置。你可以通过在主服务器上运行 SHOW MASTER STATUS;
来找到这个位置。对于全新的设置,通常是 4
。
重要提示: 你需要从主服务器确定正确的 MASTER_LOG_FILE
和 MASTER_LOG_POS
。在主服务器上,执行以下查询:
SHOW MASTER STATUS;
输出将显示 File
(对应于 MASTER_LOG_FILE
)和 Position
(对应于 MASTER_LOG_POS
)。在从服务器的 CHANGE MASTER TO
命令中使用这些值。
执行 CHANGE MASTER TO
命令后,启动从服务器:
START SLAVE;
退出从服务器上的 MySQL 监视器:
exit