docker上部署mysql主从

1.MYSQL主从简介

1.1 什么是MYSQL主从

MYSQL主从是指,创建两个或以上的相同内容的数据库,而其中一个作为主数据库用于增删改,而另外的作为从数据库用于查操作.这样一是因为一个数据库难以处理高并发的请求,另一个就是防止数据都放在同一个库中而容易出现数据丢失的风险.

1.2 基本原理

在主数据库master实现了修改的事务前,会将这些事务写入日志文件中,当写入操作完成后,master通知储存引擎提交事务.而从数据库slave们会将日志内容拷贝到中继日志中,最后再读出中继日志以完成和主数据库master的数据同步

2. docker上搭建mysql主从

2.1 搭建前的准备
  • 在根目录下的usr/local文件夹中创建software文件夹,进入software后创建以下格式的文件

  •  打开端口的访问,不建议直接关闭防火墙
    firewall-cmd --zone=public --add-port=3306/tcp --permanent 
    firewall-cmd --zone=public --add-port=3310/tcp --permanent 
    firewall-cmd --zone=public --add-port=3312/tcp --permanent 
    firewall-cmd --reload
    
  • 在3306/conf,3310/conf,3312/conf下创建my.cnf配置文件,文件中先写入以下内容
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
default_authentication_plugin=mysql_native_password

# Custom config should go here
!includedir /etc/mysql/conf.d/

server_id=200
2.2 配置主服务器master容器
  • 命令行中输入以下代码,密码可以自己更改,别忘记就行
docker run -it \
--name mysql_3306 \
--privileged \
-p 3306:3306 \
-v /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql
  • 再输入docker ps -a检查容器是否创建成功,成功效果如下:

  •  进入docker容器运行mysql,没问题即可

2.3 配置从服务器master容器
  • 先进入主服务器中,输入show master status;记录出现的position,比如155.
  • 进入/usr/local/software/mysql/3306/conf/my.cnf 在配置文件最后加上下面的代码
log_bin=mysql-bin                         #binlog名称
binlog_format=row                         #binlog的格式
  • 进入/usr/local/software/mysql/3310/conf/my.cnf ,准备修改从服务器的配置文件,先将server_id从200修改成其他数字如210,在配置文件最后加上下面的代码
log_bin=mysql-slave01-bin
relay_log=xxx-relay-bin
read_only=1
  • 命令行中输入以下代码,创建从数据库,同样密码可以改成自己想要的
docker run -it \
--name mysql_3310 \
--privileged \
-p 3310:3306 \
-v /usr/local/software/mysql/3310/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3310/data:/var/lib/mysql \
-v /usr/local/software/mysql/3310/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql
  • 获取主数据库的ip地址,后面要使用,记录下IPAddress
docker inspect mysql_3306 |grep IPA
  • 进入从数据库中,输入以下代码,注意修改master_host和MASTER_LOG_POS的参数
change master to
master_host='这里输入上面查询出的IPAddress',
master_user='slave',
master_password='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=这里输入2.2第一步中查询出的position;
  • 当前界面中输入start slave后再输入show slave status \G; 这里分号不能少,查询出的数据中如果'Slave IO_Running'和'Slave SQL Running'的结果都是Yes则说明配置成功

3. 结尾

配置完成后,可以在主数据库中新建表,而查询从数据库会出现相同的表,也可以再创建一个从数据库,只是要注意再次使用show master status;查询主数据中得到新的position在后面的最后一步配置中要修改MASTER_LOG_POS,并且如果使用新的端口号需要在防火墙中另外开放

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值