首页 > 数据库 >docker安装MySQL8.0.35主从复制(实战保姆级)

docker安装MySQL8.0.35主从复制(实战保姆级)

时间:2024-05-25 15:02:11浏览次数:26  
标签:主从复制 slave log -- 35 master mysql MySQL8.0 docker

很久没有记录了,今天有时间就记录一下最近安装遇到的问题

 

liunx安装docker这个是前提,就不多过述

1 准备两台服务器

10.104.13.139

10.104.13.140

2 确保liunx安装的docker正常运行的

ps:最好提前关闭防火墙 或者提前开放对应端口 不然同步会失败的 关闭防火墙后记得重启docker 不然docker容器会启动失败的

1:查看防火状态
systemctl status firewalld
service  iptables status

2:暂时关闭防火墙
systemctl stop firewalld
service  iptables stop

3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
// 重启命令
systemctl  restart docker

3 后续就正式的开始安装了

docker run -d -p 4406:3306 \
           --name mysql-4406 \
           --privileged=true \
           -v /app/mysql-4406/log:/var/log/mysql \
           -v /app/mysql-4406/data:/var/lib/mysql \
           -v /app/mysql-4406/conf:/etc/mysql/conf.d \
           -e MYSQL_ROOT_PASSWORD=root \
           mysql:8.0.35 --lower_case_table_names=1


命令解释:
-d: 后台运行容器,并返回容器ID
-p 3311:3306 :将容器的3306端口映射到宿主机3310端口
-e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码
-v /home/mysql/node-2/config:/etc/mysql/ :将配置文件夹挂载到宿主机
–name mysql01(02):将容器命名为 mysql01(02)
lower_case_table_names=1 不区分大小写

查看容器是否正常启动

docker ps

如果启动失败 需要查看容器的日志

docker ps -a 
docker logs 容器id

后续就是在挂载的目录创建MySQL的配置文件了

cd /app/mysql-4406/conf
vim my.cnf

// 编辑插入配置 就不再过多解释 基本的配置

[mysqld]
log-error=/var/log/mysqld.log
server_id=101
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062

编辑保存后,需要重启容器使其配置文件生效

-- 重启镜像
docker ps
docker restart id

下一步就是进入到MySQL中创建同步的用户信息并赋予其权限

--进入镜像登陆MySQL
docker exec -it id /bin/bash
mysql -uroot -p

--创建同步账号
CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';
--给账号赋权限
GRANT ALL ON *.* TO 'slave'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

--查看master日志信息
show master status;

完成后,master库的操作就完成了,后续就不要再动主库了,记住show master status;显示的值,slave同步用到

 主要是用到 file和position的值

4 安装slave数据库 和master安装差不多

docker run -d -p 4407:3306 \
           --name mysql-4407 \
           --privileged=true \
           -v /app/mysql-4407/log:/var/log/mysql \
           -v /app/mysql-4407/data:/var/lib/mysql \
           -v /app/mysql-4407/conf:/etc/mysql/conf.d \
           -e MYSQL_ROOT_PASSWORD=root \
           mysql:8.0.35 --lower_case_table_names=1
// 查询容器是否启动
docker ps
// 创建配置文件
cd /app/mysql-4407/conf
vim my.cnf

[mysqld]
server_id=102
binlog-ignore-db=mysql
log-bin=mall-mysql-slave1-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mall-mysql-relay-bin
log_slave_updates=1
read_only=1

-- 重启镜像
docker restart id

--进入镜像登陆MySQL

ocker exec -it id /bin/bash
mysql -uroot -p

change master to master_host='10.104.13.139', master_user='slave', master_password='slave', master_port=4406, master_log_file='mall-mysql-bin.000001', master_log_pos=875,  master_connect_retry=30, get_master_public_key=1;

解释:
get_master_public_key 密码加密方式
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave'(刚刚配置的用户名),
MASTER_PASSWORD='123456'(刚刚授权的密码),
master_port=主机开放的端口 我这里是3310端口,
MASTER_LOG_FILE='mysql-bin.具体数字'
MASTER_LOG_POS=具体值(之前的Position);
master_connect_retry=30, 在主服务器宕机或连接丢失的情况下,从服务器线程重新尝试连接主服务器之前睡眠的秒数。如果主服务器.info文件中的值可以读取则优先使用。如果未设置, 默认值为60

--启动同步
start slave;
--查看同步状态
show slave status \G;
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes   --都为yes 就是成功了

--如果失败了  Slave_IO_Running: NO 重复擦操作下面的步骤

stop slave;
reset slave all;
change master to master_host='10.104.13.139', master_user='slave', master_password='slave', master_port=4406, master_log_file='mall-mysql-bin.000001', master_log_pos=875,  master_connect_retry=30, get_master_public_key=1;   
-- 需要检查 slave 的权限 或者 master_log_file  master_log_pos 信息是否对上
start slave;
show slave status \G;

到这里主从复制就完成了,后续就是验证了,这里就不多说了

#登录master库

#创建数据库testdb,使用默认字符集
create database test11;

#在slave中查看是否有test11库
show database;

打完收工,欢迎交流。2024-05-25 14:53:25

 

 

 

标签:主从复制,slave,log,--,35,master,mysql,MySQL8.0,docker
From: https://www.cnblogs.com/niCong/p/18212420

相关文章

  • 1358:中缀表达式值(expr)
    题目网址:信息学奥赛一本通(C++版)在线评测系统题目介绍:1358:中缀表达式值(expr)时间限制:1000ms      内存限制:65536KB提交数:13372   通过数: 4646【题目描述】输入一个中缀表达式(由0-9组成的运算数、加+减-乘*除/四种运算符、左右小括号组成。注意“......
  • 机械臂与Realsense D435 相机的手眼标定ROS包
    本教程主要介绍机械臂与RealsenseD435相机手眼标定的配置及方法。系统:Ubuntu20.0.4◼ROS:Noetic◼OpenCV库:OpenCV4.2.0◼RealsenseD435:librealsensesdk(2.50.0)、realsense-ros功能包(2.3.2)◼Marker标记识别:Aruco功能包◼手眼标定:easy_handeye功能包◼Mov......
  • BUUCTF-WEB(31-35)
    [GYCTF2020]Blacklist参考:[GYCTF2020]Blacklist1详解(handler命令用法!)-CSDN博客SQL注入一些过滤及绕过总结_sql注入过滤-CSDN博客过滤了这些内容。包括大写,由于是正则匹配,无法双写绕过这里其实我又试了试注释符绕过,但是没有任何回显但是我发现可以堆叠注入,因为这道题的......
  • mysql8.0 PXC安装配置
    一、环境初始化1.时间同步配置/etc/chrony.conf,添加如下:server0.centos.pool.ntp.orgiburst#指定时钟源allow192.168.43.0/24重启服务:systemctlrestartchronyd.service开机启动:systemctlenablechronyd查看状态:systemctlstatuschronyd验证端口:netstat......
  • mysql8.0+版本在使用group by 出现的问题
    起因:由于想使用MySQL8中的函数,手动将项目中的数据库从5.7升级到了8.0.20社区版本,但是升级完之后部分查询报错了,错误信息如下 whichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_by去搜了一下,推荐的几......
  • 满足 5G 通信的带宽需求,1ST040EH2F35I2LG,1ST085ES3F50I3VG,1ST085ES3F50E3VG,1ST110E
    说明Stratix®10FPGA和SoCFPGA大幅提高了性能、功效、密度和系统集成度。Stratix10采用创新HyperflexFPGA架构,将嵌入式多芯片互连桥接器(EMIB)、高级接口总线(AIB)和芯片组等技术结合在一起。™因此,与上一代高性能FPGA相比,Stratix10器件的性能提高了2倍。Stratix®10......
  • 一台服务器​最大并发 tcp 连接数多少?65535?
    首先,问题中描述的65535个连接指的是客户端连接数的限制。在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三次握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少呢?如何标识一个TCP连接在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个......
  • 鸡兔同笼35个头94只脚 问鸡和兔各有几只?
    “鸡兔同笼”问题,由来已久。大约一千五百年前,我国古代数学名著《孙子算经》中记载了一道数学题——“鸡兔同笼”问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”这道题的意思是:“笼子里有若干只鸡和兔。从上面数,有35个头,从下面数,有94只脚。鸡和兔各有几只?”小学题目,......
  • 3562-IgH EtherCAT主站开发案例
     ......
  • 3562-Qt工程编译说明、GPU核心使用说明
     ......