mysql集群安装(一主双从,主主复制)(tar.gz包安装)

前言:

上一次,使用docker安装了mysql集群,这一次使用tar包普通方法安装mysql集群。安装的版本是mysql-8.0.28-el7-x86_64.tar.gz

注意:开放3306端口,三台服务器都要开放

 firewall-cmd  --zone=public --add-port=3306/tcp --per
 firewall-cmd  --reload
 firewall-cmd  --list-all

安装步骤:

一.下载tar包

二.主数据库服务器(192.168.88.109)

 mkdir /finedo;
 rz -be;

在这里插入图片描述

解压tar包

tar -zxvf mysql-8.0.28-el7-x86_64.tar.gz

给解压好的mysql,改名

 mv mysql-8.0.28-el7-x86_64 mysql8.0

在这里插入图片描述

创建mysql用户组和用户并修改权限

groupadd mysql
useradd -r -g mysql mysql

创建存储数据文件

mkdir -p  /finedo/data/mysql
chown mysql:mysql -R /finedo/data/mysql   #赋予权限

创建my.cnf文件,一般放在/etc目录下

vim /etc/my.cnf

添加内容

[mysqld]
bind-address=0.0.0.0
#禁用替代存储引擎、严格模式,如果一个语句产生一个错误,则返回错误并且中断后续语句的执行。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port=3306
mysqlx_port = 33060
user=mysql
character_set_server=utf8mb4
#mysql 服务ID,保证整个集群环境中唯一
server-id=1
#mysql binlog 日志的存储路径和文件名
log-bin=mysql-bin
#是否只读,1 代表只读, 0 代表读写
read-only=0
#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql
#二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
# 写缓存多少次,刷一次磁盘,默认 0 表示这个操作由操作系统根据自身负载自行决定多久写一次磁盘
# 1 表示每一条事务提交都会立即写磁盘,n 则表示 n 个事务提交才会写磁盘
sync_binlog=0
#设置binlog_format格式mixed为混合模式(mixed, statement, row)
binlog_format=mixed
#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
symbolic-links=0
explicit_defaults_for_timestamp=true

basedir=/finedo/mysql8.0
datadir=/finedo/data/mysql
socket=/tmp/mysql.sock
log-error=/finedo/data/mysql/mysql.err
pid-file=/finedo/data/mysql/mysql.pid

切换到/finedo/mysql8.0/bin目录下

cd /finedo/mysql8.0/bin

执行以下命令:

./mysqld --defaults-file=/etc/my.cnf --basedir=/finedo/mysql8.0/ --datadir=/finedo/data/mysql/ --user=mysql --initialize

切换到/support-files/目录下

cd /finedo/mysql8.0/support-files/

执行:

 ./mysql.server  start

在这里插入图片描述

切换到 /finedo/mysql8.0/bin/目录下

cd /finedo/mysql8.0/bin/

执行:

 ./mysql -uroot -p

在这里插入图片描述
查看初始化密码:cat /finedo/data/mysql/mysql.err
在这里插入图片描述

执行以下代码将root密码改为123456

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

配置远程连接

use mysql;
update user set host='%' where user='root';
flush privileges;

远程可连接

在这里插入图片描述

至此,主数据库服务器安装完成。

三、安装从数据库服务(192.168.88.108)

同上:

 mkdir /finedo;
 rz -be;

在这里插入图片描述

解压tar包

tar -zxvf mysql-8.0.28-el7-x86_64.tar.gz

给解压好的mysql,改名

 mv mysql-8.0.28-el7-x86_64 mysql8.0

在这里插入图片描述

创建用户组

groupadd mysql
useradd -r -g mysql mysql

创建存储数据文件

mkdir -p  /finedo/data/mysql
chown mysql:mysql -R /finedo/data/mysql   #赋予权限

创建my.cnf文件,一般放在/etc目录下

vim /etc/my.cnf

添加内容

[mysqld]
#禁用替代存储引擎、严格模式,如果一个语句产生一个错误,则返回错误并且中断后续语句的执行。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port=3306
mysqlx_port = 33060
server_id=2
character_set_server=utf8mb4

#指定不需要同步的数据库名称
binlog-ignore-db=mysql

#开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
#log-bin=/finedo/data/mysql
log-bin=mysql-slave-bin

#是否只读,1 代表只读, 0 代表读写
read-only=1
#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql
#relay_log配置中继日志
relay_log=slave-relay-bin
#log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
#设置二进制日志使用内存大小(事务)
binlog_cache_size=10M
#设置binlog_format格式mixed为混合模式(mixed, statement, row)
binlog_format=mixed
#二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=0
#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

basedir=/finedo/mysql8.0
datadir=/finedo/data/mysql
socket=/tmp/mysql.sock
log-error=/finedo/data/mysql/mysql.err
pid-file=/finedo/data/mysql/mysql.pid

切换到/finedo/mysql8.0/bin目录下

cd /finedo/mysql8.0/bin

执行以下命令:

./mysqld --defaults-file=/etc/my.cnf --basedir=/finedo/mysql8.0/ --datadir=/finedo/data/mysql/ --user=mysql --initialize

切换到/support-files/目录下

cd /finedo/mysql8.0/support-files/

执行:

 ./mysql.server  start

在这里插入图片描述

切换到 /finedo/mysql8.0/bin/目录下

cd /finedo/mysql8.0/bin/

执行:

 ./mysql -uroot -p

在这里插入图片描述

查看初始化密码:cat /finedo/data/mysql/mysql.err
在这里插入图片描述

执行以下代码将root密码改为123456

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

配置远程连接

use mysql;
update user set host='%' where user='root';
flush privileges;

远程可连接

在这里插入图片描述

至此,一台从数据库安装成功。

下面安装第二台从数据库,步骤和上面一样,我把my.cnf文件粘贴出来:

他们的区别就是server_id=?不同,不能相同

[mysqld]
#禁用替代存储引擎、严格模式,如果一个语句产生一个错误,则返回错误并且中断后续语句的执行。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port=3306
mysqlx_port = 33060
server_id=3
character_set_server=utf8mb4

#指定不需要同步的数据库名称
binlog-ignore-db=mysql

#开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
#log-bin=/finedo/data/mysql
log-bin=mysql-slave-bin

#是否只读,1 代表只读, 0 代表读写
read-only=1
#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql
#relay_log配置中继日志
relay_log=slave-relay-bin
#log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
#设置二进制日志使用内存大小(事务)
binlog_cache_size=10M
#设置binlog_format格式mixed为混合模式(mixed, statement, row)
binlog_format=mixed
#二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=0
#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

basedir=/finedo/mysql8.0
datadir=/finedo/data/mysql
socket=/tmp/mysql.sock
log-error=/finedo/data/mysql/mysql.err
pid-file=/finedo/data/mysql/mysql.pid

接入下文,配置主从复制:

切换到主数据库服务器上(192.168.88.109):

在这里插入图片描述
创建一个用于复制的用户:

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';  
FLUSH PRIVILEGES;

‘slave’@‘%’ :replication_user是将要用于复制的用户,‘%’ 表示任何主机都可以连接,根据需要可以限制特定主机。
‘123456’: 应替换为复制用户的实际密码。
查看用户:

select user from mysql.user;

在这里插入图片描述

输入一下命令:查看:

show master status ;

在这里插入图片描述

好了,切换到从数据库(191.168.88.108)

登录数据库

进入从库,指定主库的ip、账号密码、端口、日志文件、 偏移量,mysql8.x的密码加密默认用的 caching_sha2_password方式,加上get_master_public_key来解决认证失败问题。

命令:

change master to master_host= '192.168.88.109', master_user='slave', master_port=3306, master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=157, get_master_public_key=1;

开启同步

start slave;

查看同步的状态,成功后两个running都为yes。

show slave status \G;

在这里插入图片描述
一主一从集群搭建完毕,
另一台从库配置步骤与上一致,不写了:
在这里插入图片描述
至此搭建完毕,然后测试一下。

主节点创建一个数据库,查看能不能同步到两台从节点上。

在这里插入图片描述
从节点一:
在这里插入图片描述
从节点二:
在这里插入图片描述
一主双从测试完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值