Docker学习(安装-卸载-Mysql集群-PXC框架)

环境

  • centos7

先要更新yum的所有包

yum -y update

用yum安装docker

yum install -y docker

启动docker

service docker start

停止docker

service docker stop

重启docker

service docker restart

寻找镜像

docker search java

拉取镜像

docker pull java

删除安装的docker

yum remove docker-*

启动docker

systemctl start docker

更改docker拉取的国内镜像

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

记得一定要更改这个json,后面有一个逗号

vi /etc/docker/daemon.json

查看本地所有容器

docker ps -a  

查看本地所有镜像

docker images

将docker的镜像存到虚拟机里面

docker save java > /home/java.tar.gz

将docker加载保存到本地的镜像

docker load < /home/java.tar.gz

docker停止容器

docker stop myjava

搭建Percona的集群

Percona Server由领先的MySQL咨询公司Percona发布。 Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。

Percona团队的最终声明是“Percona Server是由Oracle发布的最接近官方MySQL Enterprise发行版的版本”,因此与其他更改了大量基本核心MySQL代码的分支有所区别。 Percona Server的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。
Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了perconatoolkit等DBA管理工具箱

PXC-Mysql高可用

galera产品是以galera cluster方式为mysql提高高可用集群解决方案的。galera cluster就是集成了galera插件的mysql集群。galera replication是codership提供的mysql数据同步方案,具有高可用性,方便扩展,并且可以实现多个mysql节点间的数据同步复制与读写,可保障数据库的服务高可用及数据强一致性。

PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galera cluster最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。本身galera cluster也是一种多主架构。galera cluster最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证MySQL集群的数据一致性;

对galera cluster的封装有两个,虽然名称不同,但实质都是一样的,使用的都是galera cluster。一个MySQL的创始人在自己全新的MariaDB上实现的MAriaDB cluster;一个是著名的MySQL服务和工具提供商percona实现的percona xtradb cluster,简称PXC

要搭建PXC架构至少需要3个mysql实例来组成一个集群,三个实例之间不是主从模式,而是各自为主,所以三者是对等关系,不分从属,这就叫multi-master架构。客户端写入和读取数据时,连接哪个实例都是一样的。读取到的数据时相同的,写入任意一个实例之后,集群自己会将新写入的数据同步到其他实例上,这种架构不共享任何数据,是一种高冗余架构。

拉取docker对应的percona的镜像

docker pull percona/percona-xtradb-cluster

修改镜像的名字-这个镜像的名字太长了

docker tag docker.io/percona/percona-xtradb-cluster percona

对应的这个percona的镜像具体的地址

https://hub.docker.com/r/percona/percona-xtradb-cluster

创建docker的内部网络

docker network create net1

但是要想跑起来,这个必须使用subnet的地址,否则跑不起来

docker network create  --subnet=172.18.0.0/24 net1

查看刚刚创建的网络的具体信息

docker network inspect net1

删除创建的net网络信息

docker network rm net1

为具体的容器创建它所用的外部加载卷

docker volume create --name v1
docker volume create --name v2
docker volume create --name v3

查看刚刚加载卷的具体信息

docker inspect v1

删除加载卷

docker volume rm v1

-d后台运行;-p端口映射;-v加载卷映射;-e参数;–privileged最高权限;–name集群名字 --net使用的网段; -p设置的ip地址内部

docker run -d -p 3306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged  --name=node1 --net=net1 --ip 172.18.0.2 percona

以上是第一台机器的运行,以下是随从的机器
多了一个CLUSTER_JOIN以哪个节点为同步数据的

docker run -d -p 3307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged  --name=node2 --net=net1 --ip 172.18.0.3 percona

接下来使用数据库链接软件测试
在这里插入图片描述完美

猜你喜欢

转载自blog.csdn.net/lovePaul77/article/details/103755101