MySQL主从复制
步骤简要
1.修改my.cnf 添加二进制日志和服务id 每个服务器id必须不同 2.启动mysql 3.进入查看主服务器状态和偏移量 show master status 4.创建一个用于slave和master通信的用户账号 #MySQL8.0 分成两步实现 mysql> create user repluser@'10.0.0.%' identified by '123456'; mysql> grant replication slave on *.* to repluser@'10.0.0.%'; grant replication slave on *.* 'name'@'ip.%' identified by 'passwd' 5.重新查看偏移量 是否有变化 有变化的话重置偏移量 reset master 6.进入从数据库设置从节点 change master to master_host="" master_port="" master_user="" master_password="" master_log_file="" master_log_pos="" 7.启动从节点 start slave 8.进入数据库查看状态 show slave status \G; io线程和sql线程都是yes
主10.0.0.19 从10.0.0.41
主节点
[root@mmaster~]#cat /etc/my.cnf [mysqld] server-id=19 log_bin #写了路径重启报错 不知道原因 ,改成mysql或者client没有问题 [root@mmaster~]#systemctl restart mysqld.service [root@mmaster~]#mysql mysql> show master logs; #查看------------------------------------- +--------------------+-----------+-----------+ | Log_name | File_size | Encrypted | +--------------------+-----------+-----------+ | mmaster-bin.000001 | 179 | No | | mmaster-bin.000002 | 156 | No | +--------------------+-----------+-----------+ 2 rows in set (0.00 sec) mysql> flush logs; #刷新日志------------------------------------- Query OK, 0 rows affected (0.01 sec) mysql> mysql> mysql> show master logs; +--------------------+-----------+-----------+ | Log_name | File_size | Encrypted | +--------------------+-----------+-----------+ | mmaster-bin.000001 | 179 | No | | mmaster-bin.000002 | 205 | No | | mmaster-bin.000003 | 156 | No | +--------------------+-----------+-----------+ 3 rows in set (0.00 sec) mysql> reset master; #清除所有二进制日志,从头开始------------------------------------- Query OK, 0 rows affected (0.03 sec) mysql> show master status; #查看详细的二进制日志 +--------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +--------------------+----------+--------------+------------------+-------------------+ | mmaster-bin.000001 | 156 | | | | +--------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) #完全备份 [root@mmaster~]#mysqldump -A -F --master-data=1 --single-transaction > /data/all.sql #创建复制用户并授权 mysql> create user repluser@'10.0.0.%' identified by "123456"; Query OK, 0 rows affected (0.02 sec) mysql> grant replication slave on *.* to repluser@"10.0.0.%"; Query OK, 0 rows affected (0.01 sec) #将备份复制到从节点 [root@mmaster~]#scp /data/all.sql 10.0.0.41:/data
从节点
#配置从节点 [root@mslave~]#cat /etc/my.cnf [mysqld] server-id=41 read-only [root@mslave~]#systemctl restart mysqld [root@mslave~]#vim /data/all.sql CHANGE MASTER TO MASTER_HOST='10.0.0.19', MASTER_USER='repluser', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=156; #从节点还原备份 mysql> set sql_log_bin=0; mysql> source /data/all.sql; mysql>set sql_log_bin=1; #从节点开始复制 mysql> start slave;
mysql> show slave status\G
.....
.....
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0 #复制的延迟时间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了