Docker部署mysql8.x版本互为主从

两台服务器拉取mysql8.x镜像

192.168.197.136

192.168.197.137

docker pull mysql:8.0.28

两台服务器配置免密登录

生成秘钥   ssh-keygen   (一路回车默认即可)

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.197.137   将公钥发送到另一个节点

ssh root@192.168.197.137   测试是否是免密登录

然后来构建mysql容器

Master1

docker run -itd --name=master1 --net=host --restart=always -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.28

docker cp master1:/etc/mysql/my.cnf .   将配置文件拷贝出来

vim my.cnf    编辑配置文件

[mysqld]

server-id=1

log-bin=mysql-bin

skip-name-resolve

log_replica_updates

lower_case_table_names=1

interactive_timeout=7200

wait_timeout=86400

max_connections=4000

back_log=100

binlog_expire_logs_seconds=3

max_binlog_size=100M

character_set_server=utf8

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO

docker cp my.cnf  master1:/etc/mysql/my.cnf   编辑好的配置文件在拷贝进容器

docker restart master1  重启master1

然后进入数据库中创建主从同步用户

docker exec -it master1  mysql -uroot -p123456

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';   创建主从同步用户

GRANT ALL PRIVILEGES ON *.* TO slave; 给同步用户授权

flush privileges; 刷新一下

show master status\G   看下binlog日志起始位置

reset master;   清除binglog日志命令

master2操作

scp my.cnf  192.168.197.137:/root/    把配置文件直接发送一份给另一节点

vim my.cnf  修改一下 server-id 参数 两个节点不能相同

         

docker run -itd --name=master2 --net=host --restart=always -v /root/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.28     启动容器

然后进入数据库中创建主从同步用户

docker exec -it master2  mysql -uroot -p123456

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';   创建主从同步用户

GRANT ALL PRIVILEGES ON *.* TO slave; 给同步用户授权

flush privileges; 刷新一下

show master status\G   看下binlog日志起始位置

master1节点操作

docker exec -it master1  mysql -uroot -p123456

下面进行主主同步配置change操作前要先

stop slave;

然后 \e进入编辑  

报错了说是没有编辑器,需要下载一下

apt-get update

apt-get install vim

\e   然后编辑

change master to

master_host='192.168.197.137',

master_user='slave',

master_password='123456',

master_port=3306,

master_log_file='mysql-bin.000001',

master_log_pos=157,

master_connect_retry=60;

配置好后保存退出

master2节点操作

docker exec -it master1 /bin/bash

apt-get update

apt-get install vim   下载一下vim

mysql -uroot -p123456

下面进行主主同步配置change操作前要先

stop slave;

然后 \e进入编辑  

change master to

master_host='192.168.197.136',

master_user='slave',

master_password='123456',

master_port=3306,

master_log_file='mysql-bin.000001',

master_log_pos=157,

master_connect_retry=60;

配置好后保存退出

start slave;  两个节点都要启动slave

show slave status \G; 启动后查看同步状态

发现             Slave_IO_Running: Connecting  是失败的

报错是mysql8.x版本密码插件导致的                Last_IO_Error: error connecting to master 'slave@192.168.197.136:3306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

这边做一下修改slave用户密码插件的操作两个节点都操作

use mysql

select host ,user ,plugin  from user;      查看一下用户的密码插件

alter user 'slave'@'%' identified with mysql_native_password by '123456';   把slave的密码策略换成 mysql_native_password

  

两台服务器同步效果不正常,都要进行以下操作: 在2台机器数据保持一致的情况 下。 从节点: stop slave; #停止同步 reset slave; #清除主节点信息 主节点: reset master; #清除bin1og日志

然后操作stop slave; 然后 \e进入编辑 按照上面的步骤在来一遍即可

  

show slave status \G; 完成后查看同步状态

 

配置成功后在master1创建库表进行查看是否同步

create database db_2023888;

show databases;    master2节点查看

Mysql8.x版本互为主从配置完成。 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值