mysql8.0 利用docker容器安装配置多主多从集群

1. 在/user/local/share/下创建mysql文件夹,在mysql文件夹目录下创建4个文件夹分别是:
master1, master2, slave1, slave2分别在每个目录下建立data, conf, logs用于数据持久化

创建后如下

mysql8.0 利用docker容器安装配置多主多从集群

 

2.创建容器:

1)创建一个名为master1的mysql容器(主 mysql)  

docker run -p 4306:3306 --name master1 -v /usr/local/share/mysql/master1/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/master1/logs:/var/log/mysql -v /usr/local/share/mysql/master1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -itd mysql:8.0.22  

2)创建一个名为master2的mysql容器(主 mysql)

docker run -p 4307:3306 --name master2 -v /usr/local/share/mysql/master2/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/master2/logs:/var/log/mysql -v /usr/local/share/mysql/master2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -itd mysql:8.0.22 

3)创建一个名为salve1 的mysql容器(从 mysql)

docker run -p 5306:3306 --name salve1 -v /usr/local/share/mysql/salve1/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/salve1/logs:/var/log/mysql -v /usr/local/share/mysql/salve1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -itd mysql:8.0.22

4)创建一个名为salve2的mysql容器(从 mysql)

docker run -p 5307:3306 --name salve2 -v /usr/local/share/mysql/salve2/conf:/etc/mysql/conf.d -v /usr/local/share/mysql/salve2/logs:/var/log/mysql -v /usr/local/share/mysql/salve2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= 123456 -itd mysql:8.0.22

命令参数注解:

  --name : 容器名称
  -p : 映射容器端口号和宿主机端口号
  -v : 挂载宿主机目录和docker容器中的目录,前面是宿主机目录,后面是容器内部目录
  -d : 后台运行容器
  -e :环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码
  -itd : 指定数据库版本

3.查看是否将mysql容器创建成功

命令:docker ps

mysql8.0 利用docker容器安装配置多主多从集群

4.配置(双主双从)

  1) 配置master1

  命令:vim /usr/local/share/mysql/master1/conf/my.cnf  添加如下内容:   

  [mysqld]

  # master01主服务器01唯一ID
  server-id=4306

  # 启用二进制日志
  log-bin=mysql-bin

  #从库的中继日志,主库日志写到中继日志,中继日志再重做到从库
  # relay-log=myslql-relay-bin

  # binlog保留时间7天
  expire_logs_days=7

  # binlog 文件的大小
  max_binlog_size=1G

  #设置logbin格式。取值:STATEMENT (默认),ROW,MIXED
  binlog_format=ROW

  # 设置不要赋值的数据
  binlog-ignore-db=mysql
  binlog-ignore-db=information_schema
  binlog-ignore-db=performance_schema
  binlog-ignore-db=sys

  # 设置需要复制的数据(可选)
  # 如果配置了此项,就是只复制那个数据库, 如果不指定就是所有
  # binlog-do-db=需要复制的主数据库1

  # 设置login格式
  binlog_format=STATEMENT

  # 在作为从数据库的时候,有写入操作也要更新二进制日志文件
  log-slave-updates

  # 该从库是否写入二进制日志。如果需要成为多主则可启用。只读可以不需要
  log-slave-updates=1

  #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
  auto-increment-increment=2

  # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
  auto-increment-offset=1

  2)配置master2

  命令:vim /usr/local/share/mysql/master2/conf/my.cnf  添加如下内容:  

  [mysqld]

  # master01主服务器01唯一ID
  server-id=4307

  # 启用二进制日志
  log-bin=mysql-bin

  #从库的中继日志,主库日志写到中继日志,中继日志再重做到从库
  # relay-log=myslql-relay-bin

  # binlog保留时间7天
  expire_logs_days=7

  # binlog 文件的大小
  max_binlog_size=1G

  #设置logbin格式。取值:STATEMENT (默认),ROW,MIXED
  binlog_format=ROW

  # 设置不要赋值的数据
  binlog-ignore-db=mysql
  binlog-ignore-db=information_schema
  binlog-ignore-db=performance_schema
  binlog-ignore-db=sys

  # 设置需要复制的数据(可选)
  # 如果配置了此项,就是只复制那个数据库, 如果不指定就是所有
  # binlog-do-db=需要复制的主数据库1

  # 设置login格式
  binlog_format=STATEMENT

  # 在作为从数据库的时候,有写入操作也要更新二进制日志文件
  log-slave-updates

  # 该从库是否写入二进制日志。如果需要成为多主则可启用。只读可以不需要
  log-slave-updates=1

  #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
  auto-increment-increment=2

  # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
  auto-increment-offset=1

 

  3)配置slave1

  命令:vim /usr/local/share/mysql/slave1/conf/my.cnf  添加如下内容:  

[mysqld]
# 从服务唯一ID
server-id=5306
# 启用中继日志
relay-log=mysql-relay

  4)配置slave2

  命令:vim /usr/local/share/mysql/slave2/conf/my.cnf  添加如下内容:  

[mysqld]
# 从服务唯一ID
server-id=5307
# 启用中继日志
relay-log=mysql-relay








mysql8.0 利用docker容器安装配置多主多从集群

上一篇:解决 ubuntu下mysql 14.14 未设置密码或忘记密码


下一篇:MySQL 联表更新