docker安装PXC的MySQL集群

合集下载

docker搭建Mysql集群的方法示例

docker搭建Mysql集群的方法示例

docker搭建Mysql集群的⽅法⽰例docker基本指令:更新软件包yum -y update安装Docker虚拟机(centos 7)yum install -y docker运⾏、重启、关闭Docker虚拟机service docker startservice docker stop搜索镜像docker search 镜像名称下载镜像docker pull 镜像名称查看镜像docker images删除镜像docker rmi 镜像名称运⾏容器docker run 启动参数镜像名称查看容器列表docker ps -a当我们想要使⽤java环境,我们可以这么操作:搜索:[root@VM_71_225_centos ~]# docker search javaINDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATEDdocker.io docker.io/node Node.js is a JavaScript-based platform for... 5752 [OK]docker.io docker.io/tomcat Apache Tomcat is an open source implementa... 1891 [OK]docker.io docker.io/java Java is a concurrent, class-based, and obj... 1745 [OK]docker.io docker.io/openjdk OpenJDK is an open-source implementation o... 1031 [OK]下载:[root@VM_71_225_centos ~]# docker pull docker.io/javaUsing default tag: latestTrying to pull repository docker.io/library/java ...latest: Pulling from docker.io/library/java5040bd298390: Downloading [=> ] 1.572 MB/51.36 MB运⾏:[root@VM_71_225_centos ~]# docker run -it --name myjava docker.io/java bashroot@25623e12b759:/# java-i: 以交互模式运⾏容器,通常与 -t 同时使⽤;-t: 为容器重新分配⼀个伪输⼊终端,通常与 -i 同时使⽤;安装PXC集群(在此不做mysql pxc集群与replication集群的⽅案优劣说明,在此选⽤pxc集群⽅案[多节点备份与强联合性]):安装PXC镜像docker pull percona/percona-xtradb-cluster查看本地镜像[root@VM_71_225_centos ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/hello-world latest e38bc07ac18e 2 months ago 1.85 kBdocker.io/percona/percona-xtradb-cluster latest f1439de62087 3 months ago 413 MBdocker.io/java latest d23bdf5b1b1b 17 months ago 643 MBdocker.io/percona/percona-xtradb-cluster 太长,进⾏改名:[root@VM_71_225_centos ~]# docker tag percona/percona-xtradb-cluster pxc[root@VM_71_225_centos ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/hello-world latest e38bc07ac18e 2 months ago 1.85 kBdocker.io/percona/percona-xtradb-cluster latest f1439de62087 3 months ago 413 MBpxc latest f1439de62087 3 months ago 413 MBdocker.io/java latest d23bdf5b1b1b 17 months ago 643 MB创建net1⽹段:docker network create --subnet=172.18.0.0/16 net1创建五个数据卷(pxc⽆法直接存取宿组机的数据,所以创建五个docker数据卷)docker volume create v1docker volume create v2docker volume create v3docker volume create v4docker volume create v5查看数据卷位置:[root@VM_71_225_centos code]# docker inspect v1[{"Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/v1/_data","Name": "v1","Options": {},"Scope": "local"}]创建5节点的PXC集群#创建第1个MySQL节点docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc等待2分钟后,再创建第⼆个节点,等待第⼀个节点实例化完毕后,才能开启第⼆个节点实例,不然会瞬间停⽌创建其他节点:#创建第2个MySQL节点docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0. #创建第3个MySQL节点docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc#创建第4个MySQL节点docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc#创建第5个MySQL节点docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.测试在任意mysql节点创建数据库:mysql -h 172.18.0.3 -uroot -pabc123456mysql> create database test;Query OK, 1 row affected (0.03 sec)登录其他节点数据库,能看到已经进⾏了同步,构成简单的mysql集群安装Haproxy进⾏⾼可⽤与负载均衡拉取haproxydocker pull haproxy编写Haproxy配置⽂件vi /home/soft/haproxy.cfg配置⽂件如下:global#⼯作⽬录chroot /usr/local/etc/haproxy#⽇志⽂件,使⽤rsyslog服务中local5⽇志设备(/var/log/local5),等级infolog 127.0.0.1 local5 info#守护进程运⾏daemondefaultslog globalmode http#⽇志格式option httplog#⽇志中不记录负载均衡的⼼跳检测记录option dontlognull#连接超时(毫秒)timeout connect 5000#客户端超时(毫秒)timeout client 50000#服务器超时(毫秒)timeout server 50000#监控界⾯listen admin_stats#监控界⾯的访问的IP和端⼝bind 0.0.0.0:8888#访问协议mode http#URI相对地址stats uri /dbs#统计报告格式stats realm Global\ statistics#登陆帐户信息stats auth admin:abc123456#数据库负载均衡listen proxy-mysql#访问的IP和端⼝bind 0.0.0.0:3306#⽹络协议mode tcp#负载均衡算法(轮询算法)#轮询算法:roundrobin#权重算法:static-rr#最少连接算法:leastconn#请求源IP算法:sourcebalance roundrobin#⽇志格式option tcplog#在MySQL中创建⼀个没有权限的haproxy⽤户,密码为空。

在Docker中安装Mysql

在Docker中安装Mysql

在Docker中安装Mysql前⾔此篇幅内容较多,讲解的很详细,也有很多知识点。

能耐⼼认真的读完,就很不错了~如果你觉得此⽂章不错的话,或者是根据此⽂档进⾏安装mysql的话,抽空在⽂档最下⽅留个⾔吧让我看到你的⽀持Docker 中国官⽅镜像加速如果觉得国外下载速度太慢,可以配置⼀个“Docker 中国官⽅镜像加速”,来提⾼镜像下载的速度。

⼀般情况下,都会永久性的配置镜像加速,在Linux中修改 /etc/docker/daemon.json ⽂件,填⼊以下内容:{"registry-mirrors": ["https://"]}如果daemon.json不存在的话,需要⾃⼰创建⼀下。

⽂件修改保存成功之后,记得重启⼀下Docker服务,以便让这个镜像加速⽣效。

重启Docker服务我们在【在centos系统中安装Docker】⼀节中讲过Docker随着服务器重启⾃动启动的内容,正好可以通过命令service docker restart来实现Docker服务的重启。

然后我们在Linux中执⾏命令:service docker restart出现下图所⽰结果,表明Docker服务已经重新启动了!这样就可以永久性的使⽤Docker加速服务了。

如果不做特别的配置的话,之前处于运⾏状态的容器,随着Docker服务的重启也会停⽌运⾏。

下载mysql镜像docker pull mysql如果配置了镜像加速,那么在下载mysql镜像或者其他⽐较⼤的⽂件的时候,会发现下载速度变得⾮常快!启动mysql容器docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql其中 -e 的作⽤是⽤于设置环境变量,mysql默认⽤户名为root,则MYSQL_ROOT_PASSWORD即为root设置密码,即123456查看运⾏的mysql容器docker ps如下图:mysql容器已经正常启动了!进⼊mysql容器既然mysql服务启动了,如果我们想对mysql进⾏操作(⽐如进⼊命令⾏操作、客户端连接等操作),该怎么办?通过 docker exec 命令进⼊mysql容器:docker exec -it c9 /bin/bash其中的“c9”指的当前mysql容器ID的前⾯部分值(在上图就可以看出来mysql容器的ID是 c94faeed480a)。

在Docker容器中运行MySQL数据库的步骤

在Docker容器中运行MySQL数据库的步骤

在Docker容器中运行MySQL数据库的步骤Docker是一种使用容器虚拟化技术的平台,可以将应用程序及其所有依赖项打包到一个容器中,实现快速部署和可移植的应用环境。

而MySQL是一种广泛使用的开源关系型数据库管理系统。

在Docker容器中运行MySQL数据库可以提供更加灵活、可扩展和可移植的数据库解决方案。

下面将逐步介绍如何在Docker容器中运行MySQL数据库。

1. 安装Docker首先,为了在本地运行Docker容器,需要在计算机上安装Docker。

根据操作系统的不同,可以从官方网站上下载并安装适用于您的操作系统的Docker软件。

2. 拉取MySQL镜像Docker镜像是容器的基础,通过在Docker仓库中拉取MySQL的镜像来准备MySQL容器。

打开终端或命令提示符,使用以下命令拉取MySQL的最新版本镜像:```docker pull mysql```该命令将自动下载MySQL镜像并保存到本地。

3. 创建MySQL容器在拉取MySQL镜像后,可以使用以下命令创建MySQL容器:```docker run --name mysql-container -p 3306:3306 -eMYSQL_ROOT_PASSWORD=your_password -d mysql解释一下上述命令中的各个参数:- `--name`:指定容器的名称,这里为"mysql-container",您可以根据需要更改为其他名称。

- `-p`:将主机的端口映射到容器内的端口。

3306是MySQL数据库的默认端口,这里使用相同的端口。

- `-e`:设置环境变量,在这里我们设置了您的MySQL的root密码,记得将"your_password"替换为您自己的密码。

- `-d`:以后台模式运行容器。

4. 运行MySQL容器通过执行上一步中的创建容器命令,MySQL容器已经成功运行。

docker如何安装mysql

docker如何安装mysql

docker如何安装mysql最近在部署django,不想在⼿动安装⼀遍mysql,便尝试使⽤docker,总结了安装的⼼得,这些前提都是在安装了docker后:1. 查看mysql镜像;docker search mysql2.有镜像,直接拉取最新镜像docker pull mysqlv:latest3.启动mysql镜像```shelldocker run –name w-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest–name:给新创建的容器命名,此处命名为w-mysql-e:配置信息,此处配置mysql的root⽤户的登陆密码-p:端⼝映射,表⽰在这个容器中使⽤3306端⼝第⼆个映射到本机的端⼝号也为3306第⼀个-d:成功启动容器后输出容器的完整ID4.登录mysql```shelldocker exec -it w-mysql mysql -uroot -p5.创建⼀个远程能连接的⽤户create user 'tantan404' identified with mysql_native_password by '123456';grant all privileges on *.* to 'tantan404';6.尝试⽤Navicat连接7.可能的报错连接时候可能会报这个错误,原因是不⽀持mysql新版本的加密规则,mysql8 之前的版本中加密规则是mysql_native_password,⽽在mysql8之后,加密规则是caching_sha2_password, 解决问题⽅法有两种,⼀种是升级navicat驱动,⼀种是把mysql⽤户登录密码加密规则还原成mysql_native_password. 我⽤的第⼆种⽅式:操作如下:ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则,'password'改成你的密码ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新⼀下⽤户的密码,'password'是你的密码FLUSH PRIVILEGES; #刷新权限8.结束简单的基于docker的mysql安装,做⼀个记录以上就是docker如何安装mysql的详细内容,更多关于docker安装MySQL的资料请关注其它相关⽂章!。

linux下利用Docker安装mysql的步骤

linux下利用Docker安装mysql的步骤

linux下利⽤Docker安装mysql的步骤作为⼀个测试⼈员,在学习的过程中,可能经常需要去在linux下安装⼀些软件,有的软件通过搜索别⼈的博客教程进⾏安装的话,随着⼀些软件的升级,以及虚拟机/服务器镜像版本不⼀致等外部因素,都有可能导致安装软件出现各种不可预知的问题,到时候还得去搜索资料逐⼀解决问题,挺耽误时间的。

⽽且,像linux下这些软件的安装,⼀般都是运维的事情,测试作为学习使⽤的话,安装好⼀个mysql数据库⽤于学习使⽤就⾏,新⼿不建议在linux下下载源码去安装软件,容易出问题。

接下来为⼤家演⽰⼀下,如何通过docker快速安装⼀个mysql实例⽤于学习:1、⾸先,2、下载mysql镜像,启动镜像(⽤5.7的版本稍微稳定点,不同的版本,有些系统默认配置可能会不太⼀样,要注意⼀下)通过Docker安装Mysql:docker pull mysql:5.7启动mysql:docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7#进⼊容器docker exec -it mysql bash参数说明:-p 3306:3306 :映射容器服务的 3306 端⼝到宿主机的 3306 端⼝,外部主机可以直接通过宿主机ip:3306 访问到MySQL 的服务。

MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root ⽤户的密码。

连接mysql:# 进⼊交互模式下,然后⽤命令连接,或者通过navicat进⾏连接docker exec -it [容器id] bashmysql -uroot -h127.0.0.1 -P3306 -p123456个⼈学习使⽤,安装mysql的话,使⽤上⾯的简单参数就ok,如果要考虑到以后的升级备份之类的,需要加⼊其他的参数,⽐如把数据映射到本地某个⽬录,容器删除重建之后,数据不会丢失。

MySQL之PXC集群搭建的方法步骤

MySQL之PXC集群搭建的方法步骤

MySQL之PXC集群搭建的⽅法步骤⽬录⼀、PXC 介绍1.1 PXC 简介1.2 PXC特性和优点1.3 PXC的局限和劣势1.4 PXC与Replication的区别⼆、实践2.1 搭建 PXC 集群2.2 集群同步验证2.3 新增数据库节点操作2.4 宕机操作⼀、PXC 介绍1.1 PXC 简介是⼀套 MySQL ⾼可⽤集群解决⽅案,与传统的基于主从复制模式的集群架构相⽐ PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。

⽽且节点与节点之间,他们相互的关系是对等的。

PXC 最关注的是数据的⼀致性,对待事物的⾏为时,要么在所有节点上执⾏,要么都不执⾏,它的实现机制决定了它对待⼀致性的⾏为⾮常严格,这也能⾮常完美的保证MySQL 集群的数据⼀致性;1.2 PXC特性和优点完全兼容 MySQL。

同步复制,事务要么在所有节点提交或不提交。

多主复制,可以在任意节点进⾏写操作。

在从服务器上并⾏应⽤事件,真正意义上的并⾏复制。

节点⾃动配置,数据⼀致性,不再是异步复制。

故障切换:因为⽀持多点写⼊,所以在出现数据库故障时可以很容易的进⾏故障切换。

⾃动节点克隆:在新增节点或停机维护时,增量数据或基础数据不需要⼈⼯⼿动备份提供,galera cluster会⾃动拉取在线节点数据,集群最终会变为⼀致;PXC最⼤的优势:强⼀致性、⽆同步延迟1.3 PXC的局限和劣势复制只⽀持InnoDB 引擎,其他存储引擎的更改不复制写⼊效率取决于节点中最慢的⼀台1.4 PXC与Replication的区别Replication PXC数据同步是单向的,master负责写,然后异步复制给slave;如果slave写⼊数据,不会复制给master。

数据同步时双向的,任何⼀个mysql节点写⼊数据,都会同步到集群中其它的节点。

异步复制,从和主⽆法保证数据的⼀致性同步复制,事务在所有集群节点要么同时提交,要么同时不提交1.5 PXC 常⽤端⼝3306:数据库对外服务的端⼝号。

Docker安装配置MySQL的实现步骤

Docker安装配置MySQL的实现步骤

Docker安装配置MySQL的实现步骤⽬录前⾔环境安装创建并启动MySQL容器提醒创建并启动MySQL容器命令参数说明:进⼊到MySQL容器内部进⾏配置进⼊命令连接MySQL更改MySQL密码测试连接前⾔MySQL 是世界上最受欢迎的开源数据库,So~本⽂将演⽰如何在Docker上安装并且配置MySQL。

环境CentOS 7Docker 20.10.10安装拉取镜像docker pull mysql如果要指定版本,在mysql后⾯加上:+版本号,例如:docker pull mysql:8.0.16这⾥直接拉取最新版MySQL查看镜像docker images创建并启动MySQL容器创建数据⽬录和配置⽂件提前在宿主机创建好放置mysql的配置⽂件的⽬录和数据⽬录,并且进⾏授予权限,避免挂载外部配置和数据时启动失败:创建放置mysql的配置⽂件的⽬录和数据⽬录mkdir -p /mydata/mysql/设置⽂件夹权限chmod -R 755 /mydata/mysql第⼀个数字表⽰⽂件所有者的权限第⼆个数字表⽰与⽂件所有者同属⼀个⽤户组的其他⽤户的权限第三个数字表⽰其它⽤户组的权限。

权限分为三种:读(r=4),写(w=2),执⾏(x=1)。

综合起来还有可读可执⾏(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执⾏(rwx=7=4+2+1)。

所以,chmod755 设置⽤户的权限为:1.⽂件所有者可读可写可执⾏ --72.与⽂件所有者同属⼀个⽤户组的其他⽤户可读可执⾏ --53.其它⽤户组可读可执⾏创建f配置⽂件mkdir -p /mydata/mysql/conftouch /mydata/mysql/conf/f编辑f配置⽂件vi /mydata/mysql/conf/f添加以下配置内容[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolvesecure_file_priv=/var/lib/mysql提醒⽆论你是否使⽤我的配置,如果你的安装的是新版MySQL,务必要复制这⼀句:secure_file_priv=/var/lib/mysql第⼀次创建启动MySQL容器的时候,MySQL会访问/var/lib/mysql⽂件夹,如果没有权限就会导致⽆法启动,使⽤docker ps之后看不到mysql容器在运⾏,需要设置secure_file_priv的值指定为/var/lib/mysql,这样就有权限正常访问和读写/var/lib/mysql⽬录Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Suppliedvalue : /var/lib/mysql-files译⽂:⽆法访问–secure-file-priv的⽬录。

MySQL集群搭建方案(PXC)

MySQL集群搭建方案(PXC)

PORTS
NAMES
4567-4568/tcp, 0.0.0.0:3310->3306/tcp mysql_node5
4567-4568/tcp, 0.0.0.0:3309->3306/tcp mysql_node4
4567-4568/tcp, 0.0.0.0:3308->3306/tcp mysql_node3
⚡ root@ataola /home/caocao docker network inspect mysql_net [
{ "Name": "mysql_net", "Id": "79885a1c3b8a783e096a1610df08e353641bda74d0b996b4200f2ea5db3c5dbd", "Created": "2020-05-30T21:26:53.852825919+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.19.0.0/16", "Gateway": "172.19.0.1" } ] }, "Internal": false, "Attachable": false, "Containers": { "09e7715f71b4411974d862a2aa74ed0b1018fc4efb4196707576f935e1425f6b": { "Name": "mysql_node1", "EndpointID": "621bc0ec6e4adb78e72f0f78ca04d154029abe1f0bb91fc5ccd42156bfa32d52", "MacAddress": "02:42:ac:13:00:02", "IPv4Address": "172.19.0.2/16", "IPv6Address": "" }, "0e4ef69c19b981163067ec8af0c38b6fa84c380855c22309a884f0a0ed691912": { "Name": "haproxy1", "EndpointID": "02e8c179fdb7cbc4b3e7d72f8412129da487c65a3897e70e0da5693aa0d8d500", "MacAddress": "02:42:ac:13:00:07", "IPv4Address": "172.19.0.7/16", "IPv6Address": "" }, "18c232855938d7263b90a4ab88874676110c6197a601aa72d8bec8f52e73dd02": { "Name": "mysql_node3", "EndpointID": "010538caec3ab7aafe1c708ebebdffa43e268d68147cf4a60f86a77247b3ef86", "MacAddress": "02:42:ac:13:00:04", "IPv4Address": "172.19.0.4/16", "IPv6Address": "" }, "6dc0232532057a65db0607c92517307ee480bec32cb6311d6615555482670c7a": { "Name": "mysql_node4", "EndpointID": "cc59fe8fc8d7d02f367ec75b1897c51bf3731dbc5dc8d70510dde34aee6d4afa", "MacAddress": "02:42:ac:13:00:05", "IPv4Address": "172.19.0.5/16", "IPv6Address": "" }, "6de60216270a3b6f5bfbe5d94d40fa2449e443eb77b67d4bf005061dd4ff412e": { "Name": "mysql_node2", "EndpointID": "b674d25e3e6c999324de9704419b1c97f008ca6e5d27e825bc0fc61d600848ff", "MacAddress": "02:42:ac:13:00:03", "IPv4Address": "172.19.0.3/16", "IPv6Address": "" }, "8d809616ea08d46a3febb95259d9d0672d6112dd8cbe6c29f03f49cbc44ef444": { "Name": "mysql_node5", "EndpointID": "01f0988019206e959a7099736d9995cec1676aaec360db9bd78fa61b68a87f71", "MacAddress": "02:42:ac:13:00:06", "IPv4Address": "172.19.0.6/16", "IPv6Address": "" } }, "Options": {}, "Labels": {}
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

docker安装PXC的MySQL集群一、MySQL集群安装环境(一)操作系统(二)相关插件1、socat插件用来监视Docker API(必须安装)socat是一个十分强大的命令行工具,它允许你在几乎任何类型的两个数据通道之间中继数据,从而可以嗅探到两个数据通道的通信,进行分析。

可以把它看成是一个增强版本的netcat。

安装指令:(1)debian/ubuntu系统安装指令aitalk@luo:~$ sudo apt-get install socat(2)centos/redhat系统安装指令aitalk@luo:~$ sudo yum install -y socat二、安装Percona XtraDB Cluster(一)docker下载镜像1、通过docker拉取MySQLaitalk@luo:~$ sudo docker pull percona/percona-xtradb-cluster:5.7.22未指定版本号,下载默认是lastes版本,这里指定版本号:docker pull percona/percona-xtradb-cluster:5.7.222、查看MySQL镜像aitalk@luo:~$ sudo docker images(二)配置percona-xtradb-cluster相关环境1、创建自定义网络:(设置固定IP)root@luo:~# docker network create --subnet=172.19.0.0/16 pxc-mysql-network2、创建 Docker卷通常我们通过 docker的目录映射机制将业务数据存储到我们的宿主机上。

但是PXC集群技术比较特殊,如果为PXC 集群使用了docker的目录映射技术,PXC会闪退,因此要采用另外一种目录映射技术,即使用 docker卷。

(1)MySQL配置文件目录aitalk@luo:~$ sudo docker volume create v1-etc (2)MySQL数据文件目录aitalk@luo:~$ sudo docker volume create v1-data (3)MySQL日志文件目录aitalk@luo:~$ sudo docker volume create v1-logs2、查看 Docker卷aitalk@luo:~$ sudo docker volume ls3、查看 Docker卷映射目录aitalk@luo:~$ sudo docker volume inspect v1-etc(三)创建percona-xtradb-cluster容器1、执行创建 Docke容器命令aitalk@luo:~$ sudo docker run -itd \-p 3326:3306 \--name=my-node1 \-e MYSQL_ROOT_PASSWORD=123456 \-e XTRABACKUP_PASSWORD=123456 \-e CLUSTER_NAME=aitalk-pcx \--net=pxc-mysql-network \--ip 172.19.0.2 \-v v1-etc:/etc/mysql \-v v1-data:/var/lib/mysql \-v v1-logs:/var/log/mysql \--privileged \-ddocker.io/percona/percona-xtradb-cluster:5.7.222、执行命令截图3、命令参数说明-p: 映射本地端口3326。

--name:指定运行之后的容器的名称为my-node1。

--privileged:指定了当前容器是否真正的具有root权限,所谓的root权限是指具有宿主机的root权限,而不仅仅只是在容器内部有root权限。

-e:指定环境变量,容器中可以使用该环境变量。

-e CLUSTER_NAME :指定集群名称为aitalk-pcx-v:为容器挂载目录,比如:V1-data:/var/lib/mysql前者为数宿主机目录,后者为容器内目录。

-d:后台运行容器,并返回容器ID。

-e MYSQL_ROOT_PASSWORD:设置root密码为123456-e XTRABACKUP_PASSWORD:集群之间同步的密码为123456--character-set-server:设置数据库编码为uft8或utf8mb4。

--collation-server:设置默认排序规则为utf8_unicode_ci–net :容器分到的内部网段–ip : 容器分到的 ip地址4、查看新创建容器aitalk@luo:~$ sudo docker ps -a5、查看容器里的详细信息aitalk@luo:~$ sudo docker inspect my-node1(四)创建MySQL支持远程连接1、登录MySQLaitalk@luo:~$ sudo mysql -h 172.19.0.2 -u root -p1234562、查看账号mysql> use mysql;mysql> select * from user;注:红框账号必须有,要不数据库安装失败。

3、登录进入新创建容器aitalk@luo:~$ sudo docker exec -it my-node1 /bin/bash4、登录MySQL数据库mysql@ca579809f4e5:/$ mysql -u root5、创建支持远程连接的root账号及分配权限mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';mysql> flush privileges;6、退出MySQL和容器7、测试登录MySQLaitalk@luo:~$ mysql -h 127.0.0.1 -u root -p123456 -P3326或:aitalk@luo:~$ mysql -h 172.19.0.2 -u root -p123456 -P3326三、创建MySQL集群参考安装Percona XtraDB Cluster的“(二)配置percona-xtradb-cluster相关环境”、“(三)创建percona-xtradb-cluster容器”和“(四)创建MySQL支持远程连接”创建Percona XtraDB Cluster集群的my-node2和my-node3的Docke容器。

特别说明:Percona XtraDB Cluster创建集群至少3台MySQL服务。

(一)创建my-node2节点1、创建 Docker卷(1)MySQL配置文件目录aitalk@luo:~$ sudo docker volume create v2-etc (2)MySQL数据文件目录aitalk@luo:~$ sudo docker volume create v2-data (3)MySQL日志文件目录aitalk@luo:~$ sudo docker volume create v2-logs (4)查看docker卷aitalk@luo:~$ sudo docker volume ls2、执行创建 Docke容器命令aitalk@luo:~$ sudo docker run -itd \-p 3327:3306 \--name=my-node2 \-e MYSQL_ROOT_PASSWORD=123456 \-e XTRABACKUP_PASSWORD=123456 \-e CLUSTER_NAME=aitalk-pcx \--net=pxc-mysql-network \--ip 172.19.0.3 \-v v2-etc:/etc/mysql \-v v2-data:/var/lib/mysql \-v v2-logs:/var/log/mysql \-e CLUSTER_JOIN=my-node1 \--privileged \-ddocker.io/percona/percona-xtradb-cluster:5.7.223、查看新创建容器aitalk@luo:~$ sudo docker ps -a4、测试登录MySQLaitalk@luo:~$ mysql -h 172.19.0.3 -u root -p123456(二)创建my-node3节点1、创建 Docker卷(1)MySQL配置文件目录aitalk@luo:~$ sudo docker volume create v3-etc (2)MySQL数据文件目录aitalk@luo:~$ sudo docker volume create v3-data (3)MySQL日志文件目录aitalk@luo:~$ sudo docker volume create v3-logs (3)查看Docker卷aitalk@luo:~$ sudo docker volume ls2、执行创建 Docke容器命令aitalk@luo:~$ sudo docker run -itd \-p 3328:3306 \--name=my-node3 \-e MYSQL_ROOT_PASSWORD=123456 \-e XTRABACKUP_PASSWORD=123456 \-e CLUSTER_NAME=aitalk-pcx \--net=pxc-mysql-network \--ip 172.19.0.4 \-v v3-etc:/etc/mysql \-v v3-data:/var/lib/mysql \-v v3-logs:/var/log/mysql \-e CLUSTER_JOIN=my-node1 \--privileged \-ddocker.io/percona/percona-xtradb-cluster:5.7.223、查看新创建容器aitalk@luo:~$ sudo docker ps -a4、测试登录MySQLaitalk@luo:~$ mysql -h 172.19.0.4 -u root -p123456四、验证安装(一)查看集群节点数量1、查看集群节点数量mysql> show status like 'wsrep_cluster_size';Perfect(完美),正是创建了3个节点。

相关文档
最新文档