>- ENUM和CHAR(VARCHAR)类型关联查询,会慢一些,因此,假如预先知道某列需要与CHAR类型关联,那么就不应该将该列设置为ENUM类型 >- ENUM类型的列可有效缩小表所占的空间,书中写可缩小1/3
用户操作与权限管理 MySQL用户操作 创建用户 方法一: CREATE USER语句创建 CREATE USER "用户名"@"IP地址" IDENTIFIED BY "密码"; 方法二: INSERT语句创建 INSERT INTO mysql.user(user,host, password,ssl_cipher,x509_issuer,x509_subject) VALUES(‘用户名’,’IP地址’,password(‘密码’),’’,’’,’’)
此外,控制器为每个 Pod 分配一个唯一、稳定的名称,形如 <statefulset 名称>-<序数索引>其结果是 Pods 名为 mysql-0、mysql-1 和 mysql-2。 mysql-2 的实际容器文件系统,重命名 mysql 命令,导致就绪态探测无法找到它。 AGE mysql-2 1/2 Running 0 3m 此时,你应该会看到 SELECT @@server_id 循环继续运行,尽管它不再报告 102。 回想一下,init-mysql 脚本将 server-id 定义为 100 + $ordinal,因此服务器 ID 102 对应于 Pod mysql-2。 kubectl delete pod mysql-2 StatefulSet 控制器注意到不再存在 mysql-2 Pod,于是创建一个具有相同名称并链接到相同PersistentVolumeClaim
-2 0/2 Pending 0 0s mysql-2 0/2 Pending 0 0s mysql-2 0/2 Pending 0 15s mysql-2 0/2 Init:0/2 0 15s mysql-2 0/2 Init:1/2 0 26s mysql-2 0/2 Init:1/2 0 29s mysql-2 0/2 PodInitializing 0 36s mysql-2 1/2 Running 0 39s mysql-2 2/2 Running 0 41s 了解有状态Pod初始化 为什么pod的名字是 mysql-0 mysql-1 mysql-2? StatefulSet控制器按顺序索引按顺序启动一个Pod。它会等待,直到每个Pod报告准备就绪,然后开始启动下一个。
.:30002 <-> service: mysql-2 NodePort 的问题在于,service 如果出现问题,重新启动 port 会有变化;Node IP 变化的话,暴露服务的地址也会变;一个集群提供的端口资源限制为数千个 Ingress:支持如下访问方式 http://testing.example.com/mysql-1 <-> service: mysql-1 http://testing.example.com/mysql -2 <-> service: mysql-2 但问题在于 MySQL client 只支持域名,不支持 URL。
二.环境声明 环境: ubuntu 16.4 mysql-5.7 多主模式 机器: 192.168.1.1 mysql-1 192.168.1.2 mysql-2 192.168.1.3 mysql-3 ON *.* TO root@'%' WITH GRANT OPTION; 4.修改/etc/hosts vim /etc/hosts 192.168.1.1 mysql-1 192.168.1.2 mysql
10mmysql-1 2/2 Running 0 10mmysql-2 0/2 Init:1/2 0 24s这时候,一个新的mysql kubectl -n mysql exec mysql-2 -c mysql -- bash -c "mysql -uroot -p123456 -e 'use test;select * from counter 也就是说从StatefulSet为我们新创建的mysql-2上,同样可以读取到之前插入的记录。也就是说,我们的数据备份和恢复,都是有效的
RESTARTS AGE mysql-0 2/2 Running 0 22m mysql-1 2/2 Running 0 22m mysql -2 2/2 Running 0 20s 这时候,一个新的mysql-2就创建出来了,我们继续验证新扩容的节点是否都同步到主节点的数据 kubectl -n mysql exec mysql-2 -c mysql -- bash -c "mysql -uroot -p123456 -e 'use test;select * from counter’" c 123 也就是说从 StatefulSet 为我们新创建的 mysql-2 上,同样可以读取到之前插入的记录。也就是说,我们的数据备份和恢复,都是有效的。
Running 0 2d mysql-1 2/2 Running 0 2d mysql 创建时,首先mysql-0 Pod被创建出来,然后创建mysql-1 Pod,再创建mysql-2 Pod。 MySQL [(none)]> show databases; (2)集群扩容 当前的MySQL集群,具有一个写节点(mysql-0)和两个读节点(mysql-1和mysql-2)。 0 2d mysql-1 2/2 Running 0 2d mysql
0 34m 172.17.125.11 k8s-node01 <none> <none>default mysql
mysql-1 host: "local-168-182-111" path: "/opt/bigdata/servers/mysql/data/data1" - name: mysql
这样就可以将用户流量分摊到每台服务器上但是这时候又会有一个问题,如果这时候第一台MySql的库存很快就没有了,其它MySql上还有库存这时候如果这个用户到MySql-1上发现没有库存了,这时候我们可以让他到MySql
环境: Host Role IP mysql-1 Master 192.168.30.106 mysql-2 Slave 192.168.30.107 搭建 在主从服务器上都创建一个用户 $ mysql
host="mysql-1" url="192.168.0.1:3306" user=“user" password="******" /> <readHost host="<em>mysql</em> -2" url="192.168.0.2:3306" user=“user" password="******" /> </writeHost> <writeHost host=“mysql-2” url —master故障,切换slave读写--> <readHost host="<em>mysql-2</em>" url="192.168.0.2:3306" user=“user" password="******"
Configuration File for keepalived global_defs { router_id mysql-2 } vrrp_instance VI_1 { state
样例中的 StatefulSet 名为mysql,因此这些 pod 分别被命名为mysql-0,mysql-1和mysql-2。默认情况下,它们会按顺序创建,并按逆序销毁。
mysql-2 一.数据库备份与恢复 1. 备份 数据库的备份是指将数据库转换成对应的sql文件。
tar包方式无需安装) 主机名 操作系统 IP地址 餐食 MySQL-1 CentOS 7.4 192.168.1.1 jdk-8u181-linux-x64.tar.gz datax.tar.gz MySQL
IP 端口 用户名/密码 MyCat-Server 192.168.192.157 8066 root/123456 MySQL-1 192.168.192.158 3306 root/itcast MySQL 在各个MySQL数据库实例中创建数据库 MySQL-1 : v_goods MySQL-2 : v_order MySQL-3 : v_log MySQL-4 : v_log 5).
K8s 中通过 StatefulSet 实现有状态服务的管理,其生成的 Pod 编号 (如 mysql-0, mysql-1, mysql-2) 是唯一且重建后不变。