?mysql使用pv和pvc实践操作记录

创建nfs存储目录

[[email protected] ~]# mkdir /data/k8s/mysqlpv1

创建pv

[[email protected] ~]# cat mysql-pv.yml

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysqlpv1

spec:

capacity:

storage: 1Gi

accessModes:

- ReadWriteOnce

persistentVolumeReclaimPolicy: Retain

storageClassName: nfs1

nfs:

path: /data/k8s/mysqlpv1

server: 192.168.211.135

[[email protected] ~]# kubectl apply -f mysql-pv.yml

persistentvolume "mysqlpv1" created

[[email protected] ~]# kubectl get pv

NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON    AGE

mypv1      1Gi        RWO            Retain           Bound       default/mypvc1   nfs                      47m

mysqlpv1   1Gi        RWO            Retain           Available                    nfs1                     3s

创建pvc

[[email protected] ~]# cat mysql-pvc1.yml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysqlpvc1

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 1Gi

storageClassName: nfs1

[[email protected] ~]# kubectl apply -f mysql-pvc1.yml

persistentvolumeclaim "mysqlpvc1" created

[[email protected] ~]#

[[email protected] ~]# kubectl get pvc -o wide

NAME        STATUS    VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE

mypvc1      Bound     mypv1      1Gi        RWO            nfs            48m

mysqlpvc1   Bound     mysqlpv1   1Gi        RWO            nfs1           36s

[[email protected] ~]#

部署mysql

yml文件参考如下:

一些说明:

--- 这个符号是分隔符

[[email protected] ~]# cat mysql-svc.yml

apiVersion: v1

kind: Service

metadata:

name: mysql

spec:

ports:

- port: 3306

selector:

app: mysql

---

apiVersion: apps/v1beta1

kind: Deployment

metadata:

name: mysql

spec:

selector:

matchLabels:

app: mysql

template:

metadata:

labels:

app: mysql

spec:

containers:

- image: mysql:5.6

name: mysql

env:

- name: MYSQL_ROOT_PASSWORD

value: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-data

mountPath: /var/lib/mysql

volumes:

- name: mysql-data

persistentVolumeClaim:

claimName: mysqlpvc1

[[email protected] ~]#

[[email protected] ~]# kubectl apply -f mysql-svc.yml

service "mysql" unchanged

deployment.apps "mysql" created

[[email protected] ~]# kubectl get pod -o wide

NAME                                READY     STATUS    RESTARTS   AGE       IP                NODE

mysql-7bd85dbb6f-5fjlx              1/1       Running   0          3m        10.244.1.106      kubernetes2

可以看到pod在kubernetes2上生成

在这个node执行命令

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE                                                                                       COMMAND                  CREATED             STATUS              PORTS               NAMES

13b98755ae54        docker.io/[email protected]:0267b9b43034ed630e94f846ca825140994166c6c7d39d43d4dbe8d1404e1129     "docker-entrypoint..."   5 minutes ago       Up 5 minutes                            k8s_mysql_mysql-7bd85dbb6f-5fjlx_default_0fae8658-7b73-11e8-bdc5-000c292f3b91_0

inspect下

[[email protected] ~]# docker inspect 13b98755ae54

可以看到是使用了mysqlpv1

生成数据,测试效果:

在容器操作数据库:

创建数据库t1

[[email protected] ~]# docker exec 13b98755ae54  mysql -uroot -ppassword -e "create database t1"

Warning: Using a password on the command line interface can be insecure.

[[email protected] ~]# docker exec 13b98755ae54  mysql -uroot -ppassword -e "show databases"

Warning: Using a password on the command line interface can be insecure.

Database

information_schema

mysql

performance_schema

t1

[[email protected] ~]#

在t1中创建数据表t1

[[email protected] ~]# docker exec 13b98755ae54  mysql -uroot -ppassword -e "use t1;create table t1(i int);"

Warning: Using a password on the command line interface can be insecure.

数据表t1插入数据并检索

[[email protected] ~]# docker exec 13b98755ae54  mysql -uroot -ppassword -e "use t1;insert into t1 values (1),(3),(3);"

Warning: Using a password on the command line interface can be insecure.

[[email protected] ~]# docker exec 13b98755ae54  mysql -uroot -ppassword -e "use t1;select * from t1;"

Warning: Using a password on the command line interface can be insecure.

i

1

3

3

[[email protected] ~]#

已经生成了数据,我们看看nfs存储目录的情况和容器存储目录的情况

nfs目录

[[email protected] ~]# ls /data/k8s/mysqlpv1/

auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  t1

[[email protected] ~]#

[[email protected] ~]# ls /data/k8s/mysqlpv1/t1

db.opt  t1.frm  t1.ibd

[[email protected] ~]#

容器

[[email protected] ~]# docker exec 13b98755ae54  ls /var/lib/mysql

auto.cnf

ib_logfile0

ib_logfile1

ibdata1

mysql

performance_schema

t1

[[email protected] ~]# docker exec 13b98755ae54  ls /var/lib/mysql/t1

db.opt

t1.frm

t1.ibd

[[email protected] ~]#

数据对比可知,pvc使用成功

现在模拟故障,kubernetes2机器死掉

kubernetes2关机

[[email protected] ~]# init 0

Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(kubernetes2) at 16:34:27.

[[email protected] ~]# kubectl get pod -o wide

NAME                                READY     STATUS     RESTARTS   AGE       IP                NODE

mysql-7bd85dbb6f-5fjlx              1/1       Unknown    0          30m       10.244.1.106      kubernetes2

mysql-7bd85dbb6f-jwwfv              1/1       Running    0          38s       10.244.2.114      kubernetes3

pod自动切换到kubernetes3了

到kubernetes3上操作容器数据库

[[email protected] ~]# docker ps

CONTAINER ID        IMAGE                                                       COMMAND                  CREATED             STATUS              PORTS               NAMES

5bb97bd16595        84581e99d807                                                "nginx -g 'daemon ..."   3 minutes ago       Up 3 minutes                            k8s_nginx-deployment_nginx-deployment-6b5c99b6fd-tcwfc_default_48c5442e-7b77-11e8-bdc5-000c292f3b91_0

eec205b40845        97fdbdd65c6a                                                "docker-entrypoint..."   3 minutes ago       Up 3 minutes                            k8s_mysql_mysql-7bd85dbb6f-jwwfv_default_48b8e8ad-7b77-11e8-bdc5-000c292f3b91_0

检索数据

[[email protected] ~]# docker exec eec205b40845 mysql -uroot -ppassword -e "use t1;select * from t1;"

Warning: Using a password on the command line interface can be insecure.

i

1

3

3

[[email protected] ~]#

数据完好无损

原文地址:http://blog.51cto.com/goome/2134294

时间: 2024-11-05 10:40:42

?mysql使用pv和pvc实践操作记录的相关文章

Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳理Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录 废话不多说,下面即是使用lvm-snapshot快照方式备份mysql的操作记录,仅依据本人实验中使用而述. 操作记录:如下环

kubernetes traefik配置https实践操作记录

1.参考文档 http://traefik.cn/ 2.访问方式简易说明 参考文档https://tonybai.com/2018/06/25/the-kubernetes-ingress-practice-for-https-service/ 前面一篇:traefik基础部署记录,介绍了最简单的http访问traefik,访问过程参考见下: client --- (via http) ---> traefik ---- (via http) ----> services 现在要实践的是更安全

mysql表名等大小写敏感问题、字段类型timestamp、批量修改表名、oracle查询历史操作记录等

mysql表名等大小写敏感问题:http://blog.csdn.net/postnull/article/details/72455768: 1 MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 2 1.数据库名与表名是严格区分大小写的: 3 2.表的别名是严格区分大小写的: 4 3.列名与列的别名在所有的情况下均是忽略大小写的: 5 4.字段内容默认情况下是大小写不敏感的. ================================================

Mysql更换MyISAM存储引擎为Innodb的操作记录

一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件.通过下面的命令结果可知,已经安装了innodb插件. mysql> show plugins; +------------+--------+----------------+---------+---------+ | Name | Status | Type | Library | License | +------------+--------+----------------

mysql 用init-connect+binlog实现用户操作追踪做access的ip的log记录

在MYSQL中,每个连接都会先执行init-connect,进行连接的初始化.我们可以在这里获取用户的登录名称和thread的ID值.然后配合binlog,就可以追踪到每个操作语句的操作时间,操作人等.实现审计. 实验过程:1:创建登录日志库,登录日志表 CREATE DATABASE `accesslog`; USE `accesslog`; CREATE TABLE `accesslog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `thread_id`

Mysql+keeoalived双主热备高可用操作记录

我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.之前梳理了Mysql主从同步,下面说下Mysql+keeoalived双主热备高可用方案的实施. 1)Keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议.在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器. 2)VRRP路由器

mysql语句判断一天操作记录的个数

话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的文章总数并且按照时间从大到小排序,则查询语句如下: 1    select * from `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d');或者: 1    select * from `article` where to_da

MySQL 如何使用 PV 和 PVC?- 每天5分钟玩转 Docker 容器技术(154)

本节演示如何为 MySQL 数据库提供持久化存储,步骤为: 创建 PV 和 PVC. 部署 MySQL. 向 MySQL 添加数据. 模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其他节点. 验证数据一致性. 首先创建 PV 和 PVC,配置如下: mysql-pv.yml mysql-pvc.yml 创建 mysql-pv 和 mysql-pvc: 接下来部署 MySQL,配置文件如下: PVC mysql-pvc Bound 的 PV mysql-pv 将被 mount

Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一.初步了解binlogMySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. DDL-