记一次mysql主从设置

前言

哎,为了学这个还特意整了两台云服务器,造孽呀

这里的情况是一主一从,mysql是8.3的

我的配置是,两台阿里云的云服务器,因为是一个区的所以彼此可以用私网进行访问(为了搜索docker在不同主机之间通信绞尽脑汁,最后发现可以用私网访问对方容器,还是蛮幸运的)

 配置

云服务器两台(务必一个地方一个区,能用私网访问)

mysql 8.3

docker 25.0.3

 master 主机

  1. 生成mysql-master容器
  2. 设置master.cnf
  3. 重启容器应用配置
  4. 进入容器,输入show master status\G并记录下数据,设置从(奴隶)主机需要用

slave 主机 

  1. 重复上述master中1、2、3步骤
  2. 注意,重复2步骤的时候 需要修改server-id
  3. 进入容器内,登录mysql 设置master,并启动slave 

master配置 

 生成容器

docker run -d  -p 3306:3306 --name mysql8-master --restart=always --privileged=true  -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql:latest

添加新的mysql配置文件

可以在/data/mysql/conf 内额外新增即可

[mysqld]
server-id = 1  #设置主服务器的id号为1 从服务器不能为1 需要区分
log-bin=mysql-bin # 字符串 写什么都行
binlog_format=mixed 
#只保留7天的二进制日志,以防磁盘被日志占满
binlog_expire_logs_seconds=604800 # mysql8以后新的设置方式
#不备份的数据库
binlog-ignore-db=information_schema # 那些不备份有多少写多少
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql

重启mysql应用变更

docker restart mysql8-master

记录master内状态信息

有用的信息是文件名和位置信息两个

 slave主机配置

生成容器

docker run -d  -p 3306:3306 --name mysql8-slave --restart=always --privileged=true  -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql:latest

添加配置文件salve.cnf

[mysqld]
server-id = 2  #设置主服务器的id号为1
log-bin=mysql-bin-slave
binlog_format=mixed
#只保留7天的二进制日志,以防磁盘被日志占满
binlog_expire_logs_seconds=604800 
#不备份的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql
relay-log=mysql-relay-bin  # 开启中继

重启容器

docker restart mysql8-slave

进入从服务器的mysql中设置master信息

change master to master_host='master的ip',master_port=3306,master_user=slave,master_password=123456,master_log_file='主节点记录信息中的文件名',master_log_pos=主节点记录信息中的位置,get_master_public_key=1;

start slave;

注意:get_master_public_key=1可以防止报出从节点登不上主节点的错误

查看salve状态

show slave status\G

出现这两个yes即可

重启计算机需要重新设置slave中master的信息;

如果第一遍设置出错。第二遍设置的时候先运行 reset slave;

先这样

 提醒

我偷懒了一步,需要在master的mysql内 创建 slave账号,写的急,忘了整上去了

#创建账号
create user 'slave'@'%' identified by '123456';
#授权
grant replication slave on *.* to 'slave'@'%';
#刷新
flush privileges;

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值