Mysql双主双从

1.安装Mysql

1.1 查看linux版本

cat /etc/os-release

在这里插入图片描述
Kylin Linux(国产麒麟)是中国自主开发的操作系统

1.2 下载Mysql安装包

Mysql Download

因为Kylin Linux V10是基于CentOS 8开发的, 所以选择Red Hat Enterprise Linux 8 / Oracle Linux 8 (x86, 64-bit), RPM Bundle

在这里插入图片描述

1.3 上传并解压

上传到指定目录, 例如: /opt/mysql, 解压文件

tar xvf mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar

1.4 安装Mysql

rpm -ivh mysql-community-common-8.0.35-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.35-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.35-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.0.35-1.el8.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.35-1.el8.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.35-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.0.35-1.el8.x86_64.rpm

1.5 编辑端口号

vi /etc/my.cnf

修改端口号

# 端口号
port=33061 

1.6 Mysql启动命令

systemctl start mysqld    #启动 MySQL

其他命令

systemctl start mysqld    #启动 MySQL
systemctl stop mysqld     #关闭 MySQL
systemctl restart mysqld  #重启 MySQL
systemctl status mysqld   #查看 MySQL 状态
systemctl enable mysqld   #设置开机自启

1.7 更新密码

1.查看初始密码

cat /var/log/mysqld.log | grep root@localhost

2.登录mysql

mysql -u root -p

3.更新密码

alter user root@localhost identified by 'MyS3cure!P@ssw0rd';

4.查看用户

SELECT User, Host FROM mysql.user;

2.搭建Mysql主从复制

  • 主:192.166.16.74
  • 从:192.166.16.29

2.1 搭建Master主服务器

2.1.1 修改mysql配置文件

vim /etc/my.cnf
server-id=1
log-bin=master-bin
binlog_format = MIXED
log-slave-updates=true
  • server-id: 每台MySQL服务器必须有一个唯一的ID。可以设置为任意数字,但需确保唯一。
  • log-bin: 启用二进制日志并指定日志文件的前缀。
  • binlog_format=MIXED表示MySQL将根据具体情况动态选择使用基于语句的复制还是基于行的复制。这种模式在大多数应用场景中提供了性能和准确性之间的良好平衡。

2.1.2 重启Mysql服务

systemctl restart mysqld

2.1.3 创建Slave用户, 并授权

# 创建slave用户
CREATE USER 'replica'@'%' IDENTIFIED BY 'MyS3cure!P@ssw0rd';
# 授权
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
# 刷新权限
FLUSH PRIVILEGES;

2.1.4 查看主服务器当前状态

show master status

在这里插入图片描述

2.2 搭建Slave从服务器

2.2.1 修改mysql配置文件

vim /etc/my.cnf
# 修改,注意id与Master的不同,两个Slave的id也要不同
server-id = 2           
# 添加,开启中继日志,从主服务器上同步日志文件记录到本地
relay-log=relay-log-bin           
# 添加,定义中继日志文件的位置和名称
relay-log-index=slave-relay-bin.index   
relay_log_recovery = 1

2.2.2 重启Mysql服务

systemctl restart mysqld

2.2.3 配置主从同步

CHANGE MASTER TO MASTER_HOST='192.210.16.238',
MASTER_USER='replica',
MASTER_PASSWORD='MyS3cure!P@ssw0rd',
MASTER_LOG_FILE=从主库中查询,
MASTER_LOG_POS=从主库中查询,
MASTER_PORT=33061;

2.2.4 启动Slave线程

start slave;                #启动同步,如有报错执行 reset slave;
show slave status\G         #查看 Slave 状态

#确保 IO 和 SQL 线程都是 Yes,代表同步正常
Slave_IO_Running: Yes       #负责与主机的io通信
Slave_SQL_Running: Yes      #负责自己的slave mysql进程

在这里插入图片描述

3.搭建Mysql主从复制

一个主机Master1用于处理所有的写请求,它的从机Slave1和另一台主机Master2还有它的从机Slave2负责所有的读请求。当Master1主机宕机后,Master2主机负责写请求,Master1、Master2互为备份机。
在这里插入图片描述

编号角色IP
1Master1192.166.16.74
2Slave1192.166.16.29
3Master2192.166.16.166
4Slave2192.166.16.111

3.1 双Master机配置文件修改

3.1.1 Master1配置

vim /etc/my.cnf

my.cnf增加的内容:

#主服务器唯一ID (与 Master2,...... MasterN 的不同点)
server-id=1
#启用二进制日志, 日志文件的前缀为mysql-bin
log-bin=mysql-bin

#从库的中继日志,主库日志写到中继日志,中继日志再重做到从库
# relay-log=myslql-relay-bin

# binlog保留时间7天
expire_logs_days=7

# binlog 文件的大小
max_binlog_size=1G

#设置logbin格式。取值:STATEMENT (默认),ROW,MIXED
binlog_format=ROW

# 该从库是否写入二进制日志。如果需要成为多主则可启用。只读可以不需要
log-slave-updates=1

# 该服务器自增列的初始值。(与 Master2,...... MasterN 的不同点)
auto-increment-offset=1

# 该服务器自增列增量。其默认值是1, 取值范围是1 .. 65535
auto-increment-increment=2


# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

#设置需要复制的数据库(可选)。
# 如果要配置了此项,则 mysql 只复制下面指定的数据库。
# 如果不配置此项,则 mysql 默认复制所有的数据库(不包含 binlog-ignore-db 的数据库)
#binlog-do-db=需要复制的主数据库1
#binlog-do-db=需要复制的主数据库2

3.1.2 Master2配置

vim /etc/my.cnf

my.cnf增加的内容:

#主服务器唯一ID。(与 Master1,Master3,...... MasterN 的不同点)
server-id=3
#启用二进制日志
log-bin=mysql-bin

#从库的中继日志,主库日志写到中继日志,中继日志再重做到从库
# relay-log=myslql-relay-bin

# binlog保留时间7天
expire_logs_days=7

# binlog 文件的大小
max_binlog_size=1G

#设置logbin格式。取值: STATEMENT (默认),ROW,MIXED
binlog_format=ROW

# 双主模式中,log-slave-updates必须配置。因为作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates=1

# 该服务器自增列的初始值。取值范围是1 .. 65535
auto-increment-offset=2

# 该服务器自增列增量。(与 Master1,Master 3, ...... MasterN 的不同点)
auto-increment-increment=2

# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

#设置需要复制的数据库(可选)
# 如果要配置了此项,则 mysql 只复制下面指定的数据库。
# 如果不配置此项,则 mysql 默认复制所有的数据库(不包含 binlog-ignore-db 的数据库)
#binlog-do-db=需要复制的主数据库1
#binlog-do-db=需要复制的主数据库2

3.1.2 重启Mysql,使配置生效

systemctl restart mysqld.service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值