前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker安装mysql主从集群

使用docker安装mysql主从集群

原创
作者头像
玖叁叁
发布2023-04-27 08:58:06
7720
发布2023-04-27 08:58:06
举报
文章被收录于专栏:玖叁叁

安装MySQL主容器

首先,使用以下命令创建MySQL主容器:

代码语言:javascript
复制
docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

在这里,使用了Docker官方提供的MySQL镜像,并且使用了MySQL的默认3306端口。-e选项用于设置MySQL的root密码。

配置MySQL主容器

使用以下步骤配置MySQL主容器:

1.连接MySQL主容器

使用以下命令连接到MySQL主容器:

代码语言:javascript
复制
docker exec -it mysql-master bash

2.创建数据库和用户

在连接到MySQL主容器后,使用以下命令创建一个名为mydb的数据库,并创建一个名为myuser的用户:

代码语言:javascript
复制
mysql -uroot -p123456 -e "create database mydb;"
mysql -uroot -p123456 -e "create user 'myuser'@'%' identified by 'mypassword';"
mysql -uroot -p123456 -e "grant all privileges on mydb.* to 'myuser'@'%';"

3.启用二进制日志

使用以下命令启用MySQL主容器的二进制日志功能:

代码语言:javascript
复制
mysql -uroot -p123456 -e "set global log_bin_trust_function_creators=1;"
mysql -uroot -p123456 -e "set global binlog_format='ROW';"
mysql -uroot -p123456 -e "set global server_id=1;"
mysql -uroot -p123456 -e "set global log_bin='/var/lib/mysql/mysql-bin.log';"
mysql -uroot -p123456 -e "flush logs;"

在上面的命令中,设置了二进制日志文件的位置为/var/lib/mysql/mysql-bin.log。

安装MySQL从容器

接下来,使用以下命令创建MySQL从容器,并将它们连接到MySQL主容器:

代码语言:javascript
复制
docker run --name mysql-slave1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
docker run --name mysql-slave2 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

在上面的命令中,创建了两个MySQL从容器,使用了3307和3308端口,并设置了相同的MySQL root密码。

配置MySQL从容器

使用以下步骤配置MySQL从容器:

1.连接MySQL从容器

使用以下命令连接到MySQL从容器:

代码语言:javascript
复制
docker exec -it mysql-slave1 bash

2.启用主从复制

在连接到MySQL从容器后,使用以下命令配置MySQL从容器的主从复制:

代码语言:javascript
复制
mysql -uroot -p123456 -e "change master to master_host='mysql-master', master_user='myuser', master_password='mypassword', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=154;"
mysql -uroot -p123456 -e "start slave;"

在上面的命令中,设置了MySQL主容器的IP地址,用户名和密码,二进制日志文件名和位置以及复制的起始位置。最后,使用start slave命令启动主从复制。

3.重复上述步骤

重复上述步骤,在mysql-slave2容器中配置主从复制:

代码语言:javascript
复制
docker exec -it mysql-slave2 bash
mysql -uroot -p123456 -e "change master to master_host='mysql-master', master_user='myuser', master_password='mypassword', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=154;"
mysql -uroot -p123456 -e "start slave;"

测试主从复制

现在,可以测试MySQL主从复制是否正常工作。在MySQL主容器中,使用以下命令创建一个名为test的表:

代码语言:javascript
复制
mysql -uroot -p123456 -e "use mydb; create table test (id int(11) not null auto_increment, name varchar(255), primary key (id)); insert into test (name) values ('test');"

然后,在mysql-slave1和mysql-slave2容器中检查是否已复制数据:

代码语言:javascript
复制
docker exec -it mysql-slave1 bash
mysql -uroot -p123456 -e "use mydb; select * from test;"
exit

docker exec -it mysql-slave2 bash
mysql -uroot -p123456 -e "use mydb; select * from test;"
exit

如果数据正确地复制到从容器中,则主从复制已成功完成。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装MySQL主容器
  • 配置MySQL主容器
    • 1.连接MySQL主容器
      • 2.创建数据库和用户
        • 3.启用二进制日志
        • 安装MySQL从容器
        • 配置MySQL从容器
          • 1.连接MySQL从容器
            • 2.启用主从复制
              • 3.重复上述步骤
              • 测试主从复制
              相关产品与服务
              容器镜像服务
              容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档