【centos7】安装多个mysql8实例,搭建主从

环境 CentOS 7.9
mysql版本 mysql-8.0.33-el7-x86_64
mysql下载地址
https://downloads.mysql.com/archives/community/

在这里插入图片描述
mysql下载地址

在下载前先创建一个mysql用户,为什么要创建MySQL用户?因为解压出来的mysql文件没有任何的属组,
以及为了避免在配置、启动时MySQL不能读取某些文件,所以建议使用mysql用户来运行mysql

adduser mysql

passwd mysql # 接下来输入两次密码

切换用户

上传至服务器解压,

 su mysql

tar -xzvf mysql-8.0.33-el7-x86_64.tar.gz  
 cp -r mysql-8.0.33-el7-x86_64 ./mysql_masterA
 cp -r mysql-8.0.33-el7-x86_64 ./mysql_masterB
 cp -r mysql-8.0.33-el7-x86_64 ./mysql_slaveA
 cp -r mysql-8.0.33-el7-x86_64 ./mysql_slaveB
 cp -r mysql-8.0.33-el7-x86_64 ./mysql_slaveC
 cp -r mysql-8.0.33-el7-x86_64 ./mysql_slaveD

切换到root用户,更改两个mysql的数组为mysql用户,然后再切换回mysql用户

exit
chown -R mysql:mysql /usr/local/mysql_masterA/ /usr/local/mysql_masterB/
chown -R mysql:mysql /usr/local/mysql_slaveA/ /usr/local/mysql_slaveB/
chown -R mysql:mysql /usr/local/mysql_slaveC/ /usr/local/mysql_slaveD/


 su mysql
 

自定义配置my.cnf
masterA的my.cnf文件

 [mysqld]                              
 ### 端口号                                 
port=3306                           
                                       
### 安装目录                                
basedir=/usr/local/mysql_masterA         
                                       
### 数据存放路径                              
datadir=/usr/local/mysql_masterA/data/    
                                       
 ### 会话文件目录                              
socket=/usr/local/mysql_masterA/mysql.sock
                                       
 # 允许连接失败的最大次数                         
max_connect_errors=10                 
                                       
 # 服务端的字符集编码                           
character-set-server=utf8             
                                       
 # 默认存储引擎                              
default-storage-engine=INNODB 
default_authentication_plugin=mysql_native_password
 # 主从复制-主机1配置
# 主服务器唯一ID
server-id=1
        
# 启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置logbin格式
binlog_format=STATEMENT
# 写入操作更新二进制日志文件
log-slave-updates
# 自增长字段起始值,默认值为1,取值范围:1 ~ 65535
auto-increment-increment=1
# 自增长字段递增量,取值范围:1 ~ 65535
auto-increment-offset=1
                                       
 # 默认用户                                
 #user=mysql                            
                                       
 # 开启慢查询                               
 slow_query_log=on                     
                                       
 # 慢查询日志文件目录                           
 slow_query_log_file=/usr/local/mysql_masterA/slow-query.log


 [client]                              
 ### 连接服务端使用的端口号                         
 port=3306### 会话文件                                
 socket=/usr/local/mysql_masterA/mysql.sock
                                       
 # 默认字符集编码                             
 default-character-set=utf8 

slaveA的my.cnf	文件

[mysqld]                              
 ### 端口号                                 
port=3307                           
                                       
### 安装目录                                
basedir=/usr/local/mysql_slaveA         
                                       
### 数据存放路径                              
datadir=/usr/local/mysql_slaveA/data/    
                                       
 ### 会话文件目录                              
socket=/usr/local/mysql_slaveA/mysql.sock
                                       
 # 允许连接失败的最大次数                         
max_connect_errors=10                 
                                       
 # 服务端的字符集编码                           
character-set-server=utf8             
                                       
 # 默认存储引擎                              
default-storage-engine=INNODB 
default_authentication_plugin=mysql_native_password
lower-case-table-names=1

 # 主从复制-主机1配置
# 主服务器唯一ID
server-id=2
# 只读
read_only=1
        
# 启用二进制日志
relay-log=mysql-relay

log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置logbin格式
binlog_format=STATEMENT
# 写入操作更新二进制日志文件
log-slave-updates
# 自增长字段起始值,默认值为1,取值范围:1 ~ 65535
auto-increment-increment=1
# 自增长字段递增量,取值范围:1 ~ 65535
auto-increment-offset=1
                                       
 # 默认用户                                
 user=mysql                            
                                       
 # 开启慢查询                               
 slow_query_log=on                     
                                       
 # 慢查询日志文件目录                           
 slow_query_log_file=/usr/local/mysql_slaveA/slow-query.log


 [client]                              
 ### 连接服务端使用的端口号                         
 port=3307### 会话文件                                
 socket=/usr/local/mysql_slaveA/mysql.sock
                                       
 # 默认字符集编码                             
 default-character-set=utf8 

修改文件中的默认配置信息

 vim ./support-files/mysql.server

将文件中的所有有关basedir和datadir的配置全部修改为当前的路径,如下图

mysql.server文件

以及修改该文件中加载的MySQL配置文件路径,修改为刚才创建的my.cnf文件,如下图,修改完成后,保存退出。
mysql.server文件

同样也需要修改support-files下的另一个文件

修改support-files文件夹下的mysqld_multi.server文件

 vim ./support-files/mysqld_multi.server


#还是修改basedir和datadir两项属性,如下图所示mysqld_multi.server文件

初始化安装

切换到mysql_01的根目录

cd /home/mysql/mysql_01/
 ​
 # 初始化安装   --defaults-file表示指定初始化的配置文件    --console表示将初始化信息打印在控制台
 ./bin/mysqld --defaults-file=/usr/local/mysql_masterA/my.cnf --initialize --console --user=mysql
 ​
 # 初始化成功后,会在控制台中打印出初始化密码,大致格式如下
 root@localhost: fa356fgss,

启动服务

 # 后台启动当前mysql_01的mysql服务,还是需要去指定配置文件,因为在配置文件中我们设置了一个socket参数,只有按照这个配置文件去启动,才会按照socket配置的路径去生成,否则会自动生成在/tmp/mysql.sock,如果mysql_02也是这么生成,则会形成覆盖,在连接时造成只能连接一个服务,甚至报错。
 ./bin/mysqld_safe --defaults-file=./my.cnf &# 使用命令查看mysql服务是否启动,如下图
 netstat -nultp|grep 10085
Lost -i :port

连接数据库与修改密码

 # 通过上面可以看到mysql服务已经启动,那么就可以连接MySQL了
 ./bin/mysql --socket=./mysql.sock -uroot -p   # 输入初始密码# 修改MySQL登录密码,这儿我的修改为 root,注意末尾的结束符分号
 alter user root@localhost identified by "root";
# 关闭mysql服务
./bin/mysqladmin -uroot -p -S ./mysql.sock shutdown

#修改root用户可以从任意ip登录
use mysql;

update user set host = '%' where user = 'root';

FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

	# 在主库创建密码为Admin#2020的用户slave
 create user 'slave'@'%' identified with mysql_native_password by 'Admin#2020';

grant replication slave on *.* to 'slave'@'%';
flush privileges;

查看master状态,并记录file和position的值
show master status;

登录从库


change master to master_host='120.48.23.239',master_port=3306,master_user='slave',master_password='mysql_slaveA',master_log_file='mysql-bin.000002',master_log_pos=6075;


# 开始同步
start slave;

查看slave同步状态

# Slave_IO_Running: Yes,Slave_SQL_Running: Yes,两个yes则同步成功,否则查看相应的报错

show slave status\G


如果同步出错,则停止同步,重置后再次开启同步:

stop slave;
reset slave;
start slave;

参考 博客

https://blog.csdn.net/ct_666/article/details/111842000
centos7搭建标准通用MySQL8.0主从复制(一主一从)_centos-7如何搭建mysql8.0主从复制-CSDN博客

https://www.cnblogs.com/cao-lei/p/13603043.html
Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) - C3Stones - 博客园 (cnblogs.com)

https://www.cnblogs.com/fqgump/p/12957145.html
【原创】CentOS 7搭建多实例MySQL8(想要几个搞几个) - FqGump_Yi - 博客园 (cnblogs.com)

https://blog.csdn.net/MR_Wxm/article/details/107524387
mysql8 主从复制 双主模式_centos7搭建mysql8集群双主双从-CSDN博客

https://www.jianshu.com/p/50b9446d77f4
MySQL 8 双主设置 - 简书 (jianshu.com)

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值