vps服务器Mysql主从同步
vps服务器Mysql主从同步
2026-01-21 09:44
id="mysql主从同步">MySQL主从同步什么是MySQL主从同步实现不同MySQL服务器之间数据实时同步的解决方案MySQL主从同步原理
MySQL主从同步搭建##将server51和server52搭建成MySQL主从结构
#分析:
server51(主服务器)
1)开启binlog日志
2)授权主从同步用户
3)备份已有数据
server52(从服务器)
1)设置serverid,可不开启binlog日志
2)还原数据(实现主从结构前保证服务器基础数据统一)
3)搭建主从关系
##server51操作
[root@server51~]#sed-rn'4,6p'/etc/my.cnf#确保启用binlog日志
[mysqld]
log_bin=/mylog/db1
server_id=51
[root@server51~]#ls/mylog/#查看binlog日志文件
[root@server51~]#mysql-hlocalhost-uroot-p'123qqq...A'#登录MySQL服务
mysql>GRANTREPLICATIONSLAVEON*.*TO
->repluser@'%'IDENTIFIEDBY'123qqq...A';#授权主从同步用户
mysql>SHOWGRANTSFORrepluser@'%';#确认用户权限
mysql>SHOWMASTERSTATUS;#查看活跃binlog日志信息
+------------+----------+--------------+------------------+-------------------+
|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|
+------------+----------+--------------+------------------+-------------------+
|db1.000003|28900637||||
+------------+----------+--------------+------------------+-------------------+
1rowinset(0.01sec)
[root@server51~]#
[root@server51~]#mysqldump-hlocalhost-uroot-p'123qqq...A'-A>ab1.sql#备份已有数据
[root@server51~]#scpab1.sql192.168.88.52:/root#同步备份文件
##server52操作
[root@server52~]#vim/etc/my.cnf#修改MySQL主配置文件
[root@server52~]#sed-rn'4,5p'/etc/my.cnf
[mysqld]
server_id=52#设置serverid
[root@server52~]#systemctlrestartmysqld#重启服务使配置生效
[root@server52~]#lsab1.sql#确认主服务器备份数据同步成功
[root@server52~]#mysql-hlocalhost-uroot-p'123qqq...A'
[root@server52~]#mysql-hlocalhost-uroot-p'123qqq...A'#登录MySQL服务
mysql>CHANGEMASTERTO#修改主服务为
->MASTER_HOST="192.168.88.51",#主服务器地址
->MASTER_USER="repluser",#连接主服务器用户
->MASTER_PASSWORD="123qqq...A",#连接主服务器用户密码
->MASTER_LOG_FILE="db1.000003",#主服务器正在使用的binlog日志
->MASTER_LOG_POS=28900637;#从binlog日志什么位置开始同步
QueryOK,0rowsaffected,2warnings(0.00sec)
mysql>STARTSLAVE;#启动IO/SQL线程
QueryOK,0rowsaffected(0.00sec)
mysql>SHOWSLAVESTATUS\G#查看主从同步状态
***************************1.row***************************
Slave_IO_State:Waitingformastertosendevent
Master_Host:192.168.88.51
Master_User:repluser
Master_Port:3306
Connect_Retry:60
Master_Log_File:db1.000003
Read_Master_Log_Pos:28900637
Relay_Log_File:server52-relay-bin.000002
Relay_Log_Pos:314
Relay_Master_Log_File:db1.000003
Slave_IO_Running:Yes#IO线程正常工作
Slave_SQL_Running:Yes#SQL线程正常工作
...
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0
Last_SQL_Error:
mysql>exit
Bye
[root@server52~]#ls/var/lib/mysql/master.info
##测试主从同步
#server51执行写操作
[root@server51~]#mysql-hlocalhost-uroot-p'123qqq...A'-e"CREATEDATABASEmsdb";
[root@server51~]#mysql-hlocalhost-uroot-p'123qqq...A'-e"CREATEtablemsdb.user(nameCHAR(20));"
[root@server51~]#mysql-hlocalhost-uroot-p'123qqq...A'-e"INSERTINTOmsdb.userVALUES('zhangsan');"
[root@server51~]#mysql-hlocalhost-uroot-p'123qqq...A'-e"SELECT*FROMmsdb.user;"
+----------+
|name|
+----------+
|zhangsan|
+----------+
#server52自动同步
[root@server52~]#mysql-hlocalhost-uroot-p'123qqq...A'\
>-e"SELECT*FROMmsdb.user;"#操作server51的过程中server52自动同步server51的新增数据
+----------+
|name|
+----------+
|zhangsan|