环境
- 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
接下来使用数据库链接软件测试
完美