MySQL - 主从复制
文章目录
- 1.准备两台机器,安装配置好mysql
- 2.在master上开启二进制日志
- 3.统一2台服务器的基础数据
- 4.清除所有的二进制日志
- 5.在master上新建一个授权用户,给slave来复制二进制日志
- 6.在slave上配置master.info的信息
- 7.查看slave是否配置成功
- 8.启动slave
- 9.测试主从复制的效果
原理
可以将MySQL服务器分为主库和从库两种身份。MySQL从库同步主库的数据,MySQL主库将数据同步给从库。
MySQL过程如下所示
MySQL主从同步实现主要有以下三个过程:
1.当有数据更改语句执行时,MySQL要在更新数据的同时,写入二进制日志,将数据修改的内容记录到日志当中
2.MySQL从库上会运行这一些 I/O进程,I/O进程负责监控主库上的二进制日志,当发现修改时,会立即同步到自身的中继日志中(Relay Log)
3.MySQL从库上还会运行一个SQL进程,SQL进程负责监视自身的中继日志,当发现自身的中继日志发生改变时,立即将该中继日志改变对应更改操作写入自身的数据库。
1.准备两台机器,安装配置好mysql
此处省略mysql的安装配置的步骤
主 master:192.168.225.17
从 slave:192.168.225.18
2.在master上开启二进制日志
修改配置文件:vim /etc/my.cnf
[mysqld]
log_bin
server_id = 1
123
修改配置之后,重启服务:service mysqld restart
3.统一2台服务器的基础数据
在master上的操作
导出master的数据库:mysqldump -uroot -p’123456’ --all-databases >all_db.sql
上传给slave:scp all_db.sql root@192.168.225.18:/root
在slave上的操作
导入到slave的数据库中:mysql -uroot -p’123456’ <all_db.sql
4.清除所有的二进制日志
在master上的操作
清除二进制日志:reset master;
查看使用的二进制日志:show master status;
第六步的配置需要用到二进制日志的相关信息
5.在master上新建一个授权用户,给slave来复制二进制日志
grant replication slave on . to ‘syq’@‘192.168.225.%’ identified by ‘123456’;
6.在slave上配置master.info的信息
CHANGE MASTER TO MASTER_HOST=‘192.168.225.17’ ,
MASTER_USER=‘syq’,
MASTER_PASSWORD=‘123456’,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘master-bin.000001’,
MASTER_LOG_POS=154;
7.查看slave是否配置成功
查看:show slave status\G;
8.启动slave
开启:start slave;
查看:show slave status\G;
看IO线程和SQL线程是不是都是yes,都是yes就表示slave启动成功了
如果Slave_IO_Running:No / Connecting,执行下面的操作
stop slave;
reset slave all;
重新配置master.info,即重做第六步
如果Slave_SQL_Running:No / Connecting,执行下面的操作
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G;
如果不能解决,还可以查看报错信息,具体问题具体分析
9.测试主从复制的效果
在主上面执行建库建表插入数据等操作,看从上面是否同步了这些数据
master上的操作
slave上的操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!