这是我们在生产环境中最常用的实时mysql数据同步方案,更像是一种“热备份”或“容灾”,而不仅仅是备份。它能保证备服务器几乎拥有主服务器的实时数据。
核心原理: 主服务器将数据变更写入二进制日志 (Binary Log),备服务器读取这个日志并重放这些操作,从而保持数据同步。
适用场景: 读写分离、数据库容灾、7x24高可用性。注意: 它可以防止服务器硬件故障,但无法防止误删除(因为误删除操作也会被同步到备库)。
配置步骤:
-
确保服务器网络互通
-
主从服务器之间可以互相 Ping 通。
-
确保备服务器可以通过网络访问主服务器的 MySQL 端口(默认 3306)。
-
-
主服务器配置
-
编辑主服务器的 MySQL 配置文件
my.cnf(Linux 通常在/etc/my.cnf或/etc/mysql/my.cnf.d/):[mysqld] # 启用二进制日志 log-bin=mysql-bin # 设置一个唯一的服务器ID,主从不能重复 server-id=1
-
重启 MySQL 服务使配置生效。
-
登录主库 MySQL,创建用于复制的用户并授权:
CREATE USER 'repl'@'备服务器IP' IDENTIFIED BY 'StrongPassword123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'备服务器IP'; FLUSH PRIVILEGES;
CREATE USER 'repl'@'备服务器IP' IDENTIFIED BY 'StrongPassword123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'备服务器IP'; FLUSH PRIVILEGES; -
查看主库状态,记录下
File和Position 的值,后续配置从库会用到:SHOW MASTER STATUS;

-
-
备服务器配置
-
编辑备服务器的 MySQL 配置文件
my.cnf:[mysqld] # 可以不用开启二进制日志,除非它自己也作为其他库的主库 # log-bin=mysql-bin # 设置一个唯一的服务器ID server-id=2
-
重启 MySQL 服务。
-
登录备库 MySQL,执行命令配置主从连接:
CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='repl', MASTER_PASSWORD='StrongPassword123!', MASTER_LOG_FILE='mysql-bin.000001', -- 替换为上面SHOW MASTER STATUS得到的File值 MASTER_LOG_POS=154; -- 替换为上面SHOW MASTER STATUS得到的Position值
-
启动复制进程:
START SLAVE;

-
检查从库状态,查看
Slave_IO_Running和Slave_SQL_Running是否都为Yes:SHOW SLAVE STATUS\G

注意:提示账号密码不对,
这个错误是因为 MySQL 8.0 默认使用了新的认证插件
caching_sha2_password,它要求使用安全连接(SSL),或者密码通过加密通道传输。以下是几种解决方案:解决方法:在从库配置复制时启用 SSL
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='8.163.6.175', MASTER_USER='repl', MASTER_PASSWORD='YourPassword', MASTER_PORT=3306, MASTER_SSL=1, -- 启用 SSL MASTER_SSL_VERIFY_SERVER_CERT=0, -- 不验证服务器证书(如无正式证书) GET_MASTER_PUBLIC_KEY=1; -- 获取公钥用于认证 START SLAVE;
注意:提示从节点的 server-id 相同,这是因为从节点添加了 配置,没重启数据库的原因:
解放方法:重新mysql服务

注意:提示数据库已经存在
解决方法:把从服务中的数据删除
-
896

被折叠的 条评论
为什么被折叠?



