mysql主从同步
![image-20240630184934967]()
1.1 介绍
# 什么是mysql主从同步
MySQL 主从复制(Master-Slave Replication)是一种数据复制技术,用于在多个数据库服务器之间的数据同步。在主从复制架构中,一个服务器被设置为主服务器(Master),充当数据源,其他服务器被设置为从服务器(Slave),用来复制主服务器的数据。
# 主从同步的优点
# 1.高可用性:
通过将主数据库的数据复制到一个或多个从数据库,可以在主数据库故障时快速切换到从数据库,以实现系统的高可用性和容错能力,从而保证系统的持续可用性。
# 2.提高整体性能和吞吐量:
通过将读请求分散到多个从服务器上进行处理,从而减轻了主服务器的负载压力,提高数据库系统的整体性能和吞吐量。主服务器主要负责写操作,而从服务器主要负责读操作,从而分担了主服务器的压力。
# 3.数据备份和恢复:
通过主从同步,可以将主服务器上的数据异步复制到从服务器上,从而实现数据备份和灾难恢复的需求。在应对意外数据丢失、灾难恢复或误操作时,可以使用从服务器作为数据的备份源来进行数据恢复。
1.2 搭建步骤
# 1.准备两台服务器(这里以docker容器作为服务器)
-主:121.37.184.182 33306
-从:121.37.184.182 33307
# 2.创建文件夹,做目录映射
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
touch /home/mysql/my.cnf
mkdir /home/mysql1
mkdir /home/mysql1/conf.d
mkdir /home/mysql1/data/
touch /home/mysql1/my.cnf
# 3.配置mysql配置文件(十分重要)
# 主配置
[mysqld]
server-id=1 # id唯一
log-bin=mysql-bin # 启用二进制日志
secure-file-priv= /var/lib/mysql
binlog-ignore-db=mysql # 表示忽略的库名
binlog-do-db=mytest # 表示需要执行同步的库名(可以写多个)
binlog-do-db=mytest1
# 从配置
[mysqld]
server-id=2
relay-log=relay-bin
read-only=1 # 只读
# 4.启动mysql容器,并做端口和目录映射
docker run -di -v /root/mysql/data/:/var/lib/mysql -v /root/mysql/my.cnf:/etc/mysql/my.cnf -v /root/mysql/conf.d:/etc/mysql/conf.d -p 33306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql:8
docker run -di -v /root/mysql1/data/:/var/lib/mysql -v /root/mysql1/conf.d:/etc/mysql/conf.d -v /root/mysql1/my.cnf:/etc/mysql/my.cnf -p 33307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql:8
# 5.在从库设置主库地址以及同步地址
CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.37.184.182',
SOURCE_USER='root',
SOURCE_PASSWORD='123456',
SOURCE_LOG_FILE='mysql-bin.000004',
SOURCE_PORT=33306,
SOURCE_LOG_POS=1548;