MySQL主从同步(复制)操作实战记录
作者:Harvey66
MySQL主从同步是一种常见的数据库复制策略,用于提升系统的可扩展性、容错性和数据安全性,这篇文章主要介绍了MySQL主从同步(复制)操作实战的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
首先得有2台服务器,其中一台上的MySQL为主库,另外一台上的MySQL为从库
主库操作
1、修改配置
# Master - 主从同步设置,需要开记binlog server-id = 1 # 要唯一 # bin log 位置 log_bin = /var/lib/mysql/mysql-bin
重启 MySQL 让配置生效
2、创建用于从库登陆的用户
# 创建用户 CREATE USER 'slave1'@'x.x.x.x' IDENTIFIED BY 'password'; # 赋予用户slave1复制权限 GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'x.x.x.x';
x.x.x.x是从库服务器IPslave1可以改成自己喜欢的名称password设置你喜欢的登陆密码
3、将数据导出
- 锁表-只读
FLUSH TABLES WITH READ LOCK;
- 显示 master 信息
SHOW MASTER STATUS;

记住红色位置的内容,从库需要用到
- 将数据导出
mysqldump -u root -p --all-databases --master-data > dbdump.sql
- 解开表(可读可写)
UNLOCK TABLES;
4、将dbdump.sql文件发送到从库的主机上
以你喜欢的方式就行,能传到从库的主机就行
从库操作
1、修改配置
# slave - 主从同步设置,需要开记binlog server-id = 2 # 要唯一 # binlog 位置 log_bin = /var/lib/mysql/mysql-bin
重启 MySQL 让配置生效
2、导入从主库第三步导出的数据
mysql -u root -p < /home/ubuntu/dbdump.sql
3、建立与主库的连接
- 停止复制状态
STOP SLAVE;
- 与主库建立连接,从而同步
CHANGE MASTER TO MASTER_HOST='b.b.b.b', MASTER_PORT=8036, MASTER_USER='slave1', MASTER_PASSWORD='sync900966', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=3784;
MASTER_HOST - 主库服务器IPMASTER_USER - 主库操作第二步设置的用户MASTER_PASSWORD - 主库操作第二步设置的密码MASTER_LOG_FILE - 主库操作第三步 master 信息 - FileMASTER_LOG_POS - 主库操作第三步 master 信息 - Position
至此不出意数据应该可以同步了
主从复制有三种同步方式
- 异步复制:主库执行完事务后,不等待从同库确认,这是默认的
- 半异步复制:主库执行完事务后,至少等到有一个从同库确认
- 同步复制:主库执行完事务后,等到所有从同库确认
问题排查
- 不要使用域名,我刚开始使用域名,结果同步不了
- 在主库授予登陆IP要和从库IP一致
- server-id 从库与主库不能相同且要唯一
可能用到命令
- 查看从服务器(Slave)复制状态
SHOW SLAVE STATUS;
如果正常的话
Slave_IO_State: Waiting for master to send event,如果有错误,也会在这个字段提示
xxx_xx_Running 这几个字段正常是 Yes
- 查看主服务器(Master)状态
SHOW MASTER STATUS;
- 停止复制线程
STOP SLAVE;
- 启动复制线程
START SLAVE;
- 显示线程列表
SHOW PROCESSLIST;
总结
到此这篇关于MySQL主从同步(复制)操作的文章就介绍到这了,更多相关MySQL主从同步(复制)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
