首页>>帮助中心>>vps服务器Mysql主从同步

vps服务器Mysql主从同步

2023/8/28 453次
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> GRANT REPLICATION SLAVE ON *.* TO

-> repluser@'%' IDENTIFIED BY '123qqq...A'; #授权主从同步用户

mysql> SHOW GRANTS FOR repluser@'%'; #确认用户权限

mysql> SHOW MASTER STATUS; #查看活跃binlog日志信息

+------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |Executed_Gtid_Set |

+------------+----------+--------------+------------------+-------------------+

| db1.000003 | 28900637 | | | |

+------------+----------+--------------+------------------+-------------------+

1 row in set (0.01 sec)

[root@server51 ~]#

[root@server51 ~]# mysqldump -hlocalhost -uroot -p'123qqq...A' -A> ab1.sql #备份已有数据

[root@server51 ~]# scp ab1.sql 192.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 ~]# systemctl restart mysqld #重启服务使配置生效

[root@server52 ~]# ls ab1.sql #确认主服务器备份数据同步成功

[root@server52 ~]# mysql -hlocalhost -uroot -p'123qqq...A' <ab1.sql #数据还原

[root@server52 ~]# mysql -hlocalhost -uroot -p'123qqq...A'#登录MySQL服务

mysql> CHANGE MASTER TO #修改主服务为

-> MASTER_HOST = "192.168.88.51", #主服务器地址

-> MASTER_USER = "repluser", #连接主服务器用户

-> MASTER_PASSWORD = "123qqq...A", #连接主服务器用户密码

-> MASTER_LOG_FILE = "db1.000003",#主服务器正在使用的binlog日志

-> MASTER_LOG_POS = 28900637; #从binlog日志什么位置开始同步

Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> START SLAVE; #启动IO/SQL线程

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW SLAVE STATUS\G #查看主从同步状态

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

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 "CREATEDATABASE msdb";

[root@server51 ~]# mysql -hlocalhost -uroot -p'123qqq...A' -e "CREATEtable msdb.user(name CHAR(20));"

[root@server51 ~]# mysql -hlocalhost -uroot -p'123qqq...A' -e "INSERTINTO msdb.user VALUES ('zhangsan');"

[root@server51 ~]# mysql -hlocalhost -uroot -p'123qqq...A' -e "SELECT* FROM msdb.user;"

+----------+

| name |

+----------+

| zhangsan |

+----------+

#server52自动同步

[root@server52 ~]# mysql -hlocalhost -uroot -p'123qqq...A' \

> -e "SELECT * FROM msdb.user;"#操作server51的过程中server52自动同步server51的新增数据

+----------+

| name |

+----------+

| zhangsan |