- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Docker部署Mysql集群的实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
单节点数据库的弊病 。
单节点MySQL的性能瓶领颈 。
2016年春节微信红包巨大业务量,数据库承受巨大负载 。
常见MySQL集群方案 。
mysql集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b节点数据库显示没有成功,这就麻烦了,pxc方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication是单向的,不同节点的数据库之间都会开放端口进行通讯,如果从防火墙的这个端口关闭,pxc就不会同步成功,也不会返给你成功了.
Replication 。
PXC(PerconaXtraDBCluster) 。
建议PXC使用PerconaServer(MySQL改进版,性能提升很大) 。
PXC的数据强一致性 。
同步复制,事务在所有集群节点要么同时提交,要么不提交Replication采用异步复制,无法保证数据的一致性 。
PXC集群安装介绍 。
在Docker中安装PXC集群,使用Docker仓库中的PXC官方镜像:https://hub.docker.com/r/percona/percona-xtradb-cluster 。
1、从docker官方仓库中拉下PXC镜像:
dockerpullpercona/percona-xtradb-cluster
或者本地安装 。
dockerload</home/soft/pxc.tar.gz
安装完成:
[root@localhost~]#dockerpullpercona/percona-xtradb-cluster Usingdefaulttag:latest Tryingtopullrepositorydocker.io/percona/percona-xtradb-cluster... latest:Pullingfromdocker.io/percona/percona-xtradb-cluster ff144d3c0ab1:Pullcomplete eafdff1524b5:Pullcomplete c281665399a2:Pullcomplete c27d896755b2:Pullcomplete c43c51f1cccf:Pullcomplete 6eb96f41c54d:Pullcomplete 4966940ec632:Pullcomplete 2bafadcea292:Pullcomplete 3c2c0e21b695:Pullcomplete 52a8c2e9228e:Pullcomplete f3f28eb1ce04:Pullcomplete d301ece75f56:Pullcomplete 3d24904bec3c:Pullcomplete 1053c2982c37:Pullcomplete Digest:sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd Status:Downloadednewerimagefordocker.io/percona/percona-xtradb-cluster:latest [root@localhost~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE docker.io/percona/percona-xtradb-clusterlatest70b3670450ef2monthsago408MB
2、重命名镜像:(名称太长,重命名一下) 。
dockertagpercona/percona-xtradb-cluster:latestpxc
然后原来的镜像就可以删除掉了 。
[root@localhost~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE docker.io/percona/percona-xtradb-clusterlatest70b3670450ef2monthsago408MB pxclatest70b3670450ef2monthsago408MB docker.io/javalatestd23bdf5b1b1b2yearsago643MB [root@localhost~]#dockerrmidocker.io/percona/percona-xtradb-cluster Untagged:docker.io/percona/percona-xtradb-cluster:latest Untagged:docker.io/percona/percona-xtradb-cluster@sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd [root@localhost~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE pxclatest70b3670450ef2monthsago408MB docker.io/javalatestd23bdf5b1b1b2yearsago643MB
3、出于安全考虑,给PXC集群创建Docker内部网络 。
#创建网段 dockernetworkcreate--subnet=172.18.0.0/24net1 #查看网段 dockernetworkinspectnet1 #删除网段 #dockernetworkrmnet1
4、创建Docker卷: 使用Docker时,业务数据应保存在宿主机中,采用目录映射,这样可以使数据与容器独立。但是容器中的PXC无法直接使用映射目录,解决办法是采用Docker卷来映射 。
#创建名称为v1的数据卷,--name可以省略 dockervolumecreate--namev1
查看数据卷 。
dockerinspectv1
结果:
[root@localhost~]#dockerinspectv1 [ { "Driver":"local", "Labels":{}, "Mountpoint":"/var/lib/docker/volumes/v1/_data",#这里是在宿主机的保存位置 "Name":"v1", "Options":{}, "Scope":"local" } ]
删除数据卷 。
dockervolumermv1
创建5个数据卷 。
#创建5个数据卷 dockervolumecreate--namev1 dockervolumecreate--namev2 dockervolumecreate--namev3 dockervolumecreate--namev4 dockervolumecreate--namev5
5、创建5个PXC容器:
#创建5个PXC容器构成集群 #第一个节点 dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-vv1:/var/lib/mysql--name=node1--network=net1--ip172.18.0.2pxc #在第一个节点启动后要等待一段时间,等候mysql启动完成。 #第二个节点 dockerrun-d-p3307:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv2:/var/lib/mysql--name=node2--net=net1--ip172.18.0.3pxc #第三个节点 dockerrun-d-p3308:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv3:/var/lib/mysql--name=node3--net=net1--ip172.18.0.4pxc #第四个节点 dockerrun-d-p3309:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv4:/var/lib/mysql--name=node4--net=net1--ip172.18.0.5pxc #第五个节点 dockerrun-d-p3310:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv5:/var/lib/mysql--name=node5--net=net1--ip172.18.0.6pxc
查看:
[root@localhost~]#dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES f4708ce32209pxc"/entrypoint.sh"AboutaminuteagoUpAboutaminute4567-4568/tcp,0.0.0.0:3309->3306/tcpnode4 bf612f9586bcpxc"/entrypoint.sh"17minutesagoUp17minutes4567-4568/tcp,0.0.0.0:3310->3306/tcpnode5 9fdde5e6becdpxc"/entrypoint.sh"17minutesagoUp17minutes4567-4568/tcp,0.0.0.0:3308->3306/tcpnode3 edd5794175b6pxc"/entrypoint.sh"18minutesagoUp18minutes4567-4568/tcp,0.0.0.0:3307->3306/tcpnode2 33d842de7f42pxc"/entrypoint.sh"21minutesagoUp21minutes0.0.0.0:3306->3306/tcp,4567-4568/tcpnode1
数据库负载均衡的必要性 。
虽然搭建了集群,但是不使用数据库负载均衡,单节点处理所有请求,负载高,性能差 。
将请求均匀地发送给集群中的每一个节点.
所有请求发送给单一节点,其负载过高,性能很低,而其他节点却很空闲。 使用Haproxy做负载均衡,可以将请求均匀地发送给每个节点,单节点负载低,性能好
负载均衡中间件对比 。
负载均衡首先是数据库的集群,加入5个集群,每次请求都是第一个的话,有可能第一个数据库就挂掉了,所以更优的方案是对不同的节点都进行请求,这就需要有中间件进行转发,比较好的中间件有nginx,haproxy等,因nginx支持插件,但是刚刚支持了tcp/ip协议,haproxy是一个老牌的中间转发件。如果要用haproxy的话,可以从官方下载镜像,然后呢对镜像进行配置(自己写好配置文件,因为这个镜像是没有配置文件的,配置好之后再运行镜像的时候进行文件夹的映射,配置文件开放3306(数据库请求,然后根据check心跳检测访问不同的数据库,8888对数据库集群进行监控))。配置文件里面设置用户(用户在数据库进行心跳检测,判断哪个数据库节点是空闲的,然后对空闲的进行访问),还有各种算法(比如轮训),最大连接数,时间等,还有对集群的监控。配置文件写好以后运行这个镜像,镜像运行成功后进入容器启动配置文件。其实haprocy返回的也是一个数据库实例(但是并不存储任何的数据,只是转发请求),这个实例用来check其他节点.
安装Haproxy 。
1、从Docker仓库拉取haproxy镜像:https://hub.docker.com/_/haproxy 。
dockerpullhaproxy
[root@localhost~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE docker.io/haproxylatest11fa4d7ff42711daysago72.2MB
2、创建Haproxy配置文件。供Haproxy容器使用(docker中未生成配置文件,我们需要在宿主机中自己创建配置文件) 配置文件详情参考:https://www.cnblogs.com/wyt007/p/10829184.html 。
#启动容器时使用目录映射技术使容器读取该配置文件 touch/home/soft/haproxy/haproxy.cfg
haproxy.cfg 。
#haproxy.cfg global #工作目录 chroot/usr/local/etc/haproxy #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info log127.0.0.1local5info #守护进程运行 daemon defaults logglobal modehttp #日志格式 optionhttplog #日志中不记录负载均衡的心跳检测记录 optiondontlognull #连接超时(毫秒) timeoutconnect5000 #客户端超时(毫秒) timeoutclient50000 #服务器超时(毫秒) timeoutserver50000 #监控界面 listenadmin_stats #监控界面的访问的IP和端口 bind0.0.0.0:8888 #访问协议 modehttp #URI相对地址 statsuri/dbs #统计报告格式 statsrealmGlobal\statistics #登陆帐户信息 statsauthadmin:abc123456 #数据库负载均衡 listenproxy-mysql #访问的IP和端口 bind0.0.0.0:3306 #网络协议 modetcp #负载均衡算法(轮询算法) #轮询算法:roundrobin #权重算法:static-rr #最少连接算法:leastconn #请求源IP算法:source balanceroundrobin #日志格式 optiontcplog #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测 optionmysql-checkuserhaproxy serverMySQL_1172.18.0.2:3306checkweight1maxconn2000 serverMySQL_2172.18.0.3:3306checkweight1maxconn2000 serverMySQL_3172.18.0.4:3306checkweight1maxconn2000 serverMySQL_4172.18.0.5:3306checkweight1maxconn2000 serverMySQL_5172.18.0.6:3306checkweight1maxconn2000 #使用keepalive检测死链 optiontcpka
3、在数据库集群中创建空密码、无权限用户haproxy,来供Haproxy对MySQL数据库进行心跳检测 。
createuser'haproxy'@'%'identifiedby'';
4、创建Haproxy容器(name=h1的原因是为了高可用) 。
#这里要加--privileged dockerrun-it-d-p4001:8888-p4002:3306-v/home/soft/haproxy:/usr/local/etc/haproxy--nameh1--net=net1--ip172.18.0.7--privilegedhaproxy
5、进入容器 。
dockerexec-ith1bash
6、在容器bash中启动Haproxy 。
haproxy-f/usr/local/etc/haproxy/haproxy.cfg
接下来便可以在浏览器中打开Haproxy监控界面,端口4001,在配置文件中定义有用户名admin,密码abc123456。 我这边访问的是http://192.168.63.144:4001/dbs,并且要使用用户名密码进行登录(小插曲,使用的是Basic登录,我的Chrome不知为何被屏蔽了,我最后用的火狐) 。
这时候我们手动挂掉一个Docker节点,看一下变化(我们会发现已经显示挂掉了) 。
8、Haproxy不存储数据,只转发数据。可以在数据库中建立Haproxy的连接,端口4002,用户名和密码为数据库集群的用户名和密码 。
为什么要采用双机热备 。
单节点Haproxy不具备高可用,必须要有冗余设计 。
双机就是两个请求处理程序,比如两个haproxy,当一个挂掉的时候,另外一个可以顶上。热备我理解就是keepalive。在haproxy容器中安装keepalive.
虚拟IP地址 。
linux系统可以在一个网卡中定义多个IP地址,把这些地址分配给多个应用程序,这些地址就是虚拟IP,Haproxy的双机热备方案最关键的技术就是虚拟IP.
关键就是虚拟ip,定义一个虚拟ip,然后比如两个haproxy分别安装keepalive镜像,因为haproxy是ubuntu系统的,所以安装用apt-get,keepalive是作用是抢占虚拟ip,抢到的就是主服务器,没有抢到的就是备用服务器,然后两个keepalive进行心跳检测(就是创建一个用户到对方那里试探,看是否还活着,mysql的集群之间也是心跳检测),如果挂掉抢占ip。所以在启动keepalive之前首先要编辑好他的配置文件,怎么抢占,权重是什么,虚拟ip是什么,创建的用户交什么。配置完启动完以后可以ping一下看是否正确,然后将虚拟ip映射到局域网的ip 。
利用Keepalived实现双机热备 。
定义虚拟IP 在Docker中启动两个Haproxy容器,每个容器中还需要安装Keepalived程序(以下简称KA) 两个KA会争抢虚拟IP,一个抢到后,另一个没抢到就会等待,抢到的作为主服务器,没抢到的作为备用服务器 两个KA之间会进行心跳检测,如果备用服务器没有受到主服务器的心跳响应,说明主服务器发生故障,那么备用服务器就可以争抢虚拟IP,继续工作 我们向虚拟IP发送数据库请求,一个Haproxy挂掉,可以有另一个接替工作
Нaproxy双机热备方案 。
Docker中创建两个Haproxy,并通过Keepalived抢占Docker内地虚拟IP 。
Docker内的虚拟IP不能被外网,所以需要借助宿主机Keepalived映射成外网可以访问地虚拟IP 。
安装Keepalived 。
1、进入Haproxy容器,安装Keepalived:
$dockerexec-ith1bash apt-getupdate apt-getinstallkeepalived
2、Keepalived配置文件(Keepalived.conf): Keepalived的配置文件是/etc/keepalived/keepalived.conf 。
#vim/etc/keepalived/keepalived.conf vrrp_instanceVI_1{ stateMASTER#Keepalived的身份(MASTER主服务要抢占IP,BACKUP备服务器不会抢占IP)。 interfaceeth0#docker网卡设备,虚拟IP所在 virtual_router_id51#虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。从0~255 priority100#MASTER权重要高于BACKUP数字越大优先级越高 advert_int1#MASTER和BACKUP节点同步检查的时间间隔,单位为秒,主备之间必须一致 authentication{#主从服务器验证方式。主备必须使用相同的密码才能正常通信 auth_typePASS auth_pass123456 } virtual_ipaddress{#虚拟IP。可以设置多个虚拟IP地址,每行一个 172.18.0.201 } }
3、启动Keepalived 。
servicekeepalivedstart
启动成功后,通过ipa可以查看网卡中虚拟IP是否成功,另外可以在宿主机中ping成功虚拟IP172.18.0.201 。
4、可以按照以上步骤,再另外创建一个Haproxy容器,注意映射的宿主机端口不能重复,Haproxy配置一样。然后在容器中安装Keepalived,配置也基本一样(可以修改优先权重)。这样便基本实现了Haproxy双机热备方案 命令如下:
创建Haproxy容器(name=h2的原因是为了高可用) 。
#这里要加--privileged dockerrun-it-d-p4003:8888-p4004:3306-v/home/soft/haproxy:/usr/local/etc/haproxy--nameh2--net=net1--ip172.18.0.8--privilegedhaproxy
进入容器 。
dockerexec-ith2bash
在容器bash中启动Haproxy 。
haproxy-f/usr/local/etc/haproxy/haproxy.cfg
接下来便可以在浏览器中打开Haproxy监控界面,端口4003,在配置文件中定义有用户名admin,密码abc123456。 我这边访问的是http://192.168.63.144:4003/dbs,并且要使用用户名密码进行登录(小插曲,使用的是Basic登录,我的Chrome不知为何被屏蔽了,我最后用的火狐) 。
安装Keepalived:
apt-getupdate apt-getinstallkeepalived
Keepalived配置文件(Keepalived.conf): Keepalived的配置文件是/etc/keepalived/keepalived.conf 。
#vim/etc/keepalived/keepalived.conf vrrp_instanceVI_1{ stateMASTER#Keepalived的身份(MASTER主服务要抢占IP,BACKUP备服务器不会抢占IP)。 interfaceeth0#docker网卡设备,虚拟IP所在 virtual_router_id51#虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。从0~255 priority100#MASTER权重要高于BACKUP数字越大优先级越高 advert_int1#MASTER和BACKUP节点同步检查的时间间隔,单位为秒,主备之间必须一致 authentication{#主从服务器验证方式。主备必须使用相同的密码才能正常通信 auth_typePASS auth_pass123456 } virtual_ipaddress{#虚拟IP。可以设置多个虚拟IP地址,每行一个 172.18.0.201 } }
启动Keepalived 。
servicekeepalivedstart
启动成功后,通过ipa可以查看网卡中虚拟IP是否成功,另外可以在宿主机中ping成功虚拟IP172.18.0.201 。
实现外网访问虚拟IP 。
查看当前局域网IP分配情况:
yuminstallnmap-y nmap-sP192.168.1.0/24
在宿主机中安装Keepalived 。
yuminstallkeepalived
宿主机Keepalived配置如下(/etc/keepalived/keepalived.conf):
vrrp_instanceVI_1{ stateMASTER #这里是宿主机的网卡,可以通过ipa查看当前自己电脑上用的网卡名是哪个 interfaceens33 virtual_router_id100 priority100 advert_int1 authentication{ auth_typePASS auth_pass1111 } virtual_ipaddress{ #这里是指定的一个宿主机上的虚拟ip,一定要和宿主机网卡在同一个网段, #我的宿主机网卡ip是192.168.63.144,所以指定虚拟ip是160 192.168.63.160 } } #接受监听数据来源的端口,网页入口使用 virtual_server192.168.63.1608888{ delay_loop3 lb_algorr lb_kindNAT persistence_timeout50 protocolTCP #把接受到的数据转发给docker服务的网段及端口,由于是发给docker服务,所以和docker服务数据要一致 real_server172.18.0.2018888{ weight1 } } #接受数据库数据端口,宿主机数据库端口是3306,所以这里也要和宿主机数据接受端口一致 virtual_server192.168.63.1603306{ delay_loop3 lb_algorr lb_kindNAT persistence_timeout50 protocolTCP #同理转发数据库给服务的端口和ip要求和docker服务中的数据一致 real_server172.18.0.2013306{ weight1 } }
启动Keepalived服务 。
servicekeepalivedstart #servicekeepalivedstatus #servicekeepalivedstop
之后其他电脑便可以通过虚拟IP192.168.63.160的8888和3306端口来访问宿主机Docker中的172.18.0.201的相应端口.
暂停PXC集群的办法 。
vi/etc/sysctl.conf #文件中添加net.ipv4.ip_forward=1这个配置 systemctlrestartnetwork
然后把虚拟机挂起 。
热备份数据 。
冷备份 。
冷备份是关闭数据库时候的备份方式,通常做法是拷贝数据文件 是简单安全的一种备份方式,不能在数据库运行时备份。 大型网站无法做到关闭业务备份数据,所以冷备份不是最佳选择热备份 。
热备份是在系统运行状态下备份数据 。
MySQL常见的热备份有LVM和XtraBackup两种方案 。
LVM:linux的分区备份命令,可以备份任何数据库;但是会对数据库加锁,只能读取;而且命令复杂 XtraBackup:不需要锁表,而且免费XtraBackup 。
XtraBackup是一款基于InnoDB的在线热备工具,具有开源免费,支持在线热备,占用磁盘空间小,能够非常快速地备份与恢复mysql数据库 。
备份过程中不锁表,快速可靠 备份过程中不会打断正在执行地事务 备份数据经过压缩,占用磁盘空间小全量备份和增量备份 。
全量备份:备份全部数据。备份过程时间长,占用空间大。第一次备份要使用全量备份 增量备份:只备份变化的那部分数据。备份的时间短,占用空间小。第二次以后使用增量备份PXC全量备份 。
备份要在某个PXC节点的容器内进行,但应该把备份数据保存到宿主机内。所以采用目录映射技术。先新建Docker卷:
dockervolumecreatebackup
挑选一个PXC节点node1,将其容器停止并删除,然后重新创建一个增加了backup目录映射的node1容器 。
dockerstopnode1 dockerrmnode1#数据库数据保存在Docker卷v1中,不会丢失 #参数改变: #1.-eCLUSTER_JOIN=node2;原来其他节点是通过node1加入集群的,现在node1重新创建,需要选择一个其他节点加入集群 #2.-vbackup:/data;将Docker卷backup映射到容器的/data目录 dockerrun-d-uroot-p3306:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node2-vv1:/var/lib/mysql-vbackup:/data--network=net1--ip172.18.0.2--name=node1pxc
在node1容器中安装 。
percona-xtrabackup-24
。
dockerexec-itnode1bash apt-getupdate apt-getinstallpercona-xtrabackup-24
之后便可以执行如下命令进行全量备份,备份后的数据会保存在 。
/data/backup/full目录下:
。
mkdir/data/backup mkdir/data/backup/full #不建议,已过时innobackupex--backup-uroot-pabc123456--target-dir=/data/backup/full xtrabackup--backup-uroot-pabc123456--target-dir=/data/backup/full
官方文档已经不推荐使用 。
innobackupex,而推荐使用
xtrabackup命令
。
PXC全量还原 。
数据库可以热备份,但是不能热还原,否则会造成业务数据和还原数据的冲突.
对于PXC集群为了避免还原过程中各节点数据同步冲突的问题,我们要先解散原来的集群,删除节点。然后新建节点空白数据库,执行还原,最后再建立起其他集群节点.
还原前还要将热备份保存的未提交的事务回滚,还原之后重启MySQL 。
停止并删除PXC集群所有节点 。
dockerstopnode1node2node3node4node5 dockerrmnode1node2node3node4node5 dockervolumermv1v2v3v4v5
按照之前的步骤重新创建node1容器,并进入容器,执行冷还原 。
#创建卷 dockervolumecreatev1 #创建容器 dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-vv1:/var/lib/mysql-vbackup:/data--name=node1--network=net1--ip172.18.0.2pxc #以root身份进入容器 dockerexec-it-urootnode1bash #删除数据 rm-rf/var/lib/mysql/* #准备阶段 xtrabackup--prepare--target-dir=/data/backup/full/ #执行冷还原 xtrabackup--copy-back--target-dir=/data/backup/full/ #更改还原后的数据库文件属主 chown-Rmysql:mysql/var/lib/mysql #退出容器后,重启容器 dockerstopnode1 dockerstartnode1
到此这篇关于Docker部署Mysql集群的实现的文章就介绍到这了,更多相关Docker部署Mysql集群内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://www.cnblogs.com/wanglei957/p/11819547.html 。
最后此篇关于Docker部署Mysql集群的实现的文章就讲到这里了,如果你想了解更多关于Docker部署Mysql集群的实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
目前我正在构建相当大的网络系统,我需要强大的 SQL 数据库解决方案。我选择 Mysql 而不是 Postgres,因为一些任务需要只读(MyISAM 引擎)而其他任务需要大量写入(InnoDB)。
我在 mysql 中使用如下命令。当它显示表格数据时,它被格式化为一个非常干净的表格,间距均匀且 |作为列分隔符。 SELECT * FROM TABLE_NAME; 当我从 CLI 运行命令时,如下
我知道这个问题之前已经被问过好几次了,我已经解决了很多问题,但到目前为止没有任何效果。 MySQL 试图将自身安装到的目录 (usr/local/mysql) 肯定有问题。关于我的错误的奇怪之处在于我
以下是我的 SQL 数据结构,我正在尝试如下两个查询: Select Wrk_ID, Wrk_LastName, Skill_Desc from Worker, Skill where
我们有一个本地 mysql 服务器(不在公共(public)域上),并希望将该服务器复制到我们拥有的 google 云 sql 实例。我的问题是:1.这可能吗?2.我们的本地服务器只能在本地网络上访问
我有一个表(test_table),其中一些字段值(例如字段 A、B 和 C)是从外部应用程序插入的,还有一个字段(字段 D),我想从现有表(store_table)插入其值,但在插入前者(A、B 和
我想创建一个 AWS RDS 实例,然后使用 terraform 管理数据库用户。因此,首先,我创建了一个 RDS 实例,然后使用创建的 RDS 实例初始化 mysql 提供程序,以进一步将其用于用户
当用户在我的网站上注册时,他们会在我的一个数据库中创建自己的表格。该表存储用户发布的所有帖子。我还想做的是也为他们生成自己的 MySql 用户——该用户仅有权从他们的表中读取、写入和删除。 创建它应该
我有一个关于 ColdFusion 和 Mysql 的问题。我有两个表:PRODUCT 和 PRODUCT_CAT。我想列出包含一些标记为:IS_EXTRANET=1 的特殊产品的类别。所以我写了这个
我想获取 recipes_id 列的值,以获取包含 ingredient_id 的 2,17 和 26 条目的值。 假设 ingredient_id 2 丢失则不获取记录。 我已经尝试过 IN 运算符
在 Ubuntu 中,我通常安装两者,但 MySQL 的客户端和服务器之间有什么区别。 作为奖励,当一个新语句提到它需要 MySQL 5.x 时,它是指客户端、服务器还是两者兼而有之。例如这个链接ht
我重新访问了我的数据库并注意到我有一些 INT 类型的主键。 这还不够独特,所以我想我会有一个指导。 我来自微软 sql 背景,在 ssms 中你可以 选择类型为“uniqeidentifier”并自
我的系统上有 MySQL,我正在尝试确定它是 Oracle MySQL 还是 MySQL。 Oracle MySQL 有区别吗: http://www.oracle.com/us/products/m
我是在生产 MySQL 中运行的应用程序的新维护者。之前的维护者已经离开,留下的文档很少,而且联系不上了。 我面临的问题是执行以下请求大约需要 10 秒: SELECT COUNT(*) FROM `
我有两个位于不同机器上的 MySQL 数据库。我想自动将数据从一台服务器传输到另一台服务器。比方说,我希望每天早上 4:00 进行数据传输。 可以吗?是否有任何 MySQL 内置功能可以让我们做到这一
有什么方法可以使用 jdbc 查询位于 mysql 根目录之外的目录中的 mysql 表,还是必须将它们移动到 mysql 根目录内的数据库文件夹中?我在 Google 上搜索时没有找到任何东西。 最
我在 mysql 数据库中有两个表。成员和 ClassNumbers。两个表都有一个付费年份字段,都有一个代码字段。我想用代码数字表中的值更新成员表中的付费年份,其中成员中的代码与 ClassNumb
情况:我有 2 台服务器,其中一台当前托管一个实时 WordPress 站点,我希望能够将该站点转移到另一台服务器,以防第一台服务器出现故障。传输源文件很容易;传输数据库是我需要弄清楚如何做的。两台服
Phpmyadmin 有一个功能是“复制数据库到”..有没有mysql查询来写这个函数?类似于将 db A 复制到新的 db B。 最佳答案 首先创建复制数据库: CREATE DATABASE du
我有一个使用 mySQL 作为后端的库存软件。我已经在我的计算机上对其进行了测试,并且运行良好。 当我在计算机上安装我的软件时,我必须执行以下步骤: 安装 mySQL 服务器 将用户名指定为“root
我是一名优秀的程序员,十分优秀!