目录
一、引言
MySQL数据库作为全球广泛使用的开源关系型数据库管理系统,其高效性和可靠性在很大程度上得益于其强大的数据复制功能。其中主从复制时一种关键的高可用和数据冗余技术,通过将主服务器上的所有更改的数据实时或者近乎实时地复制到从服务器上,确保了数据的安全备份。
二、主从复制的概念
主从复制的核心是“主库写入,从库读取”,主库负责处理所有的写操作,并生成binlog日志,从库接收并执行这些binlog中的变更操作,从而达到与主库的数据同步。
主服务器启用二进制日志记录功能,会记录所有对数据库进行更改的SQL语句以及相关的事务信息,每个更改事务在主库上执行时都会记录为一个事件,并按照顺序排列在binlog中。
从服务器接收到主服务器的binlog内容后,会将其存储在本地的relay log中,从服务器上的SQL线程负责读取relay log中的事件,并在本地按照相同的顺序执行这些事件,从而实现与主服务器的数据同步。
三、主从复制的配置
3.1 主机配置
第一步:my.ini文件配置,配置server-id、开启二进制日志log-bin
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 13306
# 设置mysql的安装目录
basedir=G:\program_files\mysql-8.0.27-winx64-master
# 设置mysql数据库的数据的存放目录
datadir=G:\program_files\mysql-8.0.27-winx64-master\data
#datadir=C:\ProgramData\MySQL\data
# 允许最大连接数
max_connections=2000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 忽略密码
# skip-grant-tables
#设置一个唯一的Server ID
server-id=1
# 启用二进制日志,设置其前缀名
log-bin=mysql-bin
# 通常使用行格式记录binlog,以支持更复杂的SQL语句和事务
binlog_format=row
第二步:初始化数据库
mysqld --initialize-insecure
第三步:安装数据库服务
mysqld --install mysql_master
第四步:启动服务
net start mysql_master
第五步:登录并设置密码,因为mysqld --initialize-insecure初始的时候密码为空,输密码时,直接回车
mysql -u root -p -P13306
修改密码:
alter user 'root'@'localhost' identified by '123456';
第六步:创建复制用户
create user 'replication_user'@'%' identified by '123456';
grant replication slave on *.* to 'replication_user'@'%';
flush privileges;
3.2 从机配置
第一步:my.ini文件配置,配置server-id、启用relay log恢复模式
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 13307
# 设置mysql的安装目录
basedir=G:\program_files\mysql-8.0.27-winx64-slave
# 设置mysql数据库的数据的存放目录
datadir=G:\program_files\mysql-8.0.27-winx64-slave\data
#datadir=C:\ProgramData\MySQL\data
# 允许最大连接数
max_connections=2000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 忽略密码
# skip-grant-tables
server-id=2 #设置从库唯一ID
relay_log_recovery=ON #可选,启用relay log恢复模式
第二步到第五步同上;
第六步:启动从机并连接主服务器
CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_PORT='13306',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='the_master_binlog_file_from_show_command', # 替换为主服务器的日志文件名
MASTER_LOG_POS=the_master_log_position; # 替换为主服务器的日志位置点
四、主从复制的应用场景
主从复制的应用场景,
一是数据备份与恢复,在主库出现故障时,可以迅速启用从库提供服务,降低业务中断风险;
二是读写分离,将读密集型操作分发至从库,减轻主库压力,提升系统整体性能;
三是水平扩展,随着业务增长,可通过添加更多的从库来分散读负载,实现水平扩展。
1224

被折叠的 条评论
为什么被折叠?



