双主双从
- 1.安装Mysql
- 1.1 查看linux版本
- 1.2 下载Mysql安装包
- 1.3 上传并解压
- 1.4 安装Mysql
- 1.5 编辑端口号
- 1.6 Mysql启动命令
- 1.7 更新密码
- 2.搭建Mysql主从复制
- 2.1 搭建Master主服务器
- 2.1.1 修改mysql配置文件
- 2.1.2 重启Mysql服务
- 2.1.3 创建Slave用户, 并授权
- 2.1.4 查看主服务器当前状态
- 2.2 搭建Slave从服务器
- 2.2.1 修改mysql配置文件
- 2.2.2 重启Mysql服务
- 2.2.3 配置主从同步
- 2.2.4 启动Slave线程
- 3.搭建Mysql主从复制
- 3.1 双Master机配置文件修改
- 3.1.1 Master1配置
- 3.1.2 Master2配置
- 3.1.2 重启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 |
---|---|---|
1 | Master1 | 192.166.16.74 |
2 | Slave1 | 192.166.16.29 |
3 | Master2 | 192.166.16.166 |
4 | Slave2 | 192.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