1.打开主服务器的MySQL配置文件(通常是my.cnf
或my.ini
),并确保以下设置启用:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
2.如果启动MySQL报错:File '/var/log/mysql/master-bin.index' not found (Errcode: 13 - Permission denied)
出现问题的情况:启用mysql的binlog导致的,你可以通过执行以下命令更改文件的所有者为 'mysql' 用户
chown mysql:mysql -R /var/log/mysql
3.创建用于主从复制的授权帐户
CREATE USER 'repl'@'从服务器IP' IDENTIFIED BY 'password';
'repl'
是要创建的用户的名称,通常保留为'repl'。'从服务器IP'
是允许连接到MySQL主服务器的从服务器的IP地址或主机名。将其替换为从服务器的实际IP地址或主机名。'password'
是要为用户设置的密码。将其替换为所需的密码。
CREATE USER 'repl'@'从服务器IP' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从服务器IP';
4.获取主服务器当前的binlog信息:
SHOW MASTER STATUS;
5.配置从服务器 保证和主服务器不一样就可以了
server-id = 2
重启MySQL服务器以应用更改
6.执行以下命令连接到主服务器并开始复制
CHANGE MASTER TO
MASTER_HOST = '主服务器IP',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = '第四步返回的信息',
MASTER_LOG_POS = 第四步返回的信息;
启动从服务器复制
START SLAVE;
检查启动状态,确保Slave_IO_Running
和Slave_SQL_Running
都显示Yes
,表示复制正常运行。
SHOW SLAVE STATUS\G;
7.测试主从复制:
-
在主服务器上进行一些写操作(插入、更新、删除)。
-
在从服务器上查询相同的数据,确保数据同步正常。
主从复制配置完成后,主服务器的数据更改将自动同步到从服务器,从服务器可以用于读操作,以提高性能和可用性。请确保定期备份数据以防止数据丢失,并在需要时执行维护操作。
主服务器命令:
-
SHOW MASTER STATUS;
: 显示主服务器当前的二进制日志文件名和位置。 -
RESET MASTER;
: 清除主服务器上的二进制日志文件。 -
CHANGE MASTER TO ...;
: 配置从服务器的连接参数。 -
START BINLOG;
: 启用二进制日志记录。 -
STOP BINLOG;
: 停止二进制日志记录。 -
SHOW BINLOG EVENTS;
: 显示二进制日志中的事件。 -
FLUSH LOGS;
: 刷新二进制日志文件。 -
SHOW SLAVE HOSTS;
: 显示从服务器的主机信息。
从服务器命令:
-
SHOW SLAVE STATUS;
: 显示从服务器的复制状态信息。 -
START SLAVE;
: 启动从服务器的复制进程。 -
STOP SLAVE;
: 停止从服务器的复制进程。 -
RESET SLAVE;
: 重置从服务器的复制进程。 -
CHANGE MASTER TO ...;
: 配置从服务器的连接参数。 -
SHOW SLAVE HOSTS;
: 显示主服务器的主机信息。 -
SHOW RELAYLOG EVENTS;
: 显示中继日志中的事件。 -
SHOW RELAYLOG EVENT [event_number];
: 显示特定事件的详细信息。