当前位置: 首页> 文旅> 艺术 > 建工教育网_2024最火的十大新闻有哪些_百度互联网营销顾问_网络的推广方式有哪些

建工教育网_2024最火的十大新闻有哪些_百度互联网营销顾问_网络的推广方式有哪些

时间:2025/7/10 0:11:48来源:https://blog.csdn.net/2301_80740583/article/details/143951529 浏览次数:0次
建工教育网_2024最火的十大新闻有哪些_百度互联网营销顾问_网络的推广方式有哪些

一、MySQL容器搭建主从复制集群

1、创建 MySQL 容器:

使用 Docker 创建多个 MySQL 容器。

$ docker run -d --name mysql-master -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 mysql:latest
$ docker run -d --name mysql-slave-1 -e MYSQL_ROOT_PASSWORD=root_password -p 3307:3306 mysql:latest
$ docker run -d --name mysql-slave-2 -e MYSQL_ROOT_PASSWORD=root_password -p 3308:3306 mysql:latest
2、配置主服务器:

进入主 MySQL 容器,创建一个用于复制的用户,并记录下日志位置(MASTER_LOG_FILE 和 MASTER_LOG_POS):

$ docker exec -it mysql-master mysql -uroot -pmysql> CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
mysql> FLUSH PRIVILEGES;
mysql> SHOW MASTER STATUS;
3、配置从服务器:

进入每个从 MySQL 容器,配置它们从主服务器同步数据:

$ docker exec -it mysql-slave-1 mysql -uroot -pmysql> CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='replica_user',
MASTER_PASSWORD='replica_password',
MASTER_LOG_FILE='mysql-bin.000001',  -- 根据主服务器返回的日志文件名进行替换
MASTER_LOG_POS=  107;                -- 根据主服务器返回的日志位置进行替换START SLAVE;
mysql> SHOW SLAVE STATUS\G;

二、MySQL容器使用amoeba创建读写分离集群

1. 准备 MySQL 容器

至少需两个 MySQL 容器,一个作为主库(Master),其他作为从库(Slave)

$ docker run -d --name mysql-master -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 mysql:latest
$ docker run -d --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=root_password -p 3307:3306 mysql:latest
$ docker run -d --name mysql-slave2 -e MYSQL_ROOT_PASSWORD=root_password -p 3308:3306 mysql:latest
2. 配置 MySQL 主从复制

主从复制步骤同上

3. 部署 Amoeba

Amoeba 是一个轻量级的 MySQL 读写分离中间件,它支持将数据库操作根据读写分离策略分发到不同的数据库实例。

(1)下载并启动 Amoeba
$ docker run -d --name amoeba -p 3309:3306 amoeba/amoeba
(2)配置 Amoeba

在配置文件中设置主库和从库的地址。

[mysql]
master = mysql-master:3306
slave = mysql-slave1:3306
slave = mysql-slave2:3306
(3)修改 MySQL 客户端连接

连接到 Amoeba 中间件,所有的读写操作将由 Amoeba 自动分发。

$ mysql -h localhost -P 3309 -u root -p
4. 验证读写分离

在 Amoeba 中,执行写操作(如插入、更新)时会自动路由到主库,而执行查询操作(如 SELECT)则会路由到从库。

-- 写操作
INSERT INTO test_table (id, name) VALUES (1, 'test');
-- 读操作
SELECT * FROM test_table;

Amoeba 会根据请求类型自动分发到主库或从库。

三、双主双从四台服务器上部署MySQL高可用容器集群

1、环境假设
  • 四台服务器:
    • Server 1: 192.168.1.101 (Master 1)
    • Server 2: 192.168.1.102 (Slave 1)
    • Server 3: 192.168.1.103 (Master 2)
    • Server 4: 192.168.1.104 (Slave 2)
2、架构设计
  1. Master-Master 复制:Server 1 和 Server 3 将互为主服务器,Server 2 和 Server 4 将分别作为从服务器,形成双主双从架构。
  2. 高可用性:当一个主服务器发生故障时,另一个主服务器将继续处理写操作,从服务器将继续提供读操作。
  3. 负载均衡:可以使用 HAProxy 进行负载均衡,自动将请求路由到可用的 MySQL 实例。
3、部署步骤
(1)在四台服务器上安装 Docker 和 MySQL 容器
安装 Docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker检查 Docker 是否正常运行
docker --version
(2)在每台服务器上启动 MySQL 容器
在 Server 1 启动 MySQL 容器
docker run -d \--name mysql-master-1 \--env MYSQL_ROOT_PASSWORD=root_password \-p 3306:3306 \mysql:8在 Server 3 启动 MySQL 容器
docker run -d \--name mysql-master-2 \--env MYSQL_ROOT_PASSWORD=root_password \-p 3306:3306 \mysql:8
(3)配置 MySQL 主主复制(Master-Master)
3.1 在 Server 1(Master 1)上配置 MySQL
  1. 登录到 Server 1 的 MySQL 容器。
docker exec -it mysql-master-1 bash
mysql -u root -p
  1. 在 MySQL 中设置服务器 ID 和启用二进制日志。
-- 设置 server_id 和启用 binlogSET GLOBAL server_id = 1;
SET GLOBAL log_bin = 'mysql-bin';
SET GLOBAL binlog_format = 'ROW';-- 创建用于复制的账户CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';-- 查看当前的 binlog 文件和位置SHOW MASTER STATUS;
记下 File 和 Position,后面将用于配置从服务器。
3.2 在 Server 3(Master 2)上配置 MySQL
  1. 登录到 Server 3 的 MySQL 容器。
docker exec -it mysql-master-2 bash
mysql -u root -p
  1. 在 MySQL 中设置服务器 ID 和启用二进制日志。
-- 设置 server_id 和启用 binlogSET GLOBAL server_id = 2;
SET GLOBAL log_bin = 'mysql-bin';
SET GLOBAL binlog_format = 'ROW';-- 创建用于复制的账户CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';-- 查看当前的 binlog 文件和位置SHOW MASTER STATUS;
记下 File 和 Position。
3.3 在 Server 2(Slave 1)上配置主服务器(Master 1)复制
  1. 登录到 Server 2 的 MySQL 容器。
docker exec -it mysql-master-1 bash
mysql -u root -p
  1. 配置 Server 2 作为 Server 1 的从服务器。
-- 配置主服务器信息
CHANGE MASTER TOMASTER_HOST='192.168.1.101',  -- Master 1 的 IP 地址MASTER_USER='replica',         -- 复制账户MASTER_PASSWORD='replica_password', -- 复制账户密码MASTER_LOG_FILE='mysql-bin.000001',  -- 从 Master 1 的 SHOW MASTER STATUS 获取MASTER_LOG_POS=154;           -- 从 Master 1 的 SHOW MASTER STATUS 获取-- 启动复制START SLAVE;-- 查看复制状态SHOW SLAVE STATUS\G;
确保 Slave_IO_Running 和 Slave_SQL_Running 显示为 Yes。
3.4 在 Server 4(Slave 2)上配置主服务器(Master 2)复制
  1. 登录到 Server 4 的 MySQL 容器。
docker exec -it mysql-master-2 bash
mysql -u root -p
  1. 配置 Server 4 作为 Server 3 的从服务器。
-- 配置主服务器信息
CHANGE MASTER TOMASTER_HOST='192.168.1.103',  -- Master 2 的 IP 地址MASTER_USER='replica',         -- 复制账户MASTER_PASSWORD='replica_password', -- 复制账户密码MASTER_LOG_FILE='mysql-bin.000001',  -- 从 Master 2 的 SHOW MASTER STATUS 获取MASTER_LOG_POS=154;           -- 从 Master 2 的 SHOW MASTER STATUS 获取-- 启动复制START SLAVE;-- 查看复制状态SHOW SLAVE STATUS\G;
确保 Slave_IO_Running 和 Slave_SQL_Running 显示为 Yes。
4. 确保双主双从复制正常运行
-- 在 Server 1 上插入数据
INSERT INTO testdb.test_table (id, name) VALUES (1, 'Master1 Data');
然后在 Server 2、Server 3 和 Server 4 上检查数据是否同步:
-- 在其他服务器上查询数据
SELECT * FROM testdb.test_table;
5. 使用 HAProxy 进行负载均衡和故障切换
(1)安装 HAProxy:
sudo yum install -y haproxy
(2)配置 HAProxy:

编辑 /etc/haproxy/haproxy.cfg 文件,配置前端和后端。

frontend mysql_frontendbind *:3306default_backend mysql_backend
backend mysql_backendbalance roundrobinserver mysql-master-1 192.168.1.101:3306 checkserver mysql-master-2 192.168.1.103:3306 check
(3)启动 HAProxy:
sudo systemctl start haproxy
sudo systemctl enable haproxy

(4)现在可通过 HAProxy IP 地址访问 MySQL 服务,HAProxy 会自动路由到两个主服务器。

关键字:建工教育网_2024最火的十大新闻有哪些_百度互联网营销顾问_网络的推广方式有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: