首页 > 数据库 >ocker compose 部署mysql主从。并优化参数。

ocker compose 部署mysql主从。并优化参数。

时间:2024-05-31 11:46:35浏览次数:15  
标签:compose slave ocker buffer 大小 mysql 缓冲区 size

原理图:

 

 

一、先部署两个mysql 可以跨机器 也可以同一台  

准备两个mysql.yml文件和my.cnf配置文件 (yml文件我放一起 可以自行拆开部署)

version: '3.1'
services:
  mysql:
    image: mysql:8
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: aaaa1111
      TZ: Asia/Shanghai
      LANG: C.UTF-8
    ports:
      - 3306:3306
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data:/var/lib/mysql                           #放mysql主数据
      - ./conf:/etc/mysql/conf.d                        #主配置文件
      - ./bk:/opt/mysql/bk                              #mysql备份文件,可以mysqldump下来的备份文件放这

  mysql_slave:
    image: mysql:8
    restart: always
    container_name: mysql_slave
    environment:
      MYSQL_ROOT_PASSWORD: aaaa1111
      TZ: Asia/Shanghai
      LANG: C.UTF-8
    ports:
      - 3307:3306
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data2:/var/lib/mysql                #mysql从数据文件
      - ./conf2:/etc/mysql/conf.d             #从配置文件

 

二、准备两个my.cnf配置文件 对应上面路径

第一份配置 my.cnf

[client]
default-character-set=utf8

[mysqld]
#禁用DNS反向解析
skip-name-resolve
default-time-zone = '+08:00'
#MyISAM存储引擎的索引缓存大小
key_buffer_size=512M
#最大连接数限制
max_connections=500
#排序缓冲区大小
sort_buffer_size=32M
#InnoDB存储引擎的缓冲池大小
innodb_buffer_pool_size=2G
#批量插入缓冲区大小
bulk_insert_buffer_size = 256M
#临时表大小
tmp_table_size = 256M
#读取缓冲区大小
read_buffer_size = 8M
#随机读取缓冲区大小
read_rnd_buffer_size = 32M
#InnoDB日志文件的大小
innodb_log_file_size=256M
#InnoDB日志缓冲区大小
innodb_log_buffer_size=12M
#InnoDB日志刷新策略
innodb_flush_log_at_trx_commit=2
#不区分大小写
lower_case_table_names=1
#设置SQL模式
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#默认字符集
character-set-server = utf8mb4
#默认字符集排序规则
collation-server = utf8mb4_general_ci
#启用严格模式
explicit_defaults_for_timestamp = true
#最大允许的网络数据包大小
max_allowed_packet = 128M
#最大binlog存储数量
binlog_expire_logs_seconds = 432000
#binlog保留天数
expire_logs_days = 5

#skip-grant-tables  无密码登录mysql

#mysql主从id 自定义
server-id=100
#需要开启binlog log-bin=mysql-bin

 

第二份配置 my.cnf

[client]
default-character-set=utf8

[mysqld]
#禁用DNS反向解析
skip-name-resolve
default-time-zone = '+08:00'
#MyISAM存储引擎的索引缓存大小
key_buffer_size=512M
#最大连接数限制
max_connections=500
#排序缓冲区大小
sort_buffer_size=32M
#InnoDB存储引擎的缓冲池大小
innodb_buffer_pool_size=2G
#批量插入缓冲区大小
bulk_insert_buffer_size = 256M
#临时表大小
tmp_table_size = 256M
#读取缓冲区大小
read_buffer_size = 8M
#随机读取缓冲区大小
read_rnd_buffer_size = 32M
#InnoDB日志文件的大小
innodb_log_file_size=256M
#InnoDB日志缓冲区大小
innodb_log_buffer_size=12M
#InnoDB日志刷新策略
innodb_flush_log_at_trx_commit=2
#不区分大小写
lower_case_table_names=1
#设置SQL模式
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#默认字符集
character-set-server = utf8mb4
#默认字符集排序规则
collation-server = utf8mb4_general_ci
#启用严格模式
explicit_defaults_for_timestamp = true
#最大允许的网络数据包大小
max_allowed_packet = 128M
#最大binlog存储数量
binlog_expire_logs_seconds = 432000
#binlog保留天数
expire_logs_days = 5

#skip-grant-tables  无密码登录mysql
#mysql主从id 自定义
server-id=200
#需要开启binlog log-bin=mysql-bin

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

 

三、启动mysql

docker compose -f ****.yml up -d 

 

 

四、进入主库执行

主库操作:

-- 创建slave用户
CREATE USER 'mysql_slave'@'%';
-- 设置密码
ALTER USER 'mysql_slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'mysql_slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

随后主库执行 后面从库能用到File值 和position值

SHOW MASTER STATUS;

 

 

 

五、进入从库操作

5.1从库操作:

CHANGE MASTER TO MASTER_HOST='10.10.10.10',          #指定主库ip
MASTER_USER='mysql_slave',MASTER_PASSWORD='123456', MASTER_PORT=3306,     #指定主库创建的账号密码 
MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=17898411;               #指定主库刚查询到的file 

 

 

5.2 从库查询状态

Slave_IO_Running、Slave_SQL_Running结果为no

show slave status \G;

 

5.3开启主从

从库操作:

start slave;

 通过如下看出Slave_IO_Running、Slave_SQL_Running结果为yes,说明主从开启成功

如果不是两个yes 。 重新操作     STOP SLAVE;  停止主从

 

 

 

 

六、验证

主库操作:

创建数据库

 

 

从库操作验证:

 进数据库查看 ddd数据库是否被创建

标签:compose,slave,ocker,buffer,大小,mysql,缓冲区,size
From: https://www.cnblogs.com/namedgx/p/18224165

相关文章

  • mysql中key 、primary key 、unique key 与index区别
    索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比......
  • gitlab之cicd的gitlab-runner集成-dockerfile构建环境
    目录概述离线资源docker-compose问题docker-compose问题1问题2gitlab-runner集成gitlab概述  cicd引文目录是想通过dockerfile构建maven、jdk、docker环境的gitlab-runner运行环境。但docker最后测试的时候有点问题,且最后使用kubectl时有麻烦,所以放弃。但有......
  • MySQL 5.7 - 通过 BINLOG 恢复数据
    日常开发,运维中,经常会出现误删数据的情况。误删数据的类型大致可分为以下几类:使用delete误删行使用droptable或truncatetable误删表使用dropdatabase语句误删数据库使用rm命令误删整个MySQL实例。不同的情况,都会有其优先的解决方案:针对误删行,可以通过Fla......
  • MySQL 中 不等于 会过滤掉 Null 的问题
    在写SQL条件语句时经常用到不等于 != 的筛选条件。  此时要注意此条件会将字段为 Null 的数据也当做满足不等于的条件而将数据筛选掉。例:表AA1B110213Null执行如下查询:SELECT*FROMAWHEREB1!=1;得到的结果如下:A1B110第三......
  • MySQL - binlog日志简介及设置
    基本概念binlog是Mysqlsever层维护的一种二进制日志,与innodb引擎中的redo/undolog是完全不同的日志;其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,记录了所有的DDL和DML(除了数据查询语句)语句,并以事务的形式保存在磁盘中,还包含语句所执行的消耗的时间,MySQL的二进制......
  • Mysql视图和索引
    什么是视图(view)   MySQL中的视图(View)是一个虚拟的表,其内容由查询定义。视图并不在数据库中以存储的数据值形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。视图的优势简化复杂性:通过视图,用户可以只看到他们感兴趣的数据或数据的简化版......
  • 面经-Java,Linux,Mysql,网络
    状态码2xx:成功类3xx:重定向4xx:客户端错误5xx:服务器错误404:未找到网页400:请求语法错误500:服务器错误503:服务器停机200:成功post和get的区别get多用于获取服务端数据,post多用于向服务端推送数据。get的参数多拼接在url中,post的参数放在请求体中。故post的安全系数高......
  • 31.MySQL数据库【一】基础介绍
    【一】数据库初识1)存储数据的演变过程基于内存保存文件操作json模块搭建TCP的客户端和服务端,TCP服务端用作存储服务,TCP客户端用于上传和下载数据存储数据的位置就是数据库2)数据库本质就是一块基于网络通信保存数据的应用程序3)数据库的介绍1.关联性数据库(存......
  • 32.MySQL数据库【二】存储引擎与基本数据类型.
    【一】MySQL之存储引擎1)介绍针对不同的数据有不同的处理机制,存储引擎就是不同的处理机制2)MySQL主要的存储引擎1.innodb是MySQL5.5版本之后的默认存储引擎支持事务、外锁、外键2.myisam是MySQL5.5版本之前的默认存储引擎速度比innodb快,但数据安全性较弱3.memory......
  • 34.MySQL数据库【四】过滤条件
    过滤条件【一】语法select*/字段名from*/表名where*/字段名=字段值;--执行顺序from起手知道是那张表where根据过滤条件在表中过滤数据select再过滤出自己想要的数据【二】准备的数据#创建表createtablefilt_eg( idintnotnulluniqueauto_increment,......