Docker数据卷容器--实现两个或多个容器之间的数据同步


什么是容器数据卷

先看下面一副图
在这里插入图片描述

自己先创造了一个叫centos1的容器,再用–volumes-from命令创建一个叫centos2的容器centos1和centos2实现了数据共享,centos1被称作是数据卷容器,还可以称作父容器

==通过volumes from挂载 有点相当于继承 ==

数据卷容器多用于实现mysql redis之间的数据共享

实现三个容器之间的数据共享

启动一个叫docker1容器

在这里插入图片描述
在这里插入图片描述

依次启动docker2和docker3并用—volumes-from挂载

先按住ctrl + P +Q 退出但不停止运行容器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

即使删除容器docker1,其他容器的数据还是存在的

在这里插入图片描述

实现mysql数据共享的方法

看了上面的不难想到

docker run -d -p 3310:3306 -v /home/mysql/conf -v /home/mysql/data -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7

结论

容器之间可以尽享一些信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止(意识是所有用它的容器停止),但是一旦数据持久化到本地是 永远保存在本地了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Active-Active复制是指两个多个PostgreSQL数据库实例之间的多向同步。在这种复制方式中,每个数据库实例都可以读取和写入数据,而不是像传统的主从复制方式那样只允许主节点写入数据,从节点只允许读取数据。 下面是使用docker-compose容器实现PostgreSQL Active-Active复制的详细步骤: 1. 创建docker-compose.yml文件并定义两个PostgreSQL容器,如下所示: ``` version: '3' services: postgresql1: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: mydb PGDATA: /var/lib/postgresql/data/pgdata volumes: - pgdata1:/var/lib/postgresql/data ports: - "5431:5432" networks: - postgresql postgresql2: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: mydb PGDATA: /var/lib/postgresql/data/pgdata volumes: - pgdata2:/var/lib/postgresql/data ports: - "5432:5432" networks: - postgresql volumes: pgdata1: pgdata2: networks: postgresql: ``` 2. 启动docker-compose容器,运行以下命令: ``` docker-compose up -d ``` 3. 进入postgresql1容器,创建复制用户并授权: ``` docker exec -it postgresql1 bash su postgres psql CREATE USER replication WITH REPLICATION ENCRYPTED PASSWORD 'password'; GRANT ALL PRIVILEGES ON DATABASE mydb TO replication; ``` 4. 修改postgresql.conf文件和pg_hba.conf文件 在postgresql1容器的 /var/lib/postgresql/data 目录下找到postgresql.conf文件和pg_hba.conf文件,修改如下: postgresql.conf: ``` listen_addresses = '*' wal_level = replica max_wal_senders = 10 wal_keep_segments = 32 ``` pg_hba.conf: ``` host replication replication 172.20.0.0/16 md5 ``` 5. 重启postgresql1容器 ``` docker-compose restart postgresql1 ``` 6. 在postgresql2容器中创建复制槽并启动复制流 ``` docker exec -it postgresql2 bash su postgres psql SELECT * FROM pg_create_physical_replication_slot('replication_slot_name'); pg_basebackup -h postgresql1 -D /var/lib/postgresql/data -U replication -v -P --xlog-method=stream pg_ctl -D /var/lib/postgresql/data start ``` 7. 测试Active-Active复制 在任何一个容器中创建表或插入数据,可以在另一个容器中看到相同的数据。如果其中一个容器出现故障,另一个容器可以继续提供服务,因为它们都具有相同的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值