login每天学习一点点,每天进步一点点.
当前位置:首页 >> docker mysql主从库一键脚本

docker mysql主从库一键脚本

2018-07-23 17:20:49  |  分类: Linux |  标签: 阅读(144)评论(0)

#!/bin/sh

# -*- coding: utf-8 -*-

#====================================================================

# Usage   : Bash docker-mysql.sh

# Author  : c32

# Blog    : http://www.19aq.com/

# Team    : Roots Exploits Team

# System  : CentOS 7.5 x64

# Ver     : 1.0  2018-7-23 15:21:18

#============================mysql变量================================

MYSQL_VER=5.7.20


#删除系统旧的软件缓存

yum clean dbcache 

yum clean metadata 

yum clean rpmdb 

yum clean headers 

yum clean all 

yum -y install wget unzip

#删除可能存在的旧的软件

docker stop php7.0

docker rm php7.0

docker stop nginx

docker rm nginx

yum remove -y docker docker-common docker-selinux docker-engine

#替换系统源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum --assumeno update

#解决下载软件包存在与预期不符的问题

yum --enablerepo=base clean metadata

#安装yum-config-manager

yum install -y yum-utils

#增加docker源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum --assumeno update

# yum -n update

#安装docker所需的依赖环境

yum install -y yum-utils device-mapper-persistent-data lvm2

#安装docker

yum install -y docker-ce

#启动docker

systemctl start docker

#设置docker开机启动

systemctl enable docker

#查看docker版本

docker version

#====================================================================    https://blog.csdn.net/dream_broken/article/details/77838579  主从配置

#开始安装环境

yum --assumeno update

docker pull mysql:${MYSQL_VER}

#设置对应环境及路径

docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD=root -v /www/mysql01/data:/var/lib/mysql -p 3307:3306  mysql:${MYSQL_VER}

#拷贝配置文件到宿主机

docker cp mysql01:/etc/mysql/mysql.conf.d/mysqld.cnf ./mysqld-3307.cnf

#停止并删除容器

docker stop mysql01

docker rm mysql01

#开始配置mysql主库环境

echo ' '    >> ./mysqld-3307.cnf

echo ' '    >> ./mysqld-3307.cnf

echo 'character-set-server=utf8'                           >> ./mysqld-3307.cnf

echo 'default-storage-engine=INNODB'                       >> ./mysqld-3307.cnf

echo 'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' >> ./mysqld-3307.cnf

echo ' '    >> ./mysqld-3307.cnf

echo 'server-id=1'                                         >> ./mysqld-3307.cnf

echo 'log_bin=/var/log/mysql/binlog'                       >> ./mysqld-3307.cnf

#启动主库

docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD=root -v /www/mysql01/data:/var/lib/mysql -v /root/mysqld-3307.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -p 3307:3306  mysql:${MYSQL_VER}


#开始配置从库环境

cp mysqld-3307.cnf mysqld-3308.cnf

#删除配置最后2行

sed -i '$d' mysqld-3308.cnf

sed -i '$d' mysqld-3308.cnf

#开始写从库配置

echo 'server-id=2'                                         >> ./mysqld-3308.cnf

echo 'log_bin=/var/log/mysql/binlog'                       >> ./mysqld-3308.cnf

echo ' '    >> ./mysqld-3308.cnf

echo 'innodb_file_per_table=ON'                            >> ./mysqld-3308.cnf

echo 'skip_name_resolve=ON'                                >> ./mysqld-3308.cnf

echo 'binlog-format=row'                                   >> ./mysqld-3308.cnf

echo 'log-slave-updates=true'                              >> ./mysqld-3308.cnf

echo 'relay_log=/var/log/mysql/relay.log'                  >> ./mysqld-3308.cnf

#启动从库

docker run -d --name mysql02 -e MYSQL_ROOT_PASSWORD=root -v /www/mysql02/data:/var/lib/mysql -v /root/mysqld-3308.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -p 3308:3306  mysql:${MYSQL_VER}



cp mysqld-3308.cnf mysqld-3309.cnf

sed -i 's/server-id=2/server-id=3/g' mysqld-3309.cnf

docker run -d --name mysql03 -e MYSQL_ROOT_PASSWORD=root -v /www/mysql03/data:/var/lib/mysql -v /root/mysqld-3309.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -p 3309:3306  mysql:${MYSQL_VER}



====================================================================

在从库执行以下命令,看mysql链接状态和错误日志,及测试创建数据库,如未同步,则搭建失败。

show slave status

stop slave

CHANGE MASTER TO MASTER_HOST='192.168.1.12',Master_Port=3307,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=3264;

CHANGE MASTER TO MASTER_HOST='172.17.0.2',Master_Port=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;

start slave


show slave status

========================以下是无用信息===================================

SHOW MASTER STATUS

SELECT @@sql_mode

set sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'


select @@global.sql_mode

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));


上一篇:ubuntu使用nmap查询端口 下一篇:ThinkPHP5 的视图$view->fetch()和$view->display()的区别

猜你喜欢

发表评论:

0.177729s