MySQL主从同步教程

发表于 2020-04-22  7.18k 次阅读


鸡蛋不能放一个篮子,兔子都有3个窝。我们的生产数据库更不可能一个数据库,数据是无价的。但是多个数据库,数据又不一致怎么办?

本文就为大家带来,数据库自动同步数据的教程

演示环境:Centos 7 丨 MySQL 5.7.28

俩台安装好MySQL数据库的服务器

如果不会安装MySQL请参考下方教程

一台服务器编译安装多个MySQL数据库

第一台MySQL地址:172.20.12.109

第二台MySQL地址:172.20.12.110

一、配置主库

1.修改主库配置文件(在my.cnf)

vim my.cnf
#加入以下配置
server-id=7777
#唯一ID,主从必须唯一值
log-bin=/109/mysql/binlog
#开启二进制日志,路径必须是MySQL有读写权限
slave-skip-errors=1
#遇到错误继续复制操作
MySQL主从同步教程插图

2.赋权远程访问权限

flush privileges;
#刷新权限
grant replication slave on *.* to 'root'@'%' identified by '123';
#赋于远程访问权限
MySQL主从同步教程插图(1)

3.重启 MySQL

service mysqld restart
#重启MySQL

注:必须开启MySQL的相应端口或者关闭防火墙
systemctl stop firewalld.service
#关闭防火墙命令

4.查看主库的日志名和唯一值

show master status;
#查看
#注意图中的日志名和唯一值,很重要!一会在配置从库需要
MySQL主从同步教程插图(2)

二、配置从库

1.修改从库配置文件(在my.cnf)

vim my.cnf
#加入以下配置
server-id=7778
#唯一ID,主从必须唯一值
log_slave_updates = 1
binlog_format = mixed
relay_log = /109/mysql3308/binlog/mysql-relay-bin
#relay中继日志存储的位置
#即:存储主库的binlog event主库binlog:记录主库发生过的修改事件
relay_log_index = /109/mysql3308/binlog/mysql-relay-bin.index
#relay中继日志索引存储的位置(同relay-log)
:wq
保存退出
MySQL主从同步教程插图(3)

2.重启MySQL

service mysqld restart
#重启MySQL

注:必须开启MySQL的相应端口或者关闭防火墙
systemctl stop firewalld.service
#关闭防火墙命令

3.从库接入主库

change master to master_host='172.20.12.109',master_user='root',master_port=3307,master_password='123',master_log_file='binlog.000001',master_log_pos=154;
   
 #以上命令建议复制修改,不要加空格,注释如下:
    #master_host='主库IP地址',
    #master_port=主库端口号,
    #master_user='主库用户',
    #master_password='主库密码',
    #master_log_file='主库日志名',
    #master_log_pos=主库的唯一值;

#一定不要忘记执行以下启动命令
start slave;
#启动slave服务
MySQL主从同步教程插图(4)

4.检查是否接入成功

show slave status\G;
#查看是否接入成功
MySQL主从同步教程插图(5)

如图,俩个Yes代表成功

三、测试同步是否正常

1.在MySQL软件里面连接主库和从库

2.在主库创建新库、新表、新数据(这个随意插入数据,方便验证是否同步)

MySQL主从同步教程插图(6)

3.现在打开从库,检查刚刚创建的库、表、数据是否同步成功

MySQL主从同步教程插图(7)

4.成功


小霜网丨一个清新文艺有趣的万能小站