博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker安装mysql8主从结构
阅读量:6612 次
发布时间:2019-06-24

本文共 2207 字,大约阅读时间需要 7 分钟。

hot3.png

准备两台服务器,假设IP地址为

172.31.27.67    主服务器

172.31.27.69    从服务器

因为我用的镜像是docker.io/cytopia/mysql-8.0,所以我们需要先把该镜像给pull下来。

docker pull docker.io/cytopia/mysql-8.0

在/home下建一个文件夹

mkdir /home/wen

在主服务器建一个master.my.cnf

内容如下

[client]

socket = /var/sock/mysqld/mysqld.sock
[mysql]
socket = /var/sock/mysqld/mysqld.sock
[mysqld]
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
user = mysql
port = 3306
bind-address = 0.0.0.0
socket = /var/sock/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
general_log_file = /var/log/mysql/query.log
slow_query_log_file = /var/log/mysql/slow.log
log-error = /var/log/mysql/error.log
log-bin=mysql-bin
server-id=1
!includedir /etc/my.cnf.d/
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/docker-default.d/

在从服务器建一个slave.my.cnf,内容如下

[client]

socket = /var/sock/mysqld/mysqld.sock
[mysql]
socket = /var/sock/mysqld/mysqld.sock
[mysqld]
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
user = mysql
port = 3306
bind-address = 0.0.0.0
socket = /var/sock/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
general_log_file = /var/log/mysql/query.log
slow_query_log_file = /var/log/mysql/slow.log
log-error = /var/log/mysql/error.log
log-bin=mysql-bin
server-id=2
!includedir /etc/my.cnf.d/
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/docker-default.d/

这里他们的server-id要区分开

在主服务器启动(密码由你自己设定)

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=abcd123 -p 3307:3306 -v /etc/localtime:/etc/localtime:ro -v /home/wen/master.my.cnf:/etc/my.cnf docker.io/cytopia/mysql-8.0

在从服务器启动

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=abcd123 -p 3306:3306 -v /etc/localtime:/etc/localtime:ro -v /home/wen/slave.my.cnf:/etc/my.cnf docker.io/cytopia/mysql-8.0

使用数据库连接工具进行连接,先连接主服务器的数据库

依次执行

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';

flush privileges;

show master status;

可以看到主数据库的状态

99d7d9ade78e650e59abc83d797b63d8d48.jpg

切换到从数据库,依次执行

CHANGE MASTER TO

MASTER_HOST='172.31.27.67',
MASTER_PORT=3307,
MASTER_USER='root',
MASTER_PASSWORD='abcd123',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=6143;

start slave;

show slave status;

如果我们看到

83570ad0572bd2c600156ec74d54eebe927.jpg

其中Slave_IO_Running,Slave_SQL_Running必须为Yes,表示同步成功,否则执行

stop slave;

将之前的动作重新执行一遍。之后我们在主库做的SQL语句执行,会同步到从库中来。

转载于:https://my.oschina.net/u/3768341/blog/3005168

你可能感兴趣的文章
docker快速搭建分布式爬虫pyspider
查看>>
raid0
查看>>
jsp中的Html转义
查看>>
windows下的Oracle卸载
查看>>
SQUID代理服务器小问题
查看>>
POJ1004·Financial Management
查看>>
Linux文件系统的创建、检测、修复、分区等工具的使用
查看>>
Centos6.5利用RubyGems的fpm制作zabbix_agent的rpm包,并使用ansible批量部署
查看>>
Play 源码分析心得
查看>>
sqlserver查看死锁的存储过程
查看>>
Mybatis 3 中文文档
查看>>
JVM层GC调优(上)
查看>>
在VirtualBox中的CentOS 6.3下安装VirtualBox增强包(GuestAd...
查看>>
Java开发中的23种设计模式详解(转)
查看>>
我的友情链接
查看>>
Java jvm关闭钩子
查看>>
数据结构和算法导论
查看>>
组策略18招
查看>>
关于Android中的数据存储
查看>>
Java调用C/C++实现的DLL动态库——JNI
查看>>