mysql集群部署

1、下载mysql镜像

docker pull mysql:5.7

2、创建Master实例并启动

sudo docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-v /mydata/mysql/master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=zan123456 \
-e TZ=Asia/Shanghai \
-d mysql:5.7 \
--default-time_zone='+8:00'

参数说明
-p 3307:3306  将容器的3306端口映射到主机3307端口
-v /mydata/mysql/master/conf:/etc/mysql  将配置文件夹挂载到主机
-v /mydata/mysql/master/log:/var/log/mysql 将日志文件夹挂载到主机
-v /mydata/mysql/master/data:/var/lib/mysql 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=zan123456 初始化root用户的密码
-e TZ=Asia/Shanghai 设置容器时区
--default-time_zone='+8:00'  mysql的时区

修改master基本配置
vim /mydata/mysql/master/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

注意:skip-name-resolve 一定要加上,不然连接mysql会超级慢

添加master主从复制部分配置

#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#是否只读标记,主有 增删改查 操作
read-only=0
# 设置不要复制的数据库(可设置多个)
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
#设置需要复制的数据库
binlog-do-db=diandimall_ums
binlog-do-db=diandimall_pms
binlog-do-db=diandimall_oms
binlog-do-db=diandimall_sms
binlog-do-db=diandimall_wms
binlog-do-db=diandimall_admin

重启master

3、创建Slave实例并启动

sudo docker run -p 3317:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver/log:/var/log/mysql \
-v /mydata/mysql/slaver/data:/var/lib/mysql \
-v /mydata/mysql/slaver/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=zan123456 \
-e TZ=Asia/Shanghai \
-d mysql:5.7 \
--default-time_zone='+8:00'

修改slaver基本配置
vim /mydata/mysql/slaver/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

添加slaver主从复制部分配置

#从服务器唯一ID
server-id=2
#启用二进制日志
log-bin=mysql-bin
#是否只读标记,从只有读操作
read-only=1
# 设置不要复制的数据库(可设置多个)
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
#设置需要复制的数据库
binlog-do-db=diandimall_ums
binlog-do-db=diandimall_pms
binlog-do-db=diandimall_oms
binlog-do-db=diandimall_sms
binlog-do-db=diandimall_wms
binlog-do-db=diandimall_admin

重启slaver
docker restart mysql-master mysql-slaver-01
docker update mysql-master mysql-slaver-01 --restart=always

4、为master授权用户来同步他的数据

1、进入master容器
docker exec -it mysql-master /bin/bash

2、进去mysql内部(mysql -uroot -p)
   1)、授权root可以远程访问(主从无关,为了方便我们远程连接mysql)[docker mysql 这一步不需要]
       GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'zan123456' WITH GRANT OPTION;
       flush privileges;
    2)、添加用来同步的用户[可以用navicat连上mysql-master执行以下命令]
        GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY 'zan123456';   
   3)、查看master状态
       show master status\G;     

5、配置slaver同步master数据

1、进入slaver容器
docker exec -it mysql-slaver-01 /bin/bash

2、进去mysql内部(mysql -uroot -p)
   1)、授权root可以远程访问(主从无关,为了方便我们远程连接mysql)[docker mysql 这一步不需要]
       GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'zan123456' WITH GRANT OPTION;
       flush privileges;
    
    2)、设置主库连接[可以用navicat连上mysql-slaver-01执行以下命令] 10.206.0.14 是内网ip
        CHANGE MASTER TO MASTER_HOST='10.206.0.14', MASTER_USER='backup',MASTER_PASSWORD='zan123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=0,MASTER_PORT=3307; 
   3)、启动从库同步
       start slave;
   4)、查看从库状态
       show slave status\G;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值