Mysql主从同步

简介

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

  • 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
  • 提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
  • 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

准备工作

机器准备

准备至少2台机器

  • 192.168.52.136 主服务器
  • 192.168.52.130 从服务器

安装mysql

  • docker命令安装
    下面安装命令的 –net=host 必须指定,不然从节点docker容器里mysql无法访问到主节点的网络。
#创建目录存储Mysql挂载文件
mkdir -p  /docker/mysql/data /docker/mysql/logs /docker/mysql/conf
#构建并启动mysql
docker run -d \
-p 3306:3306 \
--name mysql \
--restart=always \
#容器就和宿主机共用网络
--net=host \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-v /docker/mysql/logs:/logs \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
  • yum安装
    配置比较多,就不影响大家阅读了,自行百度吧。。

数据准备

创建一个测试用的数据库和表.

create database test;
use test;
CREATE TABLE test (name varchar(20), age int) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

主从同步配置

修改my.cnf文件,

  • docker安装的话,文件是你通过-v命令挂载在宿主机的路径,例如 -v /docker/mysql/conf:/etc/mysql/conf.d,则my.cnf则在/docker/mysql/conf下面,默认是没有,需要手动创建 )
  • yum安装路径是/etc/my.cnf

主数据库

1.my.cnf文件

[mysqld]
#服务的唯一Id
server-id=136
#开启log-bin二进制日志文件
log-bin=/var/lib/mysql/mysql-bin
#需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
binlog-do-db=test
#这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
log-slave-updates=1 
#跳过错误,继续执行复制操作(可选)
slave-skip-errors=1

2.重启mysql

#重启mysql,如果是docker安装则是 docker restart mysql.
service mysqld restart

3.得到binlog日志文件名和偏移量

在主数据执行下面的sql语句

show master status;

(此处记住File名称和Position值,后面从服务器配置时需要用到)
在这里插入图片描述

4.给用户分配同步的权限

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456';

从数据库

1.my.cnf文件

[mysqld]
server-id=132

2.重启mysql

#重启mysql,如果是docker安装则是 docker restart mysql.
service mysqld restart

3.配置主数据库配置信息

下面都是sql语句

#1.停止slave
stop slave;
#2.配置主节点的host和同步数据用的账号信息,包括同步文件的名称和偏移量
change master to  master_host='192.168.52.136',
master_user='root',master_password='123456',master_port=3306,
master_log_file='mysql-bin.000001', master_log_pos=154;
#3.启动slave
start slave
#4.查看slave服务的状态
show slave status
属性描述
master_host主节点的ip地址
master_user同步数据的用户
master_password密码
master_log_file指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos从哪个 Position 开始读,即上文中提到的 Position 字段的值

执行完show slave status命令看到Slave_IO_Running和Slave_SQL_Running这2个为YES表示配置成功了。
在这里插入图片描述

测试

在主数据库上面添加修改删除数据,如果都能够同步到从数据库,测试已经完成了。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL主从同步是一种数据复制机制,用于将一个MySQL数据库实例中的数据自动复制到其他MySQL数据库实例,从而实现数据的备份、负载均衡和故障恢复等功能。 在主从同步中,一个MySQL实例被配置为主服务器(Master),而其他实例被配置为从服务器(Slave)。主服务器负责接收和处理客户端的写操作,然后将这些操作记录到二进制日志(Binary Log)。从服务器连接到主服务器,并通过读取主服务器的二进制日志来复制这些操作。从服务器将这些操作应用到自己的数据上,以保持与主服务器数据的一致性。 配置MySQL主从同步需要进行以下步骤: 1. 确保主服务器和从服务器之间可以互相通信。 2. 在主服务器上开启二进制日志功能,并配置二进制日志文件的位置和名称。 3. 在主服务器上创建一个用于复制的用户,并为该用户授予复制权限。 4. 在从服务器上配置复制参数,包括指定主服务器的IP地址、连接用户名和密码等。 5. 启动从服务器,并连接到主服务器进行复制。 6. 监控主从同步过程,确保数据的一致性和同步性。 需要注意的是,在配置主从同步时,需要考虑网络延迟、带宽和硬件性能等因素,以确保同步过程的效率和稳定性。另外,主从同步只能复制数据更改操作(如插入、更新、删除),而不能复制结构变更操作(如创建表、修改表结构)。如果需要同步结构变更,可以使用其他工具或方法来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皓亮君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值