首页 > 数据库 >CQRS读写分离MySQL数据库如何部署至Linux

CQRS读写分离MySQL数据库如何部署至Linux

时间:2023-05-13 09:02:54浏览次数:45  
标签:slave log Linux ## MySQL mysql CQRS docker data

FearlessGuo

首先有一台可以使用的Linux服务器,可以自行购买,当然也可以白嫖。

有一款可以连接Linux的软件,我用的是putty

在Linux上下载docker镜像,类似应用商店。安装过程参阅下方链接

Linux安装Docker完整教程_docker安装_风随心飞飞的博客-CSDN博客

下载mysql镜像,查看版本

IMG_256

本次使用版本5.7

IMG_256

配置mysql的容器,每个容器就像是一台新的电脑,相互独立各不相同

实现dome:

--name后的内容可以修改

密码可以不为123456

结尾mysql为镜像名称,唯一可以只写name,不唯一也可以用id进行使用

这两段demo都可以创建容器,具体区别不清楚,多尝试一下,一个用不了就换一个。

1

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

2

docker run -p 3312:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

IMG_257

Docker ps 查看运行镜像

Docker ps -a 查看所有镜像

测试mysql容器是否正常

如果连接失败了

参阅以下文章:

MySQL 异常: "Host 'xxx' is not allowed to connect to this MySQL server"_mazaiting的博客-CSDN博客

下面我们配置数据库主从模式(可以当成读写分离)

  1. 我们专用的挂载好的容器(切记不要使用相同端口号,名字也不要相同)

//参数详解// -d守护进程// -p端口映射 -p 宿主机端口:容器端口// --privileged=true 应用容器 获取宿主机root权限// -v 绑定共享映射目录,-v 宿主机目录:容器目录

//主库

docker run -d -p 3322:3306 --privileged=true -v ~/docker_data/mysql-master/log:/var/log/mysql -v ~/docker_data/mysql-master/data:/var/lib/mysql -v ~/docker_data/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master mysql

//从库

docker run -d -p 3324:3306 --privileged=true -v ~/docker_data/mysql-slave/log:/var/log/mysql -v ~/docker_data/mysql-slave/data:/var/lib/mysql -v ~/docker_data/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave mysql

//可以多个从库

docker run -d -p 3325:3306 --privileged=true -v ~/docker_data/mysql-salve/log:/var/log/mysql -v ~/docker_data/mysql-salve/data:/var/lib/mysql -v ~/docker_data/mysql-salve/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-salve mysql

下面我们需要配置Linux挂载文件夹里的文件

这里主库和从库的都已经备注好了

//**主库配置** 这里在宿主机更新配置文件后,容器也会同步更新//在刚刚共享映射的宿主机conf目录新建my.cnf 写入以下内容//我的目录是:/docker_data/mysql-master/conf/my.cnf teps:不需要复制这段话

[mysqld]

## 设置server_id 同一局域网中需要唯一

server_id=101

## 指定不需要同步的数据库名称

binlog-ignore-db=mysql

## 开启二进制日志功能

log-bin=mall-mysql-bin

## 设置二进制日志使用内存大小(事务)

binlog_cache_size=1M

## 设置使用的二进制日志格式(mixed,stateement,row)

binlog_format=mixed

## 二进制日志过期清理时间 默认值为0 表示不自动清理

expire_logs_days=7

## 跳过主从复制值遇到的所有错误或指定类型的错误,避免slave端复制中断## 如:1062错误是指一些主键重复 1032错误是因为主从数据库数据不一致

slave_skip_errors=1062

//**从库配置** 这里在宿主机更新配置文件后,容器也会同步更新//在刚刚共享映射的宿主机conf目录新建my.cnf 写入以下内容//我的目录是:/docker_data/mysql-slave/conf/my.cnf teps:不需要复制这段话

[mysqld]

## 设置server_id 同一局域网中需要唯一

server_id=102

## 指定不需要同步的数据库名称

binlog-ignore-db=mysql

## 开启二进制日志功能

log-bin=mall-mysql-slave1-bin

## 设置二进制日志使用内存大小(事务)

binlog_cache_size=1M

## 设置使用的二进制日志格式(mixed,stateement,row)

binlog_format=mixed

## 二进制日志过期清理时间 默认值为0 表示不自动清理

expire_logs_days=7

## 跳过主从复制值遇到的所有错误或指定类型的错误,避免slave端复制中断## 如:1062错误是指一些主键重复 1032错误是因为主从数据库数据不一致

slave_skip_errors=1062

## relay_log配置中继日志

relay_log=mall-mysql-relay-bin

## log_slave_updates表示slave将复制事件写进自己的二进制日志中

log_slave_updates=1

## slave设置为只读(具有super权限的用户除外)

read_only=1

如多多个从库变一下server_id就可以了只要不重复就行。想的话可以多设置几个小弟,搞两个给你们演示一下。

这是一个事例,其他的照着写就行。

下面一步一步进入主库(对主库创建slave用户)成功以后可查看是否创建了slave

Exit退出容器,去从库容器中进行配置

如果没报错的话会出来这样一个会话框

我们可以看见这两个状态是关闭的。

可能运行会有报错,empty,没关系这是我们少写了一段话,加上就行。

change master to master_host='47.97.19.23', master_user='slave', master_password='123456', master_port=3322, master_log_file='mall-mysql-bin.000001', master_log_pos=371, master_connect_retry=30;

这边需要最长的dome很贴心的放到这里了。切记一行代码,不能换行!!!!

当然如果直接复制粘贴的话,肯定报错。

需要修改一下port,为你主服务器的端口

还有其他的东西,自己看看去。

//开启主从复制

Start slave;

//查询从库状态

Show slave status \G;

此处的状态已经为yes了说明我们已经配置成功了

这时候你的数据库就不是一个了,主库后面跟俩小弟,非常哇塞。

在主mysql里创建test数据库两个小弟也就有了

标签:slave,log,Linux,##,MySQL,mysql,CQRS,docker,data
From: https://www.cnblogs.com/fearless-g/p/17396715.html

相关文章

  • EntityFramework Core 6.0 MySql WebApi
    Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.DesignPomelo.EntityFrameworkCore.MySqlMicrosoft.EntityFrameworkCore.Tools-----------------------------------------------------------------------------------------------------------------------......
  • Linux注册为系统服务
    0x01创建一个新的systemd服务配置文件例如myscript.service:sudonano/etc/systemd/system/myscript.service0x02在文件中添加以下内容[Unit]Description=MyScriptServiceAfter=network.target[Service]ExecStart=/path/to/myscript.shRestart=always[Install]Wa......
  • MySQL导入导出命令
    1.导出整个库的数据mysqldump-hhostname-uroot-pschema_name>/mysqldata/schema_all_data_with_ddl.sql上面的是会将整个schema的数据,表结构,索引都导出来;(视图和存储过程还待测);注意不同MySQL版本导出的表结构创建语句可能不兼容;如果只想导出数据,则可以在schema_name前......
  • macos13 m1 安装 mysql8.0.32
    1、下载安装包选择MySQLCommunityServer版本MySQL::DownloadMySQLCommunityServer(ArchivedVersions)2、可视化安装选择强密码策略3、环境变量配置cat.zshrcexportPATH=$PATH:/usr/local/mysql-8.0.32-macos13-arm64/binexportPATH=$PATH:/usr/local/mysq......
  • Rocky 9 Linux 软件安装 neovim 和 git
    目录编辑器Neovim版本控制工具GitRHEL系列软件安装介绍软件安装包简介源码包安装rpm包安装yum&dnf在线安装脚本安装包rockyLinux介绍软件安装我主要挑了编辑器neovim和版本管理控制工具Git进行介绍。通常情况,部署完Linux发行版,自带vim工具,既然有了vim,那就来点新的......
  • LFS - Linux From Scratch 从零开始全记录 - 1 准备篇
    上次折腾LFS已经是好几年前了,只记得最后用VMware引导成功了,好多技术细节已经不记得了。趁着最近有空,再来折腾一次。这一次用的一台新的Win10PC,目标是在一个U盘上构建LFS,然后用U盘引导物理机,顺便记录一下整个过程。准备阶段下载虚拟机、Ubuntu镜像下载安装Microso......
  • linux安装ftp服务器
    ftp的安装一般用yum直接在线安装;yuminstall-yvsftpd不行就updateyumupdate1.查看ftp状态systemctlstatusvsftpd.service#启动ftpsystemctlstartvsftpd.service#查看下ftp的默认端口21,发现能正常启动ss-anp|grep21#因为还没配置好,先关闭ftpsyste......
  • MySQL-等保三级整改容器中的MySQL
    记一次等保三级整改过程数据库不合格项:密码复杂度不够需要设置密码过期时间数据库登录失败策略开启binlog由于这台机器处在docker的容器中,和正常MySQL实例大同小异1、安装docker官网的安装步骤,很简单,几条命令即可1.卸载旧版本yumremovedocker\......
  • mysql远程连接问题
    Linux安装mysql81、下载1、从官网下载linux环境下的mysql8的安装包,上传到虚拟机中,解压后只需安装如下:2、安装顺序:3、安装命令:可以通过该命令查看rpm可以有哪些参数:rpm--help这里主要使用命令为:rpm-ivh.........i:(install安装软件包)v:(view可视化)......
  • linux 系统安全和应用
    目录一、系统安全原因:1.系统数据想要保护,否则会造成数据丢失2.系统安全是产品上线的必要要求3.系统安全可以保护系统,避免受到攻击4.系统安全可以保护数据隐私,避免形象受损 二、账号安全1.锁定锁定文件chattr+i文件(可以多个......