docker安装PXC的MySQL集群
- 格式:docx
- 大小:277.41 KB
- 文档页数:20
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前⾔此篇幅内容较多,讲解的很详细,也有很多知识点。
能耐⼼认真的读完,就很不错了~如果你觉得此⽂章不错的话,或者是根据此⽂档进⾏安装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数据库。
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最近在部署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下安装⼀些软件,有的软件通过搜索别⼈的博客教程进⾏安装的话,随着⼀些软件的升级,以及虚拟机/服务器镜像版本不⼀致等外部因素,都有可能导致安装软件出现各种不可预知的问题,到时候还得去搜索资料逐⼀解决问题,挺耽误时间的。
⽽且,像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集群搭建的⽅法步骤⽬录⼀、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的实现步骤⽬录前⾔环境安装创建并启动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的⽬录。
Dockeryum安装Mysql8、⽤户管理、权限管理、配置详解、常见问题解决⼀、docker安装1、查看可⽤的 MySQL 版本2、拉取 MySQL 镜像这⾥我们拉取官⽅的最新版本的镜像:$ docker pull mysql:8.0.263、查看本地镜像使⽤以下命令来查看是否已安装了 mysql:$ docker images4、创建挂载⽬录mkdir -p /usr/local/mysql/confmkdir -p /usr/local/mysql/datamkdir -p /usr/local/mysql/logs5、创建fvim /usr/local/mysql/conf/f把下⾯配置复制到⽂件中:# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; version 2 of the License.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA## The MySQL Server configuration file.## For explanations see# /doc/mysql/en/server-system-variables.html[client]default-character-set = utf8mb4[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqlsecure-file-priv= NULL# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Custom config should go here# 字符集character_set_server=utf8collation-server=utf8_general_ci# 是否对sql语句⼤⼩写敏感,1表⽰不敏感lower_case_table_names = 1# 最⼤连接数max_connections = 1000# Innodb缓存池⼤⼩innodb_buffer_pool_size = 4G# 表⽂件描述符的缓存⼤⼩table_open_cache_instances=1table_open_cache=2000table_definition_cache=2000!includedir /etc/mysql/conf.d/6、创建启动容器docker run --restart=always --name mysql8.0 --privileged=true \-d -p 3306:3306 \-v /usr/local/mysql/conf/f:/etc/mysql/f \-v /usr/local/mysql/logs:/logs \-v /usr/local/mysql/data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.26参数解释:--restart=always -> 开机启动容器,容器异常⾃动重启--name -> 指定容器名称-d -> 以守护进程的⽅式启动容器-p -> 映射宿主机端⼝-v -> 映射配置⽂件、⽇志、数据-e -> 写⼊配置root密码7、查看是否启动正常$ docker ps使⽤Navicat连接:⼆、yum 安装1、(如果服务器接通外⽹)直接⽤wget下载mysql源rpm安装包cd ~wget https:////mysql80-community-release-el7-3.noarch.rpm如果没有安装wget,则安装: yum -y install wget2、(如果服务器没有接通外⽹)下载mysql源rpm安装包上传到服务器3、安装rmp包yum install mysql80-community-release-el7-3.noarch.rpm4、查看是否安装成功[root@localhost ~]# yum repolist enabled | grep "mysql.*"!mysql-connectors-community/x86_64 MySQL Connectors Community 212!mysql-tools-community/x86_64 MySQL Tools Community 132!mysql80-community/x86_64 MySQL 8.0 Community Server 2835、安装mysqlyum -y install mysql-community-server6、(可选)修改配置:vim /etc/f把下⾯配置复制到⽂件中:# For advice on how to change settings please see# /doc/refman/8.0/en/server-configuration-defaults.html[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove the leading "# " to disable binary logging# Binary logging captures changes between backups and is enabled by# default. It's default setting is log_bin=binlog# disable_log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M## Remove leading # to revert to previous value for default_authentication_plugin,# this will increase compatibility with older clients. For background, see:# https:///doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin # default-authentication-plugin=mysql_native_passworddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid# Custom config should go here# 字符集character_set_server=utf8collation-server=utf8_general_ci# 是否对sql语句⼤⼩写敏感,1表⽰不敏感lower_case_table_names = 1#最⼤连接数max_connections = 1000# Innodb缓存池⼤⼩innodb_buffer_pool_size = 4G# 表⽂件描述符的缓存⼤⼩table_open_cache_instances=1table_open_cache=2000table_definition_cache=20007、启动mysqlservice mysqld.service restart8、查看启动状态[root@localhost etc]# systemctl status mysqld● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: active (running) since 四 2021-08-26 16:04:16 CST; 1 day 1h agoDocs: man:mysqld(8)/doc/refman/en/using-systemd.htmlMain PID: 8704 (mysqld)Status: "Server is operational"CGroup: /system.slice/mysqld.service└─8704 /usr/sbin/mysqld8⽉ 26 16:04:05 localhost.localdomain systemd[1]: Starting MySQL Server...8⽉ 26 16:04:16 localhost.localdomain systemd[1]: Started MySQL Server.9、配置开机启动systemctl enable mysqldsystemctl daemon-reload10、查看初始化密码[root@localhost etc]# cat /var/log/mysqld.log | grep password2021-08-26T08:04:10.256089Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Gg2P(&gB<>Z)11、输⼊命令进⼊mysqlmysql -uroot -p 回车输⼊初始密码密码(粘贴即可)12、修改密码mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '设置密码';13、创建远程连接root⽤户、授权mysql> use mysql;mysql> create user 'root'@'%' identified by '123456';mysql> grant all privileges on *.* to 'root'@'%' with grant option;mysql> flush privileges;mysql> select user,host from user;mysql> show grants for root@'%';14、使⽤Navicat连接三、⽤户管理1、新增⽤户格式:create user '⽤户名'@localhost identified by '密码'; ——localhost表⽰只允许本地连接,'%' 代表允许所有远程连接,ip表⽰只允许指定ip连接;例⼦:create user 'root'@'%' identified by '123456';# 使⽤password关键字密码需要符合加密⽅式create user 'root'@'%' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';2、删除⽤户格式:drop user '⽤户名'@'localhost';例⼦:drop user 'root'@'%';3、查看⽤户# 切换到mysql:use mysql;# 执⾏查看语句:select User,Host,Password from user;4、更改⽤户密码:格式:mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '设置新密码';例⼦:mysql>ALTER USER 'root'@'%' IDENTIFIED BY '123456';# 使⽤password关键字密码需要符合加密⽅式mysql>ALTER USER 'root'@'%' password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';格式:mysql>set password for ⽤户名@localhost =password('新密码');例⼦: mysql>set password for root@'%'=password('123456');四、权限管理通常情况下,数据库会根据不同的环境进⾏隔离,有针对性地进⾏权限控制:'root'@'%' : dev环境开放所有权限,sit,uat回收所有权限'root'@'192.168.252.%' : 该⽹段开放所有权限'root'@'IP' : 测试⼈员的IP开放所有权限1、查看⽤户权限:格式:show grants for '⽤户名'@'localhost';例⼦:show grants for 'root'@'%';2、⽤户授予权限:格式:grant 权限列表 on 数据库名.数据表名 to '⽤户表名'@'主机' with grant option;例⼦:grant all privileges on . to 'root'@'%' with grant option;# 指定密码grant all privileges on . to 'root'@'%' identified by '123456' with grant option;# 使⽤password关键字密码需要符合加密⽅式grant all privileges on . to 'root'@'%' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' with grant option;3、刷新权限:授权以后⼀定要刷新权限:flush privileges;4、权限回收格式:revoke 权限列表 on 数据库名.数据库表名 from ⽤户名@主机;例⼦:revoke all privileges on pcloud_ust2. from 'root'@'%';5、授权、回收具体权限:select,create,delete,grant赋予:grant select,create,delete on . to 'root'@'localhost' with grant option;回收:revoke select,create,delete,grant option on . from 'root'@'localhost';五、Mysql8.0配置f详解1、关键配置1. 配置⽂件的位置MySQL配置⽂件/etc/f 或者 /etc/f.d/f2. ⼏个关键的⽂件:.pid⽂件,记录了进程id.sock⽂件,是内部通信使⽤的socket接⼝,⽐3306快.log⽂件,⽇志⽂件.cnf或.conf⽂件,配置⽂件安装⽬录:basedir数据⽬录:datadir2、/etc/f[client]port = 3306socket = /tmp/mysql.sock[mysqld]# Mysql服务的唯⼀编号每个mysql服务Id需唯⼀server-id = 1# 服务端⼝号默认3306port = 3306# mysql安装根⽬录basedir = /usr/local/mysql# mysql数据⽂件所在位置datadir = /usr/local/mysql/data# pidpid-file = /usr/local/mysql/mysql.pid# 设置socke⽂件所在⽬录socket = /tmp/mysql.sock# 设置临时⽬录tmpdir = /tmp# ⽤户user = root# 允许访问的IP⽹段bind-address = 0.0.0.0# 跳过密码登录#skip-grant-tables# 主要⽤于MyISAM存储引擎,如果多台服务器连接⼀个数据库则建议注释下⾯内容skip-external-locking# 只能⽤IP地址检查客户端的登录,不⽤主机名skip_name_resolve = 1# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)transaction_isolation = READ-COMMITTED# 数据库默认字符集,主流字符集⽀持⼀些特殊表情符号(特殊表情符占⽤4个字节)character-set-server = utf8mb4# 数据库字符集对应⼀些排序等规则,注意要和character-set-server对应collation-server = utf8mb4_general_ci# 设置client连接mysql时的字符集,防⽌乱码init_connect='SET NAMES utf8mb4'# 是否对sql语句⼤⼩写敏感,1表⽰不敏感lower_case_table_names = 1# TIMESTAMP如果没有显⽰声明NOT NULL,允许NULL值explicit_defaults_for_timestamp = true# MySQL连接闲置超过⼀定时间后(单位:秒)将会被强⾏关闭#MySQL默认的wait_timeout 值为8个⼩时, interactive_timeout参数需要同时配置才能⽣效interactive_timeout = 1800wait_timeout = 1800#数据库错误⽇志⽂件log_error = error.log3、其他的配置详解1. 禁⽤mysql的缓存查询结果集功能# 写⼊频繁的数据库,不要开查询缓存# 后期根据业务情况测试决定是否开启# ⼤部分情况下关闭下⾯两项# ⾸先要把Query_cache和该表相关的语句全部置为失效,然后在写⼊更新。
在Docker中部署MySQL集群随着云计算和容器化技术的不断发展,使用Docker部署MySQL集群已成为一种常见的做法。
通过利用Docker的轻量级和可移植性,我们可以快速部署一个可伸缩和高可用性的MySQL集群。
1. Docker简介Docker是一种开源的容器化平台,它能够将应用程序和其依赖的运行环境打包成一个可移植的容器。
与传统的虚拟机相比,Docker具有更小的资源占用和更快的启动时间。
2. MySQL集群需求在生产环境中,将MySQL部署为集群是保证数据库的可用性和性能可伸缩性的关键。
MySQL集群需要包含多个数据库实例,并能够自动实现数据同步和故障转移。
3. Docker部署MySQL集群的优势使用Docker部署MySQL集群可以带来多个优势。
首先,容器的可移植性使得我们可以在不同的环境中轻松部署和迁移集群。
其次,Docker提供了强大的容器编排工具,如Docker Compose和Kubernetes,可以方便地管理多个容器之间的关系和自动伸缩。
4. MySQL集群的架构一个典型的MySQL集群通常由三个关键组件组成:主节点、从节点和负载均衡器。
主节点负责处理所有的写操作,从节点用于处理读操作,负载均衡器用于分发和平衡流量。
5. 使用Docker Compose部署MySQL集群Docker Compose是一个应用容器化的工具,可以通过一个YAML文件定义多个容器之间的关系和配置。
以下是一个简单的Docker Compose文件示例:```version: '3'services:mysql_master:image: mysqlenvironment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_REPLICATION_USER=repl_user- MYSQL_REPLICATION_PASSWORD=repl_passwordports:- 3306:3306mysql_slave:image: mysqlenvironment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_REPLICATION_USER=repl_user- MYSQL_REPLICATION_PASSWORD=repl_passwordlinks:- mysql_master```在上述示例中,我们定义了两个MySQL容器,一个作为主节点,一个作为从节点。
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个节点。