docker搭建mysql主从复制
#!/bin/bash
#Author: 臆想的一只猫
#Created: 2022-04-05 11:18:36
#Description: 搭建MySQL主从复制function menu() {clearecho -e "\033[1;3;34m搭建MySQL主从复制比较复杂,请按顺序执行操作,否则可能会失败呢...\033[0m\n"echo -e "\t\t\033[43mMySQL主从复制搭建\033[0m" echo -e "\t\t\033[32m0、Exit menu\033[0m"echo -e "\t\t\033[32m1、搭建主服务器\033[0m"echo -e "\t\t\033[32m2、进入主服务器\033[0m"echo -e "\t\t\033[32m3、搭建从服务器\033[0m"echo -e "\t\t\033[32m4、进入从服务器\033[0m" echo -e "\t\t\033[32m5、搭建主服务器\033[0m\n"echo -en "\033[46;37mEnter option:\033[0m\t"read -n 1 option
}menu# 搭建主服务器
MASTER_ADDR='/data/volume/ms_mysql/mysql-master'
MASTER_NAME='mysql-master'
PWD_ADDR='MYSQL_ROOT_PASSWORD'
MASTER_PWD='root'
MASTER_PORT='3307'
M_VERSION='mysql:5.7'
function master_command() {docker run -p ${MASTER_PORT}:3306 --name ${MASTER_NAME} --privileged=true -v ${MASTER_ADDR}/log:/var/log/mysql -v ${MASTER_ADDR}/data:/var/lib/mysql -v ${MASTER_ADDR}/conf:/etc/mysql -e ${PWD_ADDR}=${MASTER_PWD} -d ${M_VERSION}
}function master_conf() {cd ${MASTER_ADDR}/conftouch my.cnfecho '[mysqld]' >> my.cnfecho '# 设置server_id,同一局域网中需要唯一' >> my.cnfecho 'server_id=101' >> my.cnfecho '# 指定不需要同步的数据库名称' >> my.cnfecho 'binlog-ignore-db=mysql' >> my.cnfecho '# 开启二进制日志功能' >> my.cnfecho 'log-bin=mall-mysql-bin' >> my.cnfecho '# 设置二进制日志使用内存大小(事务)' >> my.cnfecho 'binlog_cache_size=1M' >> my.cnfecho '# 设置二进制日志格式(max,statement,row)' >> my.cnfecho 'binlog_format=mixed' >> my.cnfecho '# 二进制日志过期清理时间,默认为0,表示不自动清理' >> my.cnfecho 'expire_logs_days=7' >> my.cnfecho '# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断' >> my.cnfecho '# 如:1062错误是指一些主键重复,1032错误是因为主从数据库不一致' >> my.cnfecho 'slave_skip_errors=1062' >> my.cnf
}IS_MYSQL=`docker images | grep mysql | grep 5.7`
function master() {if [[ ${IS_MYSQL} ]];thenmaster_commandmaster_confelsedocker pull mysql:5.7master_commandmaster_conffi
}function exec_master() {docker exec -it ${MASTER_NAME} env LANG=C.UTF-8 /bin/bash
}# 搭建从服务器
SLAVE_ADDR='/data/volume/ms_mysql/mysql-slave'
SLAVE_NAME='mysql-slave'
PWD_ADDR='MYSQL_ROOT_PASSWORD'
SLAVE_PWD='root'
SLAVE_PORT='3308'
M_VERSION='mysql:5.7'
function slave_command() {docker run -p ${SLAVE_PORT}:3306 --name ${SLAVE_NAME} --privileged=true -v ${SLAVE_ADDR}/log:/var/log/mysql -v ${SLAVE_ADDR}/data:/var/lib/mysql -v ${SLAVE_ADDR}/conf:/etc/mysql -e ${PWD_ADDR}=${SLAVE_PWD} -d ${M_VERSION}
}function slave_conf() {cd ${SLAVE_ADDR}/conftouch my.cnfecho '[mysqld]' >> my.cnfecho '# 设置server_id,同一局域网中需要唯一' >> my.cnfecho 'server_id=102' >> my.cnfecho '# 指定不需要同步的数据库名称' >> my.cnfecho 'binlog-ignore-db=mysql' >> my.cnfecho '# 开启二进制日志功能' >> my.cnfecho 'log-bin=mall-mysql-slave1-bin' >> my.cnfecho '# 设置二进制日志使用内存大小(事务)' >> my.cnfecho 'binlog_cache_size=1M' >> my.cnfecho '# 设置二进制日志格式(max,statement,row)' >> my.cnfecho 'binlog_format=mixed' >> my.cnfecho '# 二进制日志过期清理时间,默认为0,表示不自动清理' >> my.cnfecho 'expire_logs_days=7' >> my.cnfecho '# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断' >> my.cnfecho '# 如:1062错误是指一些主键重复,1032错误是因为主从数据库不一致' >> my.cnfecho 'slave_skip_errors=1062' >> my.cnfecho '# relay_log配置中继日志' >> my.cnfecho 'relay_log=mail-mysql-relay-bin' >> my.cnfecho '# log_slave_updates表示slave将复制事件写进自己的二进制文件' >> my.cnfecho 'log_slave_updates=1' >> my.cnfecho '# slave设置为只读(具有super权限的用户除外)' >> my.cnfecho 'read_only=1' >> my.cnf
}function slave() {if [[ ${IS_MYSQL} ]];thenslave_commandslave_confelsedocker pull mysql:5.7slave_commandslave_conffi
}function exec_slave() {docker exec -it ${SLAVE_NAME} env LANG=C.UTF-8 /bin/bash
}HOST_IP=`ifconfig ens33 | awk 'NR==2{print $2}'`case $option in
0)echo -e "\n\n\n\n\033[3;1;35m已退出!!!\033[0m\n\n"exit;;
1)echo ''masterdocker restart ${MASTER_NAME}echo '';;
2)echo -e "\n\033[1;3;36m创建slave数据同步用户【已创建请忽略】\033[0m\n"echo -e "\033[32m查看数据库中有哪些用户:SELECT user, host FROM mysql.user;\033[0m"echo -e "\033[32mcreate user 'slave'@'%' identified by '123456';\033[0m"echo -e "\033[32mgrant replication slave, replication client on *.* to 'slave'@'%';\033[0m\n"echo -e "\033[32m搭建完slave之后,可使用show master status;查看master状态\033[0m\n"exec_masterecho '';;
3)echo ''slavedocker restart ${SLAVE_NAME}echo '';;
4)echo -e "\n\033[1;3;36m配置主从复制【已配置请忽略】\033[0m\n"echo -e "\033[32mmaster_log_file和master_log_pos的值,以master上,show master status出来的为准\033[0m\n"echo -e "\033[32mchange master to master_host='${HOST_IP}', master_user='slave', master_password='123456', master_port=3307, master_log_file='mail-mysql-bin.00006', master_log_pos=1287, master_connect_retry=30;\033[0m\n"echo -e "\033[32m查看状态:show slave status \G;\n"echo -e "\033[32m开启主从同步:start slave;\n"exec_slaveecho -e '\n';;
*)clearecho -e "\n\n\033[3;1;35m键入参数有误,GoodBey!!!\033[0m\n\n";;
esac
docker搭建mysql主从复制相关推荐
- Linux下基于 Docker 搭建 MySQL 主从复制(1 Master+2 Slave)
1.准备环境 CentOS 7.2 64位 (CentOS-7-x86_64-DVD-1511.iso) MySQL 10.244.87.144/library/mysql5.7/centos ...
- 更换mysql_Docker搭建MySQL主从复制
Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...
- 【MySQL】基于Docker的Mysql主从复制搭建
基于Docker的Mysql主从复制搭建 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相 ...
- docker搭建mysql主从
前言 为什么要使用Docker搭建? 不管是使用源码安装还是离线安装,在服务器上安装一个mysql总会花费不少的时间,而且对于新人来说,中间稍不注意哪一步出错了就导致安装失败,我之前也是安装过2次才成 ...
- docker安装mysql[主从复制版]
概述: 总所周知,使用docker安装一些中间件是非常快速和便捷的,搭建mysql主从复制[1主n从节点或n主n从节点],这里我为了演示简单一点,选择搭建mysql主从复制的[1主1从]并使用mysq ...
- 【收藏】使用Docker搭建MySQL服务
使用Docker搭建MySQL服务 https://www.cnblogs.com/sablier/p/11605606.html
- 【数据库七】搭建MySQL主从复制和读写分离详解
详解搭建搭建MySQL主从复制和读写分离 1.案例实施:搭建MySQL主从复制 1.1 主节点数据库(CentOS 7-5) 1.2 从节点数据库(CentOS 7-6) 1.3 从节点数据库(Cen ...
- docker实现mysql 主从复制
docker实现 mysql 主从复制! 记录一下如何在docker中启动两个mysql容器来进行主从复制 之前踩了不少坑,终于弄好了,和我一起来看看整个部署过程吧 ! 使用docker部署mysql ...
- windows系统使用Docker搭建MySQL服务
windows系统使用Docker搭建MySQL服务 文章目录 windows系统使用Docker搭建MySQL服务 前题 一.安装docker 二.建立镜像 三.连接mysql 前题 请先在wind ...
最新文章
- Swift中使用正则表达式
- 依赖注入的三种方式_一起学Spring之三种注入方式及集合类型注入
- Verilog HDL中模块参数传递的方法
- 面试题,你什么时候可以入职?回答不好,容易被压薪资
- 【云栖大会】用爱成就彼此 距云栖大会还有10天
- 重磅开源!新型VOLO打破多项记录!
- /boot 目录文件丢失修复记录
- 微信接口开发之高级篇系列【网页授权获取用户基本信息】
- 疫情之下,你有多久没回过家了?
- 【Unity3D插件】PUN 2插件分享《Unity3D多人在线联机联网插件》——客户端服务器端一体
- item_search - 按关键字搜索alibaba商品
- Android系统编程入门系列之应用环境及开发环境介绍
- python基础之温度转换
- vue获取上级路由地址
- 为什么很多人家里不准备尺子了?手机怎么测量长度?
- 解决打开xml文件没有代码
- Bootstrap布局自动拉伸改变大小
- python manager 共享数据访问_python 进程间数据共享multiProcess.Manger实现解析
- selenium学习——问卷星(可控比例)
- 土拍熔断意味着什么_315土拍将解地市之渴?“熔断”来了,别高兴太早
热门文章
- python 提取sogou中文语料库
- 什么是软件过程?为什么要使用软件过程?如何评价一个好的软件过程?
- 数学建模之多元非线性回归
- linux中nmcli命令配置网卡ip,Linux 使用nmcli配置网络
- mysql的环境搭建
- 现在的千兆光猫都自带路由功能,是否就不需要路由器了?
- pythonnamedtuple定义类型_python namedtuple的使用
- JDK9-JDK17新特性总结
- python输出用逗号隔开的数字_python,得出一些数字后,怎样不输出最后一个逗号...
- outlook 邮件插入字自动消失