Linux之数据库操作

article/2025/11/4 8:26:08

  一、mysql基本操作

1,连接数据库
mysql -u root -p -h 127.0.0.1
mysql -u root -p -h 192.168.12.56
2,授予远程连接的权限
grant all privileges on *.* to root@"%" identified by "nihao123"
3,修改root用户的密码
先进入mysql的交互式模式
set password = PASSWORD('redhat123');
4,创建mysql用户
create user zijin@"%" identified by "zijin"
5,给予zijin用户查询所有库和所有表的权限
grant select on *.* to zijin@"%" identified by "zijin"
6,查询mysql库中的用户信息
use mysql;
select host,user,password from  user;
7,给予zijin用户创建所有库和表的权限,再给修改权限,再给删除权限
grant create on *.* to zijin@"%" identified by "zijin"
grant update on *.* to zijin@"%" identified by "zijin"
grant delete on *.* to zijin@"%" identified by "zijin"
8,授予mysql权限的语法
mysql使用grant命令对账户进行授权,grant命令常见格式如下
grant 权限 on 数据库.表名 to 账户@主机名            对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名              对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名      对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名      对所有库和所有表授权所有权限
9,移出zijin的创建权限
revoke create on *.* from zijin@"%" identified by 'zijin';
revoke delete on *.* from zijin@"%" identified by 'zijin;
10,数据库备份与恢复
mysqldump -u root -p --all-databases > /tmp/db.sql      #这不是在数据库环境下
可以备份单个数据库
mysqldump -u root -p luffycity > /tmp/luffycity.sql
11,导入数据
第一种:
进入mysql交互模式
source /tmp/luffycity.sql;
第二种:
mysql -u root -p < /tmp/luffycity.sql
第三种:
navicat

 二,mariadb主从复制部署

  1, 准备两台机器

192.168.12.56      #主服务器master(可读可写)
mariadb数据库用户名:root
密码:root1
192.168.12.81      #从服务器slave(可读)
mariadb数据库用户名:root
密码:root2

  2, 配置主数据库

  2.1 修改主数据库配置文件

1,进入配置文件
vim /etc/my.cnf
2,添加配置信息
[mysqld]   # 如果配置文件里面有这一行,就只需要加以下两行配置就可以了
server-id=1
log-bin=qishi2-logbin

  2.2 进入数据库

systemctl start mariadb

  2.3 创建主从复制用户

1,进入数据库
mysql -uroot -p
2,创建用户
create user zijin@'%' identified by 'zijin';

  2.4 给从库账号授权

grant replication slave on *.* to 'zijin'@'%';

  2.5 把主库数据导入从库

1,实现对主数据库锁表只读,防止数据写入,数据复制失败
flush table with read lock;
2,查看并记录主数据库的状态
show master status;
3,导出主数据库的数据为alldb.sql
mysqldump -u root -p --all-databases > /opt/alldb.sql    #这个是在数据库环境外
4,scp /opt/alldb.sql 192.168.12.81:/opt/

  3,配置从数据库

  3.1 修改从数据库的配置文件

1,进入配置文件
vim /etc/my.cnf
2,添加信息
[mysqld]
server-id=5
read-only=true

  3.2 启动数据库

systemctl start mariadb

  3.3 导入主库的数据

1,连接数据库
mysql -u root -p 
2,导入数据
source /opt/alldb.sql

  3.4 配置复制的参数,slave从库连接master主库的配置(最重要的)

在数据库的环境下输入:
change master to master_host='192.168.12.64',
master_user='zijin',
master_password='zijin',
master_log_file='qishi2-logbin.000004',
master_log_pos=467;

  3.5 启动从库的同步开关

start slave    #开启
stop slave #停止

  3.6 查看从库的状态

show slave status;
还可以输show slave status /G;

  3,主库再设置

  3.1 从库数据导入完毕和开启主从同步后,解锁主库

unlock tables;     #在主库下

  3.2验证主从复制情况

在主库上创建数据,查看从库数据同步状态

  3.3 在主库上给zijin用户select权限,并刷新权限表

grant select on *.* to zijin@"%" identified by "zijin";
flush privileges;

  3.4 在从库上登录zijin用户,并试图创建一个库

create database aaaa;ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so 
it cannot execute this statement #说明从库没有新建的权限

  三、redis发布订阅和持久化

  1,redis发布订阅

  1.1基本命令

PUBLISH channel msg将信息 message 发送到指定的频道 channelSUBSCRIBE channel [channel ...]订阅频道,可以同时订阅多个频道UNSUBSCRIBE [channel ...]取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道
PSUBSCRIBE pattern [pattern ...]订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所    有以 it 开头的频道
( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道
( news.it 、 news.global.today 等等),诸如此类 PUNSUBSCRIBE [pattern [pattern ...]]退订指定的规则, 如果没有参数则会退订所有规则 PUBSUB subcommand [argument [argument ...]]查看订阅与发布系统状态 注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,
必须Provider和Consumer同时在线。

  1.2发布订阅案例

发布者
[root@web02 ~]# redis-cli
127.0.0.1:6379> PUBLISH diantai 'jinyewugenglaiwojia'
(integer) 2订阅者1
[root@web02 ~]# redis-cli
127.0.0.1:6380> SUBSCRIBE diantai 
Reading messages... (press Ctrl-C to quit)
1) 'jinyewugenglaiwojia'
2) (integer) 1订阅者2
[root@web02 ~]# redis-cli
127.0.0.1:6381> SUBSCRIBE diantai 
Reading messages... (press Ctrl-C to quit)
1) 'jinyewugenglaiwojia'
2) (integer) 1

  1.3 订阅模糊匹配的频道案例

发布者
[root@web02 ~]# redis-cli
127.0.0.1:6379> PUBLISH wangbaoqiang "jintian zhennanshou "
(integer) 2订阅者1
127.0.0.1:6380> PSUBSCRIBE wang*
Reading messages... (press Ctrl-C to quit)
1) "jintian zhennanshou "
2) (integer) 1订阅者2
127.0.0.1:6381> PSUBSCRIBE wa*
Reading messages... (press Ctrl-C to quit)
1) "jintian zhennanshou "
2) (integer) 1

  2,redis持久化之RDB

  2.1 创建redis配置文件

vim /opt/redis_conf/reids-6379.conf

  2.2 写入信息

port 6379
daemonize yes
dir /data/6379
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
protected-mode yes
dbfilename  dbmp.rdb
save 900 1
save 300 10
save 60 10000

  2.3 进入redis数据库,写入数据,并使用save命令开启rdb持久化

redis-cliset name liujie
set age 18
set sex namsave   # 开启rdb持久化, 也可以不用

  3,redis之AOF持久化

  3.1 修改redis配置文件

1,进入配置文件
vim /opt/redis_conf/redis-6379.con
2,写入配置信息
appendonly yes
appendfsync everysec

  3.2 重启redis服务

pkill reids
redis-server /opt/redis_conf/redis-6379.conf

  3.3 不用重启redis,直接从RDB切换到AOF(因为生产环境中是不允许停止redis)

1,修改redis配置文件
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename  dbmp.rdb
save 900 1                    #rdb机制 每900秒 有1个修改记录
save 300 10                    #每300秒        10个修改记录
save 60  10000                #每60秒内        10000修改记录2,启动redis服务端
redis-server redis.conf3,写入数据
127.0.0.1:6379> set name tiger
OK
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> set addr daxuecheng
OK
127.0.0.1:6379> save
OK4,检查rdb文件是否存在,然后备份rdb文件(这是生成环境中需要做的,以免切换不成功导致数据丢失)5,开启AOF持久化
CONFIG set appendonly yes   # 开启AOF功能
CONFIG SET save ""          # 关闭RDB功能

  四、redis主从同步

  1,准备三个redis配置文件

cd /opt/redis_confredis-6380.conf   # 主数据库master
redis-6381.conf   # 从库slave
redis-6382.conf   # 从库slave

  2,在配置文件写入配置信息,是哪个内容一样,只是端口不一样而已

port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
protected-mode no可以使用这一条命令通过redis-6380.conf生成6381和6382的配置文件
sed "s/6380/6381/g" redis-6380.conf > redis-6381.conf
sed "s/6380/6382/g" redis-6380.conf > redis-6382.conf

  3,在6381和6382文件中加入以下配置,使其成为从数据库

slaveof 127.0.0.1 6380

  4,开启这三个redis服务,确保启动正常,并查看状态

1,首先开启是三个redis服务
redis-server /opt/redis_conf/redis-6380.conf
redis-server /opt/redis_conf/redis-6381.conf
redis-server /opt/redis_conf/redis-6382.conf
2,用三个客户端连接
redis-cli -p 6380 info replication redis-cli -p 6381 info replication redis-cli -p 6382 info replication

  5,验证redis主从复制功能

1,6380写入数据,在6381和6382中查看数据是否同步
2,看是否能在6381和6382中写入数据(正常情况下是不能的)

  6,手动切换主从复制

  也就是当6380进程死掉后,相当于主库没了,此时就需要从6381和6382中选择一个作为主库,完成主从复制切换

  6.1 把最开始的主库6380进程给杀死

kill -9 进程id

  6.2 在6382的redis下执行这条命令(此时我们选择6382为主库)

slaveof no one

  6.2 此时6381为从库,把原来的主库指向改为6382

slaveof no one
slaveof 127.0.0.1 6382

  6.3 可以验证此时的主从复制功能

1,在6382上写入数据,在6381上查看数据(正常情况下是数据同步的)
2,在6381上写数据(正常情况下为报错)

  7,哨兵sentinel

  对于第6步来说,必须要我们手动切换主从配置,其实是不科学的,所以,大佬开发了哨兵sentinel,用哨兵去监控主库,当主库挂掉的时候,哨兵从从库中决策出一个新的主库,剩余的从库就作为新的主库的从库。

  7.1准备三个哨兵配置文件

touch  /opt/redis_conf/redis-26380.conf
touch  /opt/redis_conf/redis-26381.conf
touch  /opt/redis_conf/redis-26382.conf

  7.2修改redis-26380.conf配置文件

port 26380
dir /var/redis/data/
logfile "26380.log"
sentinel monitor qishi2master 127.0.0.1 6380 2
sentinel down-after-milliseconds qishi2master 30000
sentinel parallel-syncs qishi2master 1
sentinel failover-timeout qishi2master 180000
daemonize yes

  7.3再配置另外两个哨兵

sed "s/26380/26381/g" redis-26380.conf > redis-26381.conf
sed "s/26380/26382/g" redis-26380.conf > redis-26382.conf

  7.4启动是三个哨兵

redis-sentinel /opt/redis_conf/redis-26380.conf
redis-sentinel /opt/redis_conf/redis-26381.conf
redis-sentinel /opt/redis_conf/redis-26382.conf

  7.5查看进程

ps -ef | grep redis-sentinel

  7.6可以查看三个哨兵的状态

redis-cli -p 26380 info sentinel
redis-cli -p 26381 info sentinel
redis-cli -p 26382 info sentinel

  7.7测试,把主库干掉

1,查看主库进程id
ps -ef | grep redis
2,杀死主库进程
kill -9 主库进程ID
3,查看6381和6382的状态
redis-cli -p 6381 info replication
redis-cli -p 6381 info replication

   五、redis集群

  1,准备6个配置文件

1,我们把集群的配置文件放在/opt/redis_conf/redis_cluster目录
mkdir /opt/redis_conf/redis_cluster
2,创建配置文件
cd redis_cluster
touch redis-6000.conf redis-6001.conf  redis-6002.conf  redis-6003.conf  redis-6004.conf  redis-6005.conf 

  2,往配置文件中添加配置信息

1,进入redis-6000.conf
vim redis-6000.conf
2,写入如下配置信息
port 6000
daemonize yes
dir "/opt/redis/data"
logfile "/opt/redis/logs/6000.log"
dbfilename "dump-6000.rdb"
cluster-enabled yes   # 开启集群模式
cluster-config-file nodes-6000.conf  # 集群内部的配置文件
cluster-require-full-coverage no  # redis cluster需要16384个slot都正常的时候才能对外提供服务,
换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no
3,配置其他5个配置文件 sed "s/6000/6001/g" redis-6000.conf > redis-6001.conf sed "s/6000/6002/g" redis-6000.conf > redis-6002.conf sed "s/6000/6003/g" redis-6000.conf > redis-6003.conf sed "s/6000/6004/g" redis-6000.conf > redis-6004.conf sed "s/6000/6005/g" redis-6000.conf > redis-6005.conf

  3,启动这6个redis集群节点

redis-server redis-6000.conf
redis-server redis-6001.conf
redis-server redis-6002.conf
redis-server redis-6003.conf
redis-server redis-6004.conf
redis-server redis-6005.conf

2,查看进程
ps -ef | grep redis
现在是无法往节点上添加数据的,因为哈希槽还没分配

  我们需要使用redis-trib.rb去分配集群的哈希槽,但这个脚本需要使用ruby环境去执行,所以我们需要安装ruby解释器

  4,安装ruby解释器

1 下载ruby
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz2 安装ruby
tar -xvf ruby-2.3.1.tar.gz
cd ruby-2.3.1/
./configure --prefix=/opt/ruby/
make && make install3 配置ruby的环境变量
vim /etc/profile
写入如下配置
PATH=$PATH:/opt/ruby/bin
4,读取
source /etc/profile

  5,安装ruby gem包管理工具

1 下载gem包管理工具
wget http://rubygems.org/downloads/redis-3.3.0.gem2 安装
gem install -l redis-3.3.0.gem

  6,开启集群

/opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 
127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005命令说明: --replicas # 表示进行身份授权 1 # 表示每个主节点,只有一个从节点# 集群会自动分配主从关系 60006001、6002为主服务器master 60036004、6005为从服务器slave

  7,可以查看集群状态与槽位

redis-cli -p 6000 cluster info
redis-cli -p 6001 cluster info
redis-cli -p 6002 cluster info
redis-cli -p 6003 cluster info
redis-cli -p 6004 cluster info
redis-cli -p 6005 cluster info

  8,使用命令连接redis集群

redis-cli -p 6000 -c-c 参数表示连接集群

 

转载于:https://www.cnblogs.com/12345huangchun/p/10738570.html


http://chatgpt.dhexx.cn/article/HTgPiwQ9.shtml

相关文章

Linux和数据库

Linux命令:软件测试第一个任务,一般都需要进行环境搭建,一部分环境搭建内容是在服务器上实现的,跟服务器交互(没有图形化页面),需要使用Linux命令 数据库:所有的软件在使用过程中所产生的数据,最终都要存在数据库当中,而测试工作往往会需要去校验数据的正确与否,因此需要学习数…

Linux服务器操作数据库

一、进入mysql数据库 1、使用命令连接进入数据库 mysql -u root -p参数解析&#xff1a; root-是连接数据库的用户 连接成功的截图如下 2、可以查看当前用户有哪些数据库权限 show databases; 3、进入到指定的数据库 use test;参数解析&#xff1a;test-是数据库名称 4、…

SolrCloud介绍和应用

SolrCloud是基于Solr和Zookeeper的分布式搜索方案&#xff0c;是正在开发中的Solr4.0&#xff08;目前还是ALPHA版本,基于lucene4.0&#xff09;的核心组件之一&#xff0c;它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能&#xff1a;1&#xff09;集中…

Solr简介Solr使用及SolrCloud搭建

一、Solr简介 1、Solr是什么&#xff1f; 1.1就是一个war项目 2、自己的项目如何Solr进行交互&#xff1f; 2.1特定的API叫做SolrJ(底层其实就是HttpClient) 3、具备数据持久化功能 3.1Solr中会存储需要进行搜索的数据 3.2把所有的数据都初始化到Solr中. 4、Solr作用&#…

solrcloud导入mysql数据配置

最简单的solr7集群搭建(不需要tomcat) 添加jar (三个节点都要&#xff09; 复制solr解压目录中dist下的solr-dataimporthandler-7.5.0.jar solr-dataimporthandler-extras-7.5.0.jar 复制到WEB-INF/lib下 添加mysql-connection jar包到WEB-INF/lib下&#xff0c;我这里是mysq…

Solr+Zookeeper 搭建搜索集群SolrCloud

目录 一、简介 1、SolrCloud是个什么玩意&#xff1f; 2、Solr是个什么玩意&#xff1f; 3、zookeeper是个什么玩意&#xff1f; 4、实现负载均衡的方式&#xff1a; (Nginx、Redis槽、Zookeeper) 二、SolrCloud的结构 1、物理结构 2、逻辑结构 三、SolrCloud的搭建(3…

solrCloud分布式检索流程

好久没写solr的文章了&#xff0c;刚好需要在公司作个分享&#xff0c;先总结一些先。 引用请声明原文&#xff1a;http://blog.csdn.net/duck_genuine/article/details/17014991 solrCloud分布式检索主要流程如下&#xff1a; 搜索 video&#xff0c;“美女斗秀场” 取按…

solr全文检索技术学习(三)-搭建SolrCloud集群问题总结

什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案&#xff0c;当你需要大规模&#xff0c;容错&#xff0c;分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的&#xff0c;当索引量很大&#xff0c;搜索请…

对SolrCloud集群Collection进行手动二次Sharding

我们已经基于SolrCloud 4.3.1Tomcat 7搭建了搜索服务器集群&#xff0c;一个Collection对应3个节点上的3个分片&#xff08;Shard&#xff09;&#xff0c;同时包含对应分片的副本&#xff08;Replica&#xff09;&#xff0c;此时&#xff0c;该Collection一共有6000万左右Doc…

Solr SolrCloud相关概念

Solr支持服务器的分布式集群部署&#xff0c;即SolrCloud。在SolrCloud中&#xff0c;一个索引可以被分布到不同的服务器&#xff0c;即不同的node&#xff0c;所有的这些node组成一个collection&#xff0c;并且充分考虑了高可靠性和容错的设计。 SolrCloud使用zookeeper来管理…

SolrCloud概述

在Lucene/Solr的SVN trunk中的SolrCloud已经可用, 在即将发布的4.0版本中将正式包含. 目前SolrCloud已经成熟, 可以支持分布式索引和分布式搜索. 下面是我们一个项目采用新的SolrCloud的部署结构图: 看起来是否非常简单? 下面我们看看内部的一些实现细节. SolrCloud功能和架…

solr8.9部署solrcloud

安装solr tar xf solr-8.9.0.tgz cd solr-8.9.0 ./bin/install_solr_service.sh /root/solr-8.8.2.zip -d /data/solr -u solr -n # /root/solr-8.8.2.zip 指定tar包 # -d: 指定solr可写目录&#xff0c;solr数据文件、日志、pid文件、索引会写入到此目录下。默认/var/solr #…

搭建SolrCloud的详细步骤

###一、需求 SolrCloud(solr 云)是Solr提供的分布式搜索方案&#xff0c;当你需要大规模&#xff0c;容错&#xff0c;分布式索引和检索能力时使用 SolrCloud。 当一个系统的索引数据量少的时候是不需要使用SolrCloud的&#xff0c;当索引量很大&#xff0c;搜索请求并发很高&a…

SolrCloud Collection 创建

环境版本: CDH 5.12.0; Solr 4.10.3 CDH搭建SolrCloud集群十分方便,添加服务->solr->选择主机->next即可 在SolrCloud中,跨多个节点的索引分割称为集合(collection),见下图: [root@DXHY-YFEB-01 solr]# pwd /var/lib/solr [root@DXHY-YFEB-01 solr]# mv Invoi…

solrcloud集群搭建

什么是SolrCloud 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案&#xff0c;当你需要大规模&#xff0c;容错&#xff0c;分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的&#xff0c;当索引量很大&#xff0c…

Apache SolrCloud介绍及安装

SolrCloud介绍 在我们应用还很渺小的时候&#xff0c;一台Solr服务器能完全胜任这份工作&#xff0c;随着我们应用慢慢长大&#xff0c;访问也越来越多&#xff0c;一台Solr服务器的弊病也逐渐显现如查询变慢了&#xff0c;机器宕机就无法继续提供服务&#xff0c;于是乎我们引…

solr集群(solrcloud)部署搭建

简介 SolrCloud 旨在提供一个高度可用、容错的环境&#xff0c;用于跨多个服务器分发索引内容和查询请求。它是基于 Solr 和Zookeeper的分布式搜索方案&#xff0c;它的主要思想是使用 Zookeeper作为集群的配置信息中心。它是灵活的分布式搜索和索引&#xff0c;无需主节点来分…

SolrCloud之solr单机搭建使用

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 随着互联网技术的不断迭代更新&#xff0c;分布式技术也越…

SolrCloud 搭建之 zookeeper搭建

系列文章目录 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 随着互联网技术的不断迭代更新&#xff0c;分布式技术也越来越重要&#xff0c;很多人都开启了学习模式&#xff0c;本文就介绍了solr搭建及使用的基础…

solrCloud搭建及演化

系列文章目录 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 solr是一个web项目&#xff0c;上一节我们部署了solr的单机版&#xff0c;实际上solrcloud是多个tomcat的组合&#xff0c;将多个tomcat部署之后&#…